Differenz berechnen

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

  • #31
    Wie sieht denn dein aktueller sauber eingerückter code aus?
    Welche Symptome treten auf?

    Kommentar


    • #32
      Guten Abend,


      Zur Zeit, zwecks Testausgaben, etwas verkürzt schaut er folgendermassen aus:

      PHP-Code:
      if (mysql_num_rows($result)) {
          while (
      $row mysql_fetch_array($result)) {
              
      $neu $row['uid'];
              if (
      $alt != $neu) {        // Gruppenwechsel ? -- _1_
                  
      if ($alt != '') {     //Nicht beim ersten Durchgang -- _2_
                      
      echo "".$row['un'].": ";
                      for(
      $i0$i<= $zeit$i++) {
                          echo 
      "".$min[$i]." => ";
                          if (
      $dif[$i] <= "1500") {
                              echo 
      "<font color=\"red\"><B>".$dif[$i]."</B></font>, ";
                             } else {
                              echo 
      "".$dif[$i].", "
                          }
                        }    
      // for
                      
      echo "<BR />";
                  }    
      // alt =! '' -- _3_
                  
      $min = array();        // Array minuten leeren
                  
      $dif = array();        // Array diff leeren
                  
      $alt $neu;        // Gruppe wechseln
              
      }    // alt != neu -- _4_ 
              
      $min[] = $row['minuten'];    // Daten minuten zwischenspeichern
              
      $dif[] = $row['diff'];    // Daten diff zwischenspeichern
          
      }    // while -- _5_
          
      echo "".$row['un'].": ";
          for(
      $i0$i<= $zeit$i++) {
              echo 
      "".$min[$i]." => ";
              if (
      $dif[$i] <= "1500") {
                  echo 
      "<font color=\"red\"><B>".$dif[$i]."</B></font>, ";
                 } else {
                  echo 
      "".$dif[$i].", "
              }
          }    
      // for
          
      echo "<BR />";
      } else {    
      // num_rows
          
      echo "<b>Keine Einträge vorhanden</b>\n";

      Frage ich mit diesem Code ab, erzeugt die Ausgabe
      Code:
      UserName1: 265968 => 4926, 267966 => 1998, 270191 => 2225, 273822 => 3631, 
      UserName2: 386721 => 6892, 392710 => 5989, 396661 => 3951, 402783 => 6122, 
      UserName3: 670371 => 5633, 675121 => 4750, 681560 => 6439, 689021 => 7461, 
      UserName4: 196079 => 2322, 198153 => 2074, 200534 => 2381, 203601 => 3067, 
      ....
      Daran falsch ist das bereits beschriebene, die Zahlen gehören nicht zum links stehenden User sondern zu dem davor (also drüber), UserName0 fehlt hier.


      Setze ich nun die Zweite Ausgabe eine If-Anweisung höher (also unmittelbar vor oder nach 'Daten XY zwischenspeichern'), erhalte ich folgende Ausgabe:
      Code:
      UserName0: 265968 => 4926, => , => , => , 
      UserName0: 265968 => 4926, 267966 => 1998, => , => , 
      UserName0: 265968 => 4926, 267966 => 1998, 270191 => 2225, => , 
      UserName0: 265968 => 4926, 267966 => 1998, 270191 => 2225, 273822 => 3631, 
      UserName1: 265968 => 4926, 267966 => 1998, 270191 => 2225, 273822 => 3631, 
      UserName1: 386721 => 6892, => , => , => , 
      UserName1: 386721 => 6892, 392710 => 5989, => , => , 
      UserName1: 386721 => 6892, 392710 => 5989, 396661 => 3951, => , 
      UserName1: 386721 => 6892, 392710 => 5989, 396661 => 3951, 402783 => 6122, 
      UserName2: 386721 => 6892, 392710 => 5989, 396661 => 3951, 402783 => 6122, 
      UserName2: 670371 => 5633, => , => , => , 
      ...
      Was da dran falsch ist sieht man direkt. Die Auflistung so untereinander mit immer dem nächsten Monat dazu schaut eigentlich optisch gar nicht mal so schlecht aus - will ich aber nicht *g* - und zudem enthält jeder UserName zuerst einmal die kompletten Daten vom VorgängerName.


      Setze ich die Zweite Ausgabe nun noch eine Anweisung höher (also unmittelbar nach 'Array leeren / Gruppe wechseln') so erhalte ich folgende Ausgabe:
      Code:
      UserName0: => , => , => , => , 
      UserName1: 265968 => 4926, 267966 => 1998, 270191 => 2225, 273822 => 3631, 
      UserName1: => , => , => , => , 
      UserName2: 386721 => 6892, 392710 => 5989, 396661 => 3951, 402783 => 6122, 
      UserName2: => , => , => , => , 
      UserName3: 670371 => 5633, 675121 => 4750, 681560 => 6439, 689021 => 7461, 
      UserName3: => , => , => , => , 
      ....
      Auch schnell erkennbar was daran falsch ist.


      So.., setze ich nun die Zweite Ausgabe wieder an ihren Ausgangspunkt und verändere die Position der Ersten Ausgabe kommen auch versch. Möglichkeiten - ich glaube ich würde dann die Maximallänge des Beitrags erreichen und soviel will ich niemandem zumuten.

      Entweder ich bin einfach schlicht weg zu doof dafür, ich seh' den Wald vor lauter Bäumen nicht oder irgendwie tief drin schlummert ein tollwütiger Hund. What ever.. =/

      Kommentar


      • #33
        PHP-Code:
        if ($alt != '') {     //Nicht beim ersten Durchgang -- _2_
                        
        echo "".$row['un'].": "
        Du hast den Fehler doch sogar selbst kommentiert. Beim ersten Gruppenwechsel soll keine Ausgabe des Usernamen Stattfinden. Warum nicht???


        So.., setze ich nun die Zweite Ausgabe wieder an ihren Ausgangspunkt und verändere die Position der Ersten Ausgabe kommen auch versch. Möglichkeiten - ich glaube ich würde dann die Maximallänge des Beitrags erreichen und soviel will ich niemandem zumuten.
        PS: Deine Ansätze sind übrigens pures Trial&Error. Das hat nichts mit der Logik zu tun, die man zum Entwickeln benötigt!

        Kommentar


        • #34
          Könnte ich, so würde ich Dich/Euch in 'Gott' umbenennen.

          Lösung (Auszug der Problemstelle):
          PHP-Code:
          ....
              while (
          $row mysql_fetch_array($result)) {
                  
          $neu $row['user'];
                  if (
          $alt != $neu) {        // Gruppenwechsel ?
                     
          if ($alt != '') {     //Nicht beim ersten Durchgang
                          
          for($i0$i<= $zeit$i++) {
                              echo 
          "".$min[$i]." => ";
                              if (
          $dif[$i] <= "1500") {
                                  echo 
          "<font color=\"red\"><B>".$dif[$i]."</B></font>, ";
                                 } else {
                                  echo 
          "".$dif[$i].", "
                              }
                            }    
          // for
                          
          echo "<BR />";

                      } 
          // alt =! ''
                  
          echo "".$row['un'].": ";
                      
          $min = array();        // Array minuten leeren
                      
          $dif = array();        // Array diff leeren
                      
          $alt $neu;        // Gruppe wechseln
                  
          }    // alt != neu
                  
          $min[] = $row['minuten'];    // Daten minuten zwischenspeichern
                  
          $dif[] = $row['diff'];    // Daten diff zwischenspeichern

              
          }    // while
          ... 
          Nun kann ich endlich schlafen gehn! ;D

          Kommentar

          Lädt...
          X