[PHP] MySQL Ausgabe sortieren

Dieses Thema im Forum "Webentwicklung" wurde erstellt von cable, 31. Juli 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 31. Juli 2007
    Zuletzt von einem Moderator bearbeitet: 15. April 2017
    MySQL Ausgabe sortieren

    Ahoi Friends der Webtechnik!

    Hab da en Problem mit nem Script von mir, weil es auf dem ohost Space funktioniert hat, leider aber nicht auf dem extra.hu space...
    Als das Script ist ein Ausschnitt aus meinem "Pubbörse-Script" Showthread Php 278685 / Download - RR:Suche

    Das Problem liegt darin, dass die Links ganz oben in der Ausgabetabelle nicht richtig funktionieren. D.h.: Es wird immer nach ID sortiert anstatt nach Speed oder so. Auf dem anderen Space hat es funktioniert. Wo is der Fehler? Oder liegt es ander PHP version? Wenn ja, was muss ich ändern.

    P.S.: Es geht mir hier nicht um Sicherheit etc.... Das änder ich schon noch.. also ich mach das schon noch mit switch.

    //edit: Habs schon mit switch:

    PHP:
             if(isset( $_GET [ 'order' ]))
                {
                switch(
    $_GET [ 'order' ]){
                            case 
    "ID"
                    
    $order = "ID" ;
                    break;
                            case 
    "SPEED"
                    
    $order = "SPEED" ;
                    break;
                            case 
    "LOCATION"
                    
    $order = "LOCATION" ;
                    break;
                            case 
    "NONDEL"
                    
    $order = "NONDEL" ;
                    break;
                            case 
    "PUBSPENDER"
                    
    $order = "PUBSPENDER" ;
                    break;
                            case 
    "STATUS"
                    
    $order = "STATUS" ;
                    break;
                            default:
                    
    $order = "ID" ;
                    break;
                }}
            else
                {
                
    $order = "ID" ;
                }
    Die Variable $_GET['order'] soll halt per URL übergeben werden. Wenn diese nicht gesetzt is, dann soll $order="ID" sein, damit die Pubs per ID geordnet werden

    PHP:
    $sql  "SELECT
                    *
                FROM
                    PUBS
                ORDER BY
                    '
    $order ' ASC" ;
        
    $result = mysql_query ( $sql );
        
        
        if(
    mysql_num_rows ( $result ) >  0 ) { 
            
            echo 
    "<table width='50%' border='1' rules='all' bordercolor='#999999' align='center'>
                    <tr>
                        <td><b><a href='index.php?order=ID'>ID</a></b></td>
                        <td><b><a href='index.php?order=SPEED'>Speed</a></b></td>
                        <td><b><a href='index.php?order=LOCATION'>Location</a></b></td>
                        <td><b><a href='index.php?order=NONDEL'>Nondel</a></b></td>
                        <td><b><a href='index.php?order=STATUS'>Status</a></b></td>
                        <td><b><a href='index.php?order=PUBSPENDER'>Pubspender</a></b></td>
                    </tr>"
    ;
    Hier is der Kopf der Ausgabetabelle. Jedes Wort soll als Link erscheinen, um die Tabelle möglichst nach allen Kriterien zu ordnen.

    PHP:
             echo  "<tr>
                    <td>#"
    . $id . "</td>
                    <td>"
    . $speed . "</td>
                    <td>"
    . $location . "</td>
                    <td>"
    . $nondel . "</td>
                    <td>"
    . $status . "</td>
                    <td>"
    . $pubspender . "</td>
                </tr>"
    ;
            }
            echo 
    "</table><br /><br />" ;
            }
    Das alles steht in ner Schleife und wird jedes mal wieder aufgerufen, um jede weitere Tabellezeile mit Daten zu füttern. Funktioniert auch wunderbar.
     
  2. 31. Juli 2007
    AW: MySQL Ausgabe sortieren

    also deine sicherheit könnte ma weitaus eleganter lösen als mit deiner switch ^^
    PHP:
    $order  $_GET [ 'order' ]!= ''  addslashes ( trim ( $_GET [ 'order' ])) :  'ID'

    ähm.. was mir so spontan einfällt.. stehn die ganzen felder in der datenbank auch wirklich mit Großbuchstaben drin???

    mysql unterscheidet nämlich zwischen Groß-und Kleinschreibung
     
  3. 31. Juli 2007
    AW: MySQL Ausgabe sortieren

    PHP:
    <table>
        <tr>
            <td><a href="./?order=ID">ID</a></td>
            <td><a href="./?order=SPEED">SPEED</a></td>
            <td><a href="./?order=LOCATION">LOCATION</a></td>
            <td><a href="./?order=NONDEL">NONDEL</a></td>
            <td><a href="./?order=STATUS">STATUS</a></td>
            <td><a href="./?order=PUBSPENDER">PUBSPENDER</a></td>
        </tr>
    <?php
        $order 
    = (( $_GET [ 'order' ] != "" ) ?  mysql_real_escape_string ( $_GET [ 'order' ]) :  "ID" );
        switch(
    $order ) {
            case 
    "LOCATION"  : break;
            case 
    "SPEED"  : break;
            case 
    "NONDEL"  : break;
            case 
    "PUBSPENDER"  : break;
            case 
    "STATUS"  : break;
            default: 
    $order  "ID" //nix dabei? $order = "ID"
        
    }
        
        
    $res  mysql_query ( "SELECT * FROM tabelle ORDER BY ' $order ' DESC" );
        while(
    $feld  mysql_fetch_assoc ( $res )) {
            print 
    "
                <tr>
                    <td>
    { $feld [ 'ID' ]} <td>
                    <td>
    { $feld [ 'SPEED' ]} </td>
                    <td>
    { $feld [ 'LOCATION' ]} </td>
                    <td>
    { $feld [ 'NONDEL' ]} </td>
                    <td>
    { $feld [ 'STATUS' ]} </td>
                    <td>
    { $feld [ 'PUBSPENDER' ]} </td>
                </tr>
            "
    ;
        }
    ?>
    </table>
     
  4. 31. Juli 2007
    AW: MySQL Ausgabe sortieren

    Ich wusste, dass es eleganter ging, nur PHP ist nicht so mein Gebiet^^

    Und: JA, die Namen der Spalten sind alle groß geschrieben. Ich hab die MySQL Tabelle 1 zu 1 von der alten übernommen. Also vom ohost Space, wo es funktioniert hat.

    greetz cable

    //edit: Danke an Murdoc, hätte dich vllt eh angeschrieben wegen dem Ding

    Aber da gibts noch Probleme

    schau mal bitte auf: cable.extra.hu/index2.php

    Da macht der eine SPalte zuviel und ich hab kA woran es liegt.

    MfG cable
     
  5. 31. Juli 2007
    AW: MySQL Ausgabe sortieren

    versuch mal valides html, sonst weiss ich ned worans liegt.
     
  6. 31. Juli 2007
    AW: MySQL Ausgabe sortieren

    PHP:
      < td >{ $feld [ 'ID' ]}< td
    is nur n kleiner tippfehler.. dir fehlt beim hinteren td der backslash /


    so ist's richtig
    PHP:
      < td >{ $feld [ 'ID' ]}</ td

    *edit:

    funktioniert das Sortieren eigtl schon??

    wenn nich probier mal statt

    PHP:
    SELECT  FROM tabelle ORDER BY  '$order'  DESC 
    ohne ' '


    also so

    PHP:
    SELECT  FROM tabelle ORDER BY $order DESC 
     
  7. 31. Juli 2007
    AW: MySQL Ausgabe sortieren

    PHP:
    <table>
        <tr>
            <td><a href="?order=ID">ID</a></td>
            <td><a href="?order=SPEED">SPEED</a></td>
            <td><a href="?order=LOCATION">LOCATION</a></td>
            <td><a href="?order=NONDEL">NONDEL</a></td>
            <td><a href="?order=STATUS">STATUS</a></td>
            <td><a href="?order=PUBSPENDER">PUBSPENDER</a></td>
        </tr>
    <?php
        
    if(! in_array ( $_GET [ 'order' ], array( 'LOCATION' 'SPEED' 'NONDEL' 'STATUS' 'PUBSPENDER' )))
            
    $_GET [ 'order' ] =  'ID' ;
        
        
    $res  mysql_query ( "SELECT * FROM tabelle ORDER BY  { $_GET [ 'order' ]}  DESC" );
        while(
    $feld  mysql_fetch_assoc ( $res )) {
            print 
    "
                <tr>
                    <td>
    { $feld [ 'ID' ]} <td>
                    <td>
    { $feld [ 'SPEED' ]} </td>
                    <td>
    { $feld [ 'LOCATION' ]} </td>
                    <td>
    { $feld [ 'NONDEL' ]} </td>
                    <td>
    { $feld [ 'STATUS' ]} </td>
                    <td>
    { $feld [ 'PUBSPENDER' ]} </td>
                </tr>
            "
    ;
        }
    ?>
    </table>
    Die wohl eleganteste Version, die mir einfaellt. Sollte auch funktionieren.
     
  8. 31. Juli 2007
    AW: MySQL Ausgabe sortieren

    Sooo... endlich klappt es auch mit dem Sortieren!

    Murdoc hatte ein "/" vergessen, dann stimmte auch die Tabelle wieder.

    w!ns0ck hatte recht mit den ' ', also geht jetzt alles. Vielen Dank!

    MfG cable

    BW habt ihr alle bekommen!

    ~closed~
     
  9. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.