Ankündigung

Einklappen
Keine Ankündigung bisher.

Sortierung

Einklappen

Neue Werbung 2019

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

  • Sortierung

    Nun habe ich folgendes Problem:
    Ich möchte nach der Spalte 3 sortieren (der ist an sich im $handle leer, aber bekommt Daten von $handle2, siehe code).
    Es passiert leider gar nichts, er sortiert nicht. Sieht jemand warum??

    PHP-Code:
    function compare$a$b ) {
        return 
    $a[3] - $b[3]; //sortieren nach Spalte 3
            
    }
            
         function 
    time2Seconds($time) {
        
    $sTime explode(':'$time);
        return 
    $sTime[2] + ($sTime[1] * 60) + ($sTime[0] * 3600);
                    }
        
    $handle fopen("data.csv""r");
        while ((
    $data fgetcsv($handle1000",")) !== FALSE
            
              {
            
    $rows[] = $data;
        }
                    
    fclose($handle);

     
    $handle2 fopen("data2.csv""r");
     while ((
    $data2 fgetcsv($handle21000",")) !== FALSE
            
              {
            
    $rows2[] = $data2;
        }
                    
    fclose($handle2);
          
                 
    usort$rows"compare" );  //funktioniert, wenn ich nach Spalte 1 oder 2 sortiere, nicht aber nach Spalte 3 (Spalte 3 ist in $handle leer, bekommt aber Daten von $handle2)

    echo "<table>";

        foreach (
    $rows as $key) {

                       foreach (
    $rows2 as $key2) {
                            if (
    $key[0] == $key2[1]) {
                                                 
                                 
    $key[2]=$key2[4]; 
                                 
    $key[3]= time2Seconds($key2[3]) - $key[1]; 
                                 
       
    //   usort( $rows, "compare" ); //funktiert nicht
     
    echo "<tr> 
        <td>"
    .$key[0]." ".$key[1]."</td> <td>".$key[3]."</td><td>".$key[4]."</td> </tr>";
            }
        echo 
    "</table>";


  • #2
    Hi,

    korrigiere bitte erstmal die Syntaxfehler in deinem code (z.B. hier:

    ...echo "<tr>
    <td>".$key[0]." ".$key[1]."</td> <td>".$key[3]."</td><td>".$key[4]."</td> </tr>
    }
    echo "</table>";...
    Dann rücke deinen Code vernünftig ein und dann debugge korrekt. Was hat deine Compare funktion mit sortieren zu tun und wie sortierst du nach spalte 1 und 2? Wenn du usort verwendest...was steht in $rows drin (ausgeben lassen)? Geh die einzelnen Werte durch und lass Sie Dir ausgeben + check nochmal die Doku zu usort und sort.
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Bei keinem deiner Quellcodes sieht man, dass du dich daran mal hältst:

      Richtig debuggen

      1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
      2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
      3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
      4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
      5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
      6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
      7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
      8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
      9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

      Du lässt dir lieber alles von uns reparieren, das kann doch nicht sein!
      Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

      Kommentar

      Lädt...
      X