Beiträge von huberg

    Kleiner Fehler:


    Um die Zeile beim Sortieren zusammen zuhalten, muss im Code noch eine Erweiterung erfolgen.


    Alle Zeile mit:


    array_multisort($datum, SORT_ASC, $name, SORT_ASC,$betrag, SORT_ASC, $bemerkung, SORT_ASC,


    $kz, SORT_ASC); bzw.. SORT_DESC


    bitte dieses Arrays/Flags (hier bold) nachtragen.
    huberg

    Hallo WEB-Fans,


    Eure Unterstützung war gleich Null. Aber das ist gut so. Jetzt habe ich mir selber geholfen. Und war gezwungen mich in das Thema einzuarbeiten. Ich verstehe jetzt das Thema Arrays auch besser.
    Das Script vom 18.6.2009 ist voller Fehler und hinterlies den Eindruck, der hat ja wohl gar nichts verstanden.
    Hier ist aber ist die Lösung: Eine Text-Datei einlesen und sortiert nach Spalten ausgeben. Die Tabelle bietet auch die Möglichkeit mehrer Spalten durch Ancliken (Pfeil up u. down) nach Ausgabe erneut zu sortieren. Array-multisort ist wohl ein heikles Thema für viele. Habe nichts Vergleichbares gefunden. Ein Teil stammt aus: <!-- w --><a class="postlink" href="http://www.php-kurs.com">http://www.php-kurs.com</a><!-- w -->.
    Hier jetzt erst der Input /Output und danach mein Script.
    Ich will versuchen ein Screen-shot als Anhang zur Verfügung zustellen.
    Aber wie lädt man hier den Anhang? Und wo ist die Hilfe? Anhang geht offenbar nicht - sorry.
    Mein Dank an Axel. Dank seines PHP-Toturials bin ich im Rating vom Alzheimer-Ast etwas höher bewertet worden oder?


    Farmer u. Rentner in Afrika


    Huberg


    <?php // Version Name_627.php
    $DOCUMENT_ROOT = $_SERVER['DOCUMENT_ROOT'];
    echo "name_xyz.txt Daten Stand 27.6.2009";
    $array = file("$DOCUMENT_ROOT/../htdocs/Daten/name_xyz.txt");
    $anzahl_zeilen = count($array);
    echo "<br/>"; echo "<br/>";
    echo 'array vor der Sortierung und vor der Trennung mit explode' ;
    echo "<pre>";
    print_r ($array); // nur fuer Test


    echo "array in 5 Spalten (arrays) zerlegt " ;
    echo "<br/>"; echo "<br/>";
    for ($i = 0; $i < $anzahl_zeilen ; $i++)
    {
    // Zeilen in Spalten speichern -----------------------------
    $line = explode ("|" , $array[$i]) ;
    $datum[$i] = strtolower ($line[0] );
    $name[$i] = strtolower ($line[1]);
    $betrag[$i] = strtolower ($line[2]);
    $bemerkung[$i]= strtolower ($line[3]);
    $kz[$i] = strtolower ($line[4]);
    print_r ($datum[$i]); // nur fuer Test
    print_r ($name[$i] );
    print_r ($betrag[$i] );
    print_r ($bemerkung[$i] );
    print_r ($kz[$i] );
    }
    switch ( $_GET['sortierung'] )
    {
    case ( "d" :(
    array_multisort($datum, SORT_ASC, $name, SORT_ASC,$betrag, SORT_ASC, $bemerkung, SORT_ASC );
    echo "nach switch/case d"; // nur fuer Test
    break;
    case ( "da" :(
    array_multisort($datum, SORT_DESC, $name, SORT_DESC, $betrag, SORT_DESC, $bemerkung, SORT_ASC );
    echo "nach switch/case da"; // nur fuer Test
    break;
    case ( "b" :(
    array_multisort( $name, SORT_ASC, $datum, SORT_ASC, $betrag,SORT_ASC,$bemerkung, SORT_ASC );
    echo "nach switch/case b"; // nur fuer Test
    break;
    case ( "ba" :(
    array_multisort( $name, SORT_DESC,$datum, SORT_DESC,$betrag, SORT_DESC,$bemerkung, SORT_DESC );
    echo "nach switch/case ba"; // nur fuer Test
    break;
    case ("o"):
    array_multisort( $betrag, SORT_ASC,$name, SORT_ASC,$datum, SORT_ASC,$bemerkung, SORT_ASC);
    echo "nach switch/case o = Betrag aufsteigend"; // nur fuer Test
    break;
    case ("oa"):
    array_multisort( $betrag, SORT_DESC,$name, SORT_DESC,$datum, SORT_DESC,$bemerkung, SORT_DESC);
    echo "nach switch/case oa = Betrag absteigend"; // nur fuer Test
    break;
    DEFAULT:
    array_multisort($datum, SORT_ASC, $name, SORT_ASC,$betrag, SORT_ASC, $bemerkung, SORT_ASC );
    }
    ausgabe_tabelle ( $datum, $name, $betrag, $bemerkung, $kz, $anzahl_zeilen);
    // ------------------------------------------------------------------
    function ausgabe_tabelle ( $datum, $name, $betrag, $bemerkung, $kz, $anzahl_zeilen)
    {
    echo '<table border="1" cellpadding="6" cellspacing="0">';
    echo '<tr bgcolor="#6CF8E6">';
    echo '<th>';
    echo 'Datum ';
    echo '<a href="Name_627.php?sortierung=d">&darr;</a>';
    echo ' ';
    echo '<a href="Name_627.php?sortierung=da">&uarr;</a>';
    echo '</th>';
    echo '<th>';
    echo 'Name ';
    echo '<a href="Name_627.php?sortierung=b">&darr;</a>';
    echo ' ';
    echo '<a href="Name_627.php?sortierung=ba">&uarr;</a>';
    echo '</th>';
    echo '<th>';
    echo 'Betrag ';
    echo '<a href="Name_627.php?sortierung=o">&darr;</a>';
    echo ' ';
    echo '<a href="Name_627.php?sortierung=oa">&uarr;</a>';
    echo '</th>';
    echo '<th>';
    echo 'Bemerkung ';
    echo '</th>';
    echo '<th>';
    echo ' Kz';
    echo '</th>';
    echo '</tr>';
    // -------------------------------------------------------------------
    for ($i = 0; $i < $anzahl_zeilen; $i++)
    {
    // var_dump($datum); // nur fuer Test
    $zeilenr++;
    echo '<tr';
    echo farbwechsel ( $zeilenr );
    echo '>';
    echo '<td>';
    echo $datum[$i];
    echo '</td>';
    echo '</td>';
    echo '<td>';
    echo $name[$i];
    echo '</td>';
    echo '</td>';
    echo '<td>';
    echo $betrag[$i];
    echo '</td>';
    echo '<td>';
    echo $bemerkung[$i];
    echo '</td>';
    echo '<td>';
    echo $kz[$i];
    echo '</td>';
    echo '</tr>';
    } }
    echo '</table>';
    // -----------------------------------------------------------
    function farbwechsel ( $zeilenr )
    {
    if ( bcmod ( $zeilenr , '2' ) == 0 ) {
    $hintergrundfarbe = ' bgcolor="#ACC8F0" ';
    } else
    { $hintergrundfarbe = ' bgcolor="#DDE8F9" '; }
    return ( $hintergrundfarbe );
    }
    ?>



    [/code]

    Ich habe eine kleine Datei mit meheren Zeilen erstellt. Die Zeilen enthalten einige Felder( Datum Name Betrag etc.) die ich mit file()
    einlese und list u. explode zerlege. ich kann auch die Felder in eine Tabelle stellen. Die Felder werden richtig ausgegeben.
    In der Kopfzeile sind Pfeile fuer die Sortierung (Up und Down). Der Click auf eine Pfeil funktioniert , ich uebergebe fuer die Sortierung den richtigen Code Der Link zu Switch ($__GET ['Sortierung']) und case ist auch OK.
    Aber jetzt kommts
    switch ( $_GET['sortierung'] ) {
    case ( "d" :(
    array_multisort($Datum, SORT_ASC, $Name, SORT_ASC, $records); ---------Ich bekomme den Fehler:
    Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\xxxxx\zzzzz\Name_out.php on line 28
    -----------------------------------------------------------------------------------
    meine Code gekeurzt:
    $array = file("$DOCUMENT_ROOT/../htdocs/Daten/Name_xyz.txt");
    list($Datum, $Name, $Betrag, $Bemerkung, $Kz) = explode("\n" , $records);
    foreach ($records as $nr => $inhalt) {


    $Datum[$nr] = ($inhalt[Datum]);
    $Name[$nr] = ($inhalt[Name]);
    $Betrag[$nr] = ($inhalt[Betrag]);
    $Bemerkung[$nr] = ($inhalt[Bemerkung]);
    $Kz[$nr] = ($inhalt[Kz]);
    ---------------------------------------------------------------------------------
    hier noch ein Beispiel meiner Zeilen:
    20090612|Meyer Vivi|130|B.Ueberweisung|y


    Kopfzeile der Tab.:
    Datum ↓ ↑ Name↓ ↑ Betrag↓ ↑ Bemerkung Kz


    Wie muss man die Zeile zerlegen damit ein array_multisort funktioniert?
    Fuer die Hilfe (Anfaenger gerecht) schon mal Danke.


    Uebrigens, dies ist eine abgewandelte Version von Terminkalender.php
    aus php-kurs.com von A.P.

    Vielen Dank fuer die schnelle Antwort.
    Ich muss mich auch korrigieren. Es gibt unter dem Suchwort:
    Werte uebergeben oder Links einen Parameter mitgeben.
    viele Erklaerungen. z.B:


    <a href="datei.php?var1=Wert1&var2=2">Linktext</a>


    Aber was ist der Unterschied zwischen <Linktext> und &darr


    und wenn ich keine Anker habe, wo fuehrt der Link genau hin?


    echo '<a href="terminkalender.php?sortierung=o">&darr;</a>'

    In einem Tutorial werden Tabellen-Inhalte sortiert.
    Nach Ausgabe der Tab. kann z.B. nach Datum oder Ort up/down sortiert werden. Einfacher Click auf das Symbol Pfeil up oder down. Schoenes Spielchen!
    Der Verweis und damit zur Steuerung der Sortierung erfolgt mit Switch/Case. Routine ( auf der selben Seite)
    Mir ist der folgende Link ( es gibt kein Anker) nicht klar.


    echo '<a href="terminkalender.php?sortierung=o">&darr;</a>
    terminkalender.php ist der Datei-Name, sortierung=o fuer switch/Case
    Welche Bedeutung hat das ?-Zeichen , etc.
    Suche ein Schema fuer diesen Link-Typ oder Hinweis auf eine WEB-Seite
    Uebrigens, &darr steht fuer Pfeil down (Symbol), &uarr Pfeil up.


    Es gibt unzaehlig Seite zum Thema "href/ Anker". Aber nichts zu diesem Typ. Mein Script laeuft , aber ich moechte es auch verstehen.
    Vielleicht kann mir Jemand auf die Spruenge helfen. Danke fuer Eure Hilfe