Mark: PHP suchen und sortieren

Hallo,

habe da ein problem, un zwar möchte ich mein suchergebnis sortiert ausgeben.

hier mein script:

$f=fopen("../daten/datei.csv","r"); $suche="$monat/$jahr"; $groesse=filesize("../daten/datei.csv"); while(!feof($f)) { $datensatz=fgetcsv($f,$groesse,";"); if($datensatz[3]==$suche) {

echo "$datensatz[0]<br>$datensatz[8]<br>$datensatz[6]<br>$datensatz[4]<br>$datensatz[9]<br>$datensatz[7]<br>$datensatz[10]<br>**********<br><br>\n";

} } fclose($f);

wie mach ich das, dass jetzt nach datensatz[0] sortiert ausgegeben wird?

hoffe es kann mir jemand helfen

cu, mark

  1. Hi,

    wie mach ich das, dass jetzt nach datensatz[0] sortiert ausgegeben wird?

    indem Du Deine Datensätze in ein mehrdimensionales array schreibst, dieses dann sortierst [1] und dann das Ganze erst mit foreach [2] ausgibst.

    [1] http://www.php.net/manual/de/function.sort.php
    [2] http://www.php.net/manual/de/control-structures.foreach.php

    ciao
    romy

    --
    DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
    ->Alles ist gut wenn es aus Schokolade ist
    1. Hi,

      wie mach ich das, dass jetzt nach datensatz[0] sortiert ausgegeben wird?
      indem Du Deine Datensätze in ein mehrdimensionales array ....

      und wie werden die Dated in ein "Mehrdimensionalem Array" geschrieben?
      ...ich hab da irgendwie den Faden verloren,wo/wie sollte es in meinem vorhandenem Script eingebunden werden?

      THX, Mark

      1. Hi Mark,

        $f=fopen("../daten/datei.csv","r");
        $suche="$monat/$jahr";
        $groesse=filesize("../daten/datei.csv");
        $testarray = array();
        while(!feof($f))
        {
         $datensatz=fgetcsv($f,$groesse,";");
         if($datensatz[3]==$suche)
         {

        $testarray( $datensatz[0] => "$datensatz[0]<br>$datensatz[8]<br>$datensatz[6]<br>
        $datensatz[4]<br>$datensatz[9]<br>$datensatz[7]<br>
        $datensatz[10]<br>**********<br><br>\n")

        }
        }
        fclose($f);

        $sortarray = sort($testarray); //ich nehme mal an nach dem Alphabet!?

        foreach($sortarray as $key => $value) {
         echo $value;
        }

        so ungefähr, ich weiss noch nicht ganz ob ich Deinen Ansatz komplett verstanden habe...(wenn es nicht funktionieren sollte, gib mir mal en Beispiel deiner Ausgabe so wie sie jetzt ist und dann ein Besipiel wie sie sein sollte)

        ciao
        romy

        --
        DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
        ->Alles ist gut wenn es aus Schokolade ist
        1. Erst einmal vielen Dank Romy!
          Ich habe leider nur ein wenig Grundwissen...THX für die Geduld

          hier mal ein Auszug aus meiner Liste/Tabelle (csv)

          15.02.2003;15.02.2003;;02/03;16:00;18:00;überschrift01;info01;ort03;location01;http://web01;new
          13.02.2003;15.02.2003;;02/03;16:00;18:00;überschrift01;info01;ort01;location01;http://web02;new
          14.02.2003;15.02.2003;;02/03;16:00;18:00;überschrift01;info01;ort02;location01;http://web03;new

          nach datensatz[3] soll gesucht werden, klappt ja auch so weit mit dem bisherigem Script, angezeigt wird es auch, allerdings schmeisst mir mein Script die Daten so aus wie´s gelesen wird.

          Mein Problem ist es, die Daten sortiert nach Datum (datensatz[0]) "und" nach Möglichkeit nach Ort Datensatz[8] auszugeben.

          cu, Mark

          1. HI,

            15.02.2003;15.02.2003;;02/03;16:00;18:00;überschrift01;info01;ort03;location01;http://web01;new
            13.02.2003;15.02.2003;;02/03;16:00;18:00;überschrift01;info01;ort01;location01;http://web02;new
            14.02.2003;15.02.2003;;02/03;16:00;18:00;überschrift01;info01;ort02;location01;http://web03;new

            Nenn die Felder so wie Du willst

            $testarray = array("Datum1"  => array(),
               "Datum2"  => array(),
               "wasweissich" => array(),
               "Jahr"  => array(),
               "Uhrzeit1" => array(),
               "Uhrzeit2" => array(),
               "ueberschrift01" => array(),
               "info01" => array(),
               "ort03" => array(),
               "location01" => array(),
               "url"  => array(),
               "new"  => array(),);

            forschleife {
             $testarray["Datum1"][$i] = $datensatz[0];
             $testarray["Datum2"][$i] = $datensatz[1];
              ... // usw.

            }

            //sortierung

            $neu = array_multisort($testarray["Datum1"],SORT_NUMERIC)

            irgendsowas, ehrlich gesagt, weiss ich hier nicht weiter
            ich weiss auch nicht ob das obige nicht zu umständlich ist
            Was Du bräuchtest wäre ein array wie bei Datanbankabfragen...leider komme ich im Moment nicht drauf...

            Mir fällt auch zur Sortierung nichts mehr ein, irgendwie will es nicht so wie ich dachte, sorry

            ciao
            romy

            --
            DIE ROMY AUS L. AN DER P. SAGT DANKE UND AUF WIEDERSEHEN
            ->Alles ist gut wenn es aus Schokolade ist