php berechnung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • php berechnung

    hy, ich habe bis jetzt ein array was so aussieht

    [0] id_user = 1
    pkt = 1
    [1] id_user = 2
    pkt = 2
    [3] id_user = 3
    pkt = 3
    [4] id_user = 1
    pkt = 3
    [5] id_user = 2
    pkt = 1
    [6] id_user = 3
    pkt = 2
    ........
    jetzt zu meiner frage.

    ich wollte gern berechnen lassen wieviel pkt der user 1,2 und 3 hat und dieses in das vorhandene array einfügen

    id_user und punkte kommen in jedem array nur 1 mal vor

  • #2
    Hallo,

    Zitat von bufffuchs Beitrag anzeigen
    hy, ich habe bis jetzt ein array was so aussieht
    Ist da jeweils ein Zeilenumbruch dawischen?

    Zitat von bufffuchs Beitrag anzeigen
    ich wollte gern berechnen lassen wieviel pkt der user 1,2 und 3
    Zusammengenommen oder einzeln?

    Zitat von bufffuchs Beitrag anzeigen
    und dieses in das vorhandene array einfügen
    Welches ist das vorhandene? Das gepostete? Da stehen die doch schon drin.

    Wie du siehst, ist eine genaue und nachvollziehbare Beschreibung des Problems/Anliegens der Hauptfaktor für eine schnelle und hilfreiche Antwort.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      upps
      zum besseren verständnis hier mal der link wo das array auftaucht
      Formel

      die punkte soll er anhand der fahrer_id zusammen zählen, also anzeigen wieviel punkte jede id bis jetzt hat und wieder ins array als neuen row einfügen.

      hier mal der php code
      PHP-Code:
      $sql=mysql_query("SELECT
                                  e.h_pkt,
                                  pkt.saison,
                                  e.idf1_strecke,
                                  f.idf1_fahrer,
                                  f.name as fahrer,
                                  e.platz,
                                  pkt.punkte as gesamt,
                                  st.name as strecke
                                  from 
      $ergebnis as e
                                  Left join 
      $fahrer as f on f.idf1_fahrer = e.idf1_fahrer
                                  left join 
      $punkte as pkt on pkt.platz = e.platz
                                  left join 
      $strecke as st on st.idf1_strecke = e.idf1_strecke
                                  where e.jahr = 2010
                                  order by idf1_strecke, e.platz ASC

                                  "
      );

      echo 
      mysql_error();
      $wm_fahrer = array();
      while(
      $row=mysql_fetch_assoc($sql)){
          
      $row['fahrer_id'] = $row['idf1_fahrer'];
          
      $row['punkte'] = $row['gesamt'];

          
          
      array_push($wm_fahrer,$row);


      Kommentar


      • #4
        Zitat von bufffuchs Beitrag anzeigen
        zum besseren verständnis hier mal der link wo das array auftaucht
        Das Favicon macht mich ganz kirre. Schlimm, echt nervig... SCNR

        Meinst du zufällig sowas wie Gruppenwechsel? Kannst du mal an einem Beispiel erläutern, was passieren soll? Entweder ist es so leicht, dass ich nicht verstehe, warum du Hilfe brauchst oder ich hab es immer noch nicht ganz verstanden, was du jetzt meinst.

        Wenn du von neuer Row sprichst, meinst du damit nur das Array oder soll die auch in die DB?

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          favi fetzt
          im i.e ist es nicht da
          also.
          zur zeit sieht das array ja so aus
          ....
          [2] => Array(
          [h_pkt] => 1
          [saison] => 2010
          [idf1_strecke] => 1
          [idf1_fahrer] => 2
          [fahrer] => Lewis Hamilton
          [platz] => 3
          [gesamt] => 15
          [strecke] => Bahrain GP
          [fahrer_id] => 2
          [punkte] => 15
          ...

          jetzt soll er es so berechnen das
          in dem array unten dran steht [gesamt] => bsp. 34
          erechnet aus dem gesamten array anhand der fahrer_id, was aus der db kommt
          zb:
          [2] => Array(
          [h_pkt] => 1
          [saison] => 2010
          [idf1_strecke] => 1
          [idf1_fahrer] => 2
          [fahrer] => Lewis Hamilton
          [platz] => 3
          [gesamt] => 15
          [strecke] => Bahrain GP
          [fahrer_id] => 2
          [punkte] => 15
          [gesamt] => 34
          ...

          Kommentar


          • #6
            Den Key gesamt gibt es schon. Das ist aber was anderes, oder? Nennen wir das was du meinst mal gesamt2:

            PHP-Code:
            <?php
                
            foreach ($array as $k1 => $v1) {
                    foreach (
            $array as $k2 => $v2) {
                        if (
            $v1["idf1_fahrer"] == $v2["idf1_fahrer"]) {
                            if (isset(
            $v1["gesamt2"])) {
                                
            $v1["gesamt2"] += $v2["punkte"];
                            }
                            else {
                                
            $v1["gesamt2"] = $v2["punkte"];
                            }
                        }
                    }
                }
            ?>
            Zuletzt geändert von AmicaNoctis; 05.05.2010, 17:38. Grund: Code korrigiert
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              also entweder icke bin blöd oder es geht nichts
              habe den vode jetzt an der stelle eingfügt

              PHP-Code:
              $sql=mysql_query("SELECT
                                          e.h_pkt,
                                          pkt.saison,
                                          e.idf1_strecke,
                                          f.idf1_fahrer,
                                          f.name as fahrer,
                                          e.platz,
                                          pkt.punkte as gesamt,
                                          st.name as strecke
                                          from 
              $ergebnis as e
                                          Left join 
              $fahrer as f on f.idf1_fahrer = e.idf1_fahrer
                                          left join 
              $punkte as pkt on pkt.platz = e.platz
                                          left join 
              $strecke as st on st.idf1_strecke = e.idf1_strecke
                                          where e.jahr = 2010
                                          order by idf1_strecke, e.platz ASC

                                          "
              );

              echo 
              mysql_error();
              $wm_fahrer = array();
              while(
              $row=mysql_fetch_assoc($sql)){
                  
              $row['fahrer_id'] = $row['idf1_fahrer'];
                  
              $row['punkte'] = $row['gesamt'];
                  foreach (
              $wm_fahrer as $k => $v) {
                      if (isset(
              $v["gesamt2"])) {
                          
              $v["gesamt2"] += $v["punkte"];
                      }
                      else {
                          
              $v["gesamt2"] = $v["punkte"];
                      }
                  }

                  
              array_push($wm_fahrer,$row);


                  

              wenn ich jetzt das ausgeben lasse
              PHP-Code:
                      echo "Das Element " $k " enthält den Wert: " $v "<br>"
              kommt
              Das Element 38 enthält den Wert: Array

              Kommentar


              • #8
                Das Array über das du läufst, wird doch in deiner while-Schleife gerade erst erzeugt, das bringt so gar nichts. Am einfachsten in deinen Code zu integrieren wäre es, wenn du das komplett nach deiner while-Schleife machst und $array durch $wm_fahrer ersetzt, aber alles andere so lässt.

                Kann es sein, dass du meine erste Version genommen hast? Ich hatte es 3 Minuten später nochmal korrigiert.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  stimmt habe ich genommen
                  habe es jetzt mal hinter die while schleife gesetzt und die ausgabe mit echo wieder gemacht

                  PHP-Code:
                  $sql=mysql_query("SELECT
                                              e.h_pkt,
                                              pkt.saison,
                                              e.idf1_strecke,
                                              f.idf1_fahrer,
                                              f.name as fahrer,
                                              e.platz,
                                              pkt.punkte as gesamt,
                                              st.name as strecke
                                              from 
                  $ergebnis as e
                                              Left join 
                  $fahrer as f on f.idf1_fahrer = e.idf1_fahrer
                                              left join 
                  $punkte as pkt on pkt.platz = e.platz
                                              left join 
                  $strecke as st on st.idf1_strecke = e.idf1_strecke
                                              where e.jahr = 2010
                                              order by idf1_strecke, e.platz ASC

                                              "
                  );

                  echo 
                  mysql_error();
                  $wm_fahrer = array();
                  while(
                  $row=mysql_fetch_assoc($sql)){
                      
                  $row['fahrer_id'] = $row['idf1_fahrer'];
                      
                  $row['punkte'] = $row['gesamt'];



                      
                  array_push($wm_fahrer,$row);

                  }
                  foreach (
                  $wm_fahrer as $k1 => $v1) {
                      foreach (
                  $wm_fahrer as $k2 => $v2) {
                          if (
                  $v1["idf1_fahrer"] == $v2["idf1_fahrer"]) {
                              if (isset(
                  $v1["gesamt2"])) {
                                  
                  $v1["gesamt2"] += $v2["punkte"];
                              }
                              else {
                                  
                  $v1["gesamt2"] = $v2["punkte"];
                              }
                          }
                      }
                  }
                  $smarty->assign('date',$date);//postvar an smarty übergeben
                  $smarty->assign('wm_fahrer',$wm_fahrer);

                  echo 
                  "Das Element " $k1 " enthält den Wert: " $v1 "<br>"
                  kommt das selbe
                  FormelDas Element 39 enthält den Wert: Array

                  Kommentar


                  • #10
                    Na ist doch aber weithin bekannt, dass man Arrays nicht mit echo ausgeben kann. Warum nimmst du nicht print_r, um zu sehen, was drin steht?
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      habs jetzt so

                      PHP-Code:
                      $wm_fahrer = array();
                      while(
                      $row=mysql_fetch_assoc($sql)){
                          
                      $row['fahrer_id'] = $row['idf1_fahrer'];
                          
                      $row['punkte'] = $row['gesamt'];
                          
                      array_push($wm_fahrer,$row);

                      }
                      foreach (
                      $wm_fahrer as $k1 => $v1) {
                          foreach (
                      $wm_fahrer as $k2 => $v2) {
                              if (
                      $v1["idf1_fahrer"] == $v2["idf1_fahrer"]) {
                                  if (isset(
                      $v1["gesamt2"])) {
                                      
                      $v1["gesamt2"] += $v2["punkte"];
                                  }
                                  else {
                                      
                      $v1["gesamt2"] = $v2["punkte"];
                                  }
                              }
                          }
                      print_r"Das Element " $k1 " enthält den Wert: " $v1["gesamt2"] . "<br>");
                      $smarty->assign('k1',$v1["gesamt2"]);
                      }

                      $smarty->assign('date',$date);//postvar an smarty übergeben
                      $smarty->assign('wm_fahrer',$wm_fahrer); 
                      geht also
                      danke dir.

                      jetzt habe ich noch das problem, wie bekomme ich die werte in meine tpl.

                      ind der tpl sieht es ja so aus zur zeit

                      PHP-Code:
                      {foreach from=$wm_fahrer item='fa'}
                          <
                      tr>
                              <
                      td>{$fa.fahrer}</td>
                          </
                      tr>
                      {/foreach} 
                      wie bekomm ich jetzt zu dem fahrer die dazugehörige gesamtpunktzahl ?

                      ich weiss, fragen über fragen

                      Kommentar

                      Lädt...
                      X