Ergebnis 1 bis 13 von 13
  1. #1
    Mitglied
    Registriert seit
    May 2007
    Beiträge
    12

    Standard PHP-Skript um Sortierfunktion erweitern!

    Hallo liebe Forengemeinde,

    zu allererst muss ich sagen, das meine PHP-Kenntnisse doch äußerst bescheiden sind, daher wende ich mich mit meiner Frage an euch mit der Hoffnung, das ihr mir weiterhelfen könnt.


    Ich habe ein PHP-Skript mit folgender Funktion:
    Mein Skript liest eine CSV-Datei aus und gibt die Daten in Form einer HTML-Tabelle aus.

    PHP-Code:
    <?
    $load
    =file('daten.csv');
    $show="<table width=80% border=0 cellspacing=0 cellpadding=0>";
    $show.="<tr>
    <td><div align=center><b>Link1</b></div></td>
    <td><div align=center><b>Beschreibung1</b></div></td>
    <td><div align=center><b>Beschreibung2</b></div></td>
    <td><div align=center><b>Beschreibung3</b></div></td>
    <td><div align=center><b>Beschreibung4</b></div></td>
    <td><div align=center><b>Beschreibung5</b></div></td>
    <td><div align=center><b>Beschreibung6</b></div></td>
    <td><div align=center><b>Beschreibung7</b></div></td>
    <td><div align=center><b>Link2</b></div></td>
    </tr>"
    ;
    for(
    $i=0;$i<=count($load)-1;$i++)
    {
        
    $data=explode(';',$load[$i]);       
        
    $show.="<tr>
            <td><font size=2><div align=center>"
    .$data[0]."</div></td>
            <td><font size=2><div align=center>"
    .$data[1]."</div></td>
            <td><font size=2><div align=center>"
    .$data[2]."</div></td>
            <td><font size=2><div align=center>"
    .$data[3]."</div></td>
            <td><font size=2><div align=center>"
    .$data[4]."</div></td>
            <td><font size=2><div align=center>"
    .$data[5]."</div></td>
            <td><font size=2><div align=center>"
    .$data[6]."</div></td>
            <td><font size=2><div align=center>"
    .$data[7]."</div></td>
            <td><font size=2><div align=center>"
    .$data[8]."</div></td>
            <td><font size=2><div align=center>"
    .$data[9]."</div></td>
            </tr>"
    ;
    }
    echo 
    $show;
    echo 
    "</table>";
    ?>

    Jetzt möchte ich dieses PHP-Skript um eine für mich sehr wichtige Funktion erweitern:

    Ich möchte alle Spalten mit einer Auf- und Absteigenden Sortierfunktion versehen. Sobald man auf die Überschrift der Spalte klickt (z.B. auf Link1 oder auf Beschreibung1) soll die gesamte Spalte sortiert werden.

    Ist dieses Skript um diese Funktion erweiterbar? Wenn ja, wie mache ich das?


    Ich danke euch schon einmal im Voraus!

  2. #2
    Gentleman Avatar von heXagon
    Registriert seit
    Mar 2006
    Ort
    50.405N 8.818E
    Beiträge
    304

    Standard Re: PHP-Skript um Sortierfunktion erweitern!

    arsort(), asort(), ksort(), krsort(), natsort(), natcasesort(), rsort(), usort(), array_multisort() und uksort().

    such dir was aus.
    einfach aus array anwenden.

  3. #3
    Werbekritiker Avatar von StaTiC
    Registriert seit
    May 2003
    Beiträge
    14.143

    Standard Re: PHP-Skript um Sortierfunktion erweitern!

    ich denke mal es wäre besser wenn du zuerst die datei in ein array einliest und erst danach mit diesem array weiterarbeitest.

    im moment ist es ja so, dass du es einließt und direkt wieder ausgibst.

    dann nutzt die php funktion array_multisort()

    und das müsste dann funktionieren.

  4. #4
    Gentleman Avatar von heXagon
    Registriert seit
    Mar 2006
    Ort
    50.405N 8.818E
    Beiträge
    304

    Standard Re: PHP-Skript um Sortierfunktion erweitern!

    Zitat Zitat von St@tic
    ich denke mal es wäre besser wenn du zuerst die datei in ein array einliest und erst danach mit diesem array weiterarbeitest.
    PHP-Code:
    $load=file('daten.csv'); 
    Ist doch ein Array, oder?

  5. #5
    ex-Moderator Avatar von tiberian
    Registriert seit
    Sep 2003
    Ort
    K-Pax
    Beiträge
    5.389

    Standard Re: PHP-Skript um Sortierfunktion erweitern!

    Ja, ist es.

  6. #6
    Gentleman Avatar von heXagon
    Registriert seit
    Mar 2006
    Ort
    50.405N 8.818E
    Beiträge
    304

    Standard Re: PHP-Skript um Sortierfunktion erweitern!

    War rhetorisch gefragt.

  7. #7
    Mitglied
    Registriert seit
    Jan 2003
    Beiträge
    453

    Standard Re: PHP-Skript um Sortierfunktion erweitern!

    Zitat Zitat von heXagon
    Ist doch ein Array, oder?
    Ja, aber kein Multidimensionales. Und das braucht man um nach Spalten zu sortieren.

    Deswegen array selber bauen. Mit fgetcsv und dann wie schon erwähnt array_multisort.

  8. #8
    Mitglied

    (Threadstarter)


    Registriert seit
    May 2007
    Beiträge
    12

    Standard Re: PHP-Skript um Sortierfunktion erweitern!

    Wie gesagt, meine PHP Kenntnisse sind äußerst bescheiden. Wie sehe das denn konkret aus?

  9. #9
    Mitglied
    Registriert seit
    Jan 2003
    Beiträge
    453

    Standard Re: PHP-Skript um Sortierfunktion erweitern!

    Mal so ganz konkret:

    PHP-Code:
    <?php

    // http://de3.php.net/manual/de/function.array-multisort.php#61334
    function sortmddata($array$by$order 'ASC'$type 'STRING') {
        
    // $array  - Zu sortierendes Multidimensionales Array
        // $by - Spalte nach der Sortiert werden soll
        // $order - ASC (aufsteigend) oder DESC (absteigend)
        // $type - NUM (numerisch) oder STRING
        
    $sortby "sort$by";
        
    $firstval current($array);

        
    $vals array_keys($firstval);

        foreach (
    $vals as $init) {
            
    $keyname "sort$init";
            $
    $keyname = array();
        }
        foreach (
    $array as $key => $row) {
            foreach (
    $vals as $names) {
                
    $keyname "sort$names";
                
    $test = array();
                
    $test[$key] = $row[$names];
                $
    $keyname array_merge($$keyname$test);
            }
        }

        if (
    $order == "DESC") {
            if (
    $type == "num") {
                
    array_multisort($$sortbySORT_DESCSORT_NUMERIC$array);
            } else {
                
    array_multisort($$sortbySORT_DESCSORT_STRING$array);
            }
        } else {
            if (
    $type == "num") {
                
    array_multisort($$sortbySORT_ASCSORT_NUMERIC$array);
            } else {
                
    array_multisort($$sortbySORT_ASCSORT_STRING$array);
            }
        }

        return 
    $array;
    }
    $csv = array();

    // Alles einlesen
    $handle fopen ("daten.csv","r");
    while ((
    $data fgetcsv ($handle1000";")) !== false ) {
       
    $csv[] = $data;
    }
    fclose ($handle);

    // .. und sortieren
    $sort_column = (isset($_GET['sortcolumn']) ? $_GET['sortcolumn'] : 0);
    $sort_order  = (isset($_GET['sortorder']) ? $_GET['sortorder'] : 'ASC');
    $csv sortmddata($csv$sort_column$sort_order);


    ?>

    <table width=80% border=0 cellspacing=0 cellpadding=0>
    <tr>
        <td>
            <a href="?sortcolumn=0&amp;sortorder=DESC">absteigend</a>
            Link1
            <a href="?sortcolumn=0&amp;sortorder=ASC">aufsteigend</a>
        </td>
        <td>
            <a href="?sortcolumn=1&amp;sortorder=DESC">absteigend</a>
            Beschreibung1
            <a href="?sortcolumn=1&amp;sortorder=ASC">aufsteigend</a>
        </td>
        <td><div align=center><b>Beschreibung2</b></div></td>
        <td><div align=center><b>Beschreibung3</b></div></td>
        <td><div align=center><b>Beschreibung4</b></div></td>
        <td><div align=center><b>Beschreibung5</b></div></td>
        <td><div align=center><b>Beschreibung6</b></div></td>
        <td><div align=center><b>Beschreibung7</b></div></td>
        <td><div align=center><b>Link2</b></div></td>
    </tr>
    <?php foreach ($csv as $row) : ?>
    <tr>
        <td><font size=2><div align=center><?php echo $row[0]; ?></div></td>
        <td><font size=2><div align=center><?php echo $row[1]; ?></div></td>
        <td><font size=2><div align=center><?php echo $row[2]; ?></div></td>
        <td><font size=2><div align=center><?php echo $row[3]; ?></div></td>
        <td><font size=2><div align=center><?php echo $row[4]; ?></div></td>
        <td><font size=2><div align=center><?php echo $row[5]; ?></div></td>
        <td><font size=2><div align=center><?php echo $row[6]; ?></div></td>
        <td><font size=2><div align=center><?php echo $row[7]; ?></div></td>
        <td><font size=2><div align=center><?php echo $row[8]; ?></div></td>
        <td><font size=2><div align=center><?php echo $row[9]; ?></div></td>
    </tr>
    <?php endforeach; ?>
    </table>
    Schön machen darst du es selbst. Dabei am besten gleich auf die FONT-Tags verichten (oder wenigstens schließen ). Auch die DIVs in den TDs sind überflüssig. Für den Tabellenkopf die TDs in THs antsatt in TRs einschließen, und dann alles schön per CSS stylen. Viel Spass

  10. #10
    Mitglied

    (Threadstarter)


    Registriert seit
    May 2007
    Beiträge
    12

    Standard Re: PHP-Skript um Sortierfunktion erweitern!

    @sTu´-: Boah, auf soviel Hilfsbereitschaft hätte ich jetzt nicht gesetzt. Bin echt extrem positiv überrascht. Vielen, vielen Dank für deine Hilfe!

    Das Skript hab ich eben mal kurz ausprobiert. Klappt prima! Hast mir wirklich sehr weitergeholfen!


    Aber eine Frage habe ich noch:
    Aufgrund der Übersichtlichkeit, würde ich gerne jeder zweiten Zeile eine andere Hintergrundfarbe geben. Also so:

    Zeile1 (Schwarz)
    Zeile2(Weiß)
    Zeile3(Schwarz)
    Zeile4(Weiß)
    Zeile5(Schwarz)
    usw.

    Im Prinzip 2 Hintergrundfarben (Schwarz + Weiß). Immer abwechselnd und jeweils immer für eine ganze Zeile. Die Überschriftenzeile sollte davon nicht betroffen sein, sonderrn nur die Zeilen die durch den Datensatz der csv-Datei erzeugt werden. Kann man dies in das Skript integrieren?

  11. #11
    Mitglied
    Registriert seit
    Jan 2003
    Beiträge
    453

    Standard Re: PHP-Skript um Sortierfunktion erweitern!

    aus dem

    PHP-Code:
    </tr> 
    <?php foreach ($csv as $row) : ?> 
    <tr>
    das hier machen:

    PHP-Code:
    </tr>
    <?php
    $oddeven 
    '';
    foreach (
    $csv as $row) :
        
    $oddeven = ($oddeven == 'odd') ? 'even' 'odd';
    ?>
    <tr style="background-color: <?php echo ($oddeven == 'odd') ? '#ccc' '#f00'?>">
    Gute Nacht!

  12. #12
    Mitglied
    Registriert seit
    Mar 2009
    Beiträge
    2

    Question Re: PHP-Skript um Sortierfunktion erweitern!

    Hallo liebe Forumsmitglieder,
    ich habe dieses Thema aufgemacht, weil ich eure Hilfe brauche.
    Ich habe keine Ahnung von PHP haber schon gegoogelt und selbst nach eine Lösung gesucht aber nichts gefunden oder nur Bahnhof verstanden.
    Es geht um die Sortierung von Zahlen.

    Ich ahbe es mit SORT_STRING, SORT_NUMERIC und SORT_REGULAR probiert, funzt aber nicht.

    Das Problem:
    Ausgabe von Zahlen mit Komma oder Punkt erscheint folgendes:
    114,50 12,75 14,80 usw.

    Ausgabe müsste aber lauten:
    12,75 14,80 114,50 usw.

    Ich hoffe ihr könnt mir helfen und bedanke mich schon einmal.

    Viele Grüße
    Nick48

  13. #13
    Mitglied
    Registriert seit
    Mar 2009
    Beiträge
    2

    Lightbulb Re: PHP-Skript um Sortierfunktion erweitern!

    Hallo,

    es hat sich erledigt. Ich Dummkopf hatte vergessen den $type zu ändern. Dann kann es natürlich nicht gehen.
    Ich staune nur, dass es keine Fehlermeldung gegeben hat.

    Viele Grüße
    Nick48

  14.  
     
     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •