tutorials.de Buch-Aktion 05/2012
Like Tree3Danke
  • 1 Beitrag von tombe
  • 1 Beitrag von Yaslaw
  • 1 Beitrag von tombe
ERLEDIGT
NEIN
ANTWORTEN
10
ZUGRIFFE
289
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von 123123123
    123123123 123123123 ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    177
    Guten Morgen,

    ich arbeite immer noch an meiner Benutzerliste.
    Ich hab eine Tabelle erstellt mit Datensätze aus der Datenbank. Oben in der Tabelle stehen die Bezeichnugen der einzelnen Spalten, zB: Vorname.
    Wie mache ich es, damit ich auf Vorname einmal klicke und die Vornamen aufsteigend sortiert sind und wenn ich nochmal auf Vorname klicke, die Vornamen dann absteigend sortiert sind. Bestimmt muss man da 'if' anwenden, aber wie das ist hier die Frage.
    Muss ich da auch SQL-Abfragen machen also wie DESC oder ASC?
    Hier der Code für die Tabelle:
    PHP-Code:
    echo "<form action='benutzerliste.php' method='post'>";
        echo 
    "<input type='submit' name='submit' style= 'display:none;' />";

        echo 
    "<table class = 'user_tabelle' border= '1'>"
        echo 
    "<tr>";
        echo 
    "<th>".'Vorname'."</th>";
        echo 
    "<th>".'Nachname'."</th>";
        echo 
    "<th>".'Login'."</th>";
        echo 
    "</tr>";
        echo 
    "<tr> 
     

  2. #2
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    So in etwa sollte es klappen:

    PHP-Code:
    <?php

    $art 
    = (@$_GET["art"] == "ASC") ? "DESC" "ASC";

    if (isset(
    $_GET["order"])) {
        
    $order "ORDER BY " .$_GET['order'] ." " .$art;
    } else {
        
    $order "ORDER BY nummer " .$art;
    }

    $sql "SELECT * FROM tabelle " .$order;

    echo 
    $sql;
    echo 
    "<br />";
    ?>
    <a href="benutzerliste.php?order=vorname&art=<?php echo $art;?>">Vorname</a>
    <br />
    <a href="benutzerliste.php?order=nachname&art=<?php echo $art;?>">Nachname</a>
    Der Wert für die Sortierfolge ($art) wird einfach immer umgekehrt und das Feld nach welchem sortiert werden soll, wird dem Link mitgegeben.
    Wir die Seite "direkt" aufgerufen, tritt der ELSE-Abschnitt in Kraft (wobei du diese Sortierung natürlich anpassen musst).
    123123123 bedankt sich. 
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  3. #3
    Avatar von 123123123
    123123123 123123123 ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    177
    Danke schon mal für die Antwort!
    Wie mache ich es, das die Vornamen sich auch sortieren.
    Also ich hab zB drunter 'Anke, Markus, Ralf' da stehen, die heißen in der Datenbank user_vorname.
    Ich poste mal meine SQL- Abfrage (Bei SELECT):
    Code :
    1
    2
    3
    4
    5
    
    " SELECT * 
                                    FROM benutzerliste 
                                    WHERE user_vorname LIKE '%{$_REQUEST['user_vorname']}%' 
                                    AND user_nachname LIKE '%{$_REQUEST['user_nachname']}%' 
                                    AND user_login LIKE '%{$_REQUEST['user_login']}%' ");

    (Die anderen Daten muss man nicht beachten, die mache ich später dazu)
     

  4. #4
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Fast so wie tombe schreibt - aber:
    Wenn nach Vorname aufsteigens sortiert ist und ich nachher auf Nachname klicke, wird nach Nachname absteigend sortiert. Die Sortierreihenfolge sollte mMn nur geändert werden wenn man auf die gleiche Spalte klickt. Bei einer Anderen Spalte sollte wieder der die Standartrichtung eingestellt werden.

    Ich habe da mal ein etwas komplexeres Beispiel, dafür ists schön generisch *g*.
    PHP-Code:
    //Standarts defineren
    define('C_DEFAULT_ORDER_BY''vorname');
    define('C_DEFAULT_DIRECTION'SORT_ASC);

    //Spalten definieren
    $columns['vorname'] = array('direction' => C_DEFAULT_DIRECTION'title' => 'Vorname');
    $columns['ort']     = array('direction' => C_DEFAULT_DIRECTION'title' => 'Ort');

    //Die Eingaben auswerten und ggf. Standarts setzen
    $orderBy = isset($_GET['orderBy']) ? $_GET['orderBy'] : C_DEFAULT_ORDER_BY;
    if(!
    array_key_exists($orderBy$columns)) $orderBy C_DEFAULT_ORDER_BY
    $direction = (int) (isset($_GET['direction']) ? $_GET['direction'] : C_DEFAULT_DIRECTION);

    /**
     *  --- Der folgende Codel kann auch aus der DB gemacht werden. Inkl. des Sortings
     * Hier der zu Testzwecken nicht genutzte Code für die DB-Daten:
     *  $sqlDirection = ($direction == SORT_DESC) ? 'DESC' : '';
     *  $sql = "SELECT vorname, nachname FROM myTable ORDER BY {$orderBy} {$sqlDirection};";
     *  $result = mysql_query($sql);
     *  $data = array()
     *  foreach($row = mysql_fetch_assoc($result)) $data[] = $row;
     */

    // --- Ich simuliere hier die DB-Daten
        //Daten
        
    $data[] = array('vorname' => 'Hans',    'ort' => 'Zürich');
        
    $data[] = array('vorname' => 'Peter',   'ort' => 'Bern');
        
    $data[] = array('vorname' => 'Thomas',  'ort' => 'Basel');
        
    $data[] = array('vorname' => 'Stefan',  'ort' => 'Genf');
        
    //Daten sortieren --- array_sort_by_subarray_item(): http://wiki.yaslaw.info/wikka/PhpArraySortBySubarrayItem
        
    array_sort_by_subarray_item($data$orderBy$direction);
    // -- Ende DB-Simulations-Teil

    //Die Direction für den Link auf aktuelle Spalte anpassen.
    if(($direction == SORT_ASC)) $columns[$orderBy]['direction'] = SORT_DESC;  

    //Tabelle ausgeben
    echo "<table>\n";
    echo 
    "  <tr>\n";
    //Titelzeilen
    foreach($columns as $key => $col){
        echo 
    "    <th><a href = '?orderBy={$key}&direction={$col['direction']}'>{$col['title']}</a></th>\n";
    }
    echo 
    "  </tr>\n";
    //Datenzeilen
    foreach($data as $item){
        echo 
    "  <tr>\n";
        
    //Datenfleder
        
    foreach(array_keys($columns) as $colName){
            echo 
    "    <td>{$item[$colName]}</td>\n";
        }
        echo 
    "  </tr>\n";
    }
    echo 
    '</table>'
    Hier die Ausgabe
    HTML-Code:
    <table>
      <tr>
        <th><a href = '?orderBy=vorname&direction=3'>Vorname</a></th>
        <th><a href = '?orderBy=ort&direction=4'>Ort</a></th>
      </tr>
      <tr>
        <td>Hans</td>
        <td>Zürich</td>
    
      </tr>
      <tr>
        <td>Peter</td>
        <td>Bern</td>
      </tr>
      <tr>
        <td>Stefan</td>
        <td>Genf</td>
      </tr>
      <tr>
        <td>Thomas</td>
        <td>Basel</td>
      </tr>
    </table>
    123123123 bedankt sich. 
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  5. #5
    Avatar von 123123123
    123123123 123123123 ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    177
    Hey hab das etwas anders gelöst, so in etwa wie tombe!
    PHP-Code:
    $sortorder = (isset($_REQUEST['sortorder']) && $_REQUEST['sortorder'] == "asc") ? "desc" "asc";
        
        
    $sqlOrder "user_vorname ASC, user_nachname ASC, user_login ASC";
        if(isset(
    $_REQUEST['sort'])) {
            
    $sqlOrder "{$_REQUEST['sort']} {$sortorder}";
        } 
    Und halt unten verlinkt!

    So jetzt noch eine Frage:
    Ich habe ja ein Formular erstellt, da kann man auch neuen User anlegen.
    Wie kann man machen, wenn der User nichts in die Felder eingibt und dann auf abspeichern klickt, das eine Meldung kommt,
    "Bitte ausfüllen". Wie würde das mit IF aussehen?
     

  6. #6
    Avatar von tombe
    tombe tombe ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Sep 2004
    Ort
    Möglingen (BaWü)
    Beiträge
    3.109
    Wenn ein Feld nicht ausgefüllt wird, dann wird es beim Abschicken auch nichts übertragen.

    Prüfe also einfach ob die entsprechende $_POST-Variable existiert und einen gültigen Wert hat.

    PHP-Code:
    if (isset($_POST['nachname']) {
        echo 
    "Dein Name ist " .$_POST['nachname'];
    } else {
        echo 
    "Es wurde kein Name angegeben";
    }
    if (!isset(
    $_POST['Postleitzahl'] or !is_numeric($_POST['postleitzahl'])) {
        echo 
    "Es wurde entweder keine oder eine gültige Postleitzahl angegeben";

    123123123 bedankt sich. 
    Sollte ein Tipp von mir geholfen haben, habe ich nichts gegen eine entsprechende Bewertung oder ein Danke und wenn ein Problem gelöst ist, dann den Beitrag bitte auch als erledigt markieren.

    Was ich gar nicht leiden kann sind User die es nicht für nötig halten auf Antworten zu reagieren, die Themen nicht als erledigt markieren und/oder die sich nicht für Hilfe bedanken.

  7. #7
    Avatar von 123123123
    123123123 123123123 ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    177
    Hey danke für die Hilfe!! Jetzt geht alles!
    So hab noch eine Frage:
    Wie kann den Namen von den angemeldeten User anzeigen? Mit $_SESSION oder? Also bei mir ist so '$_SESSION['user']'.
    Was muss ich noch übergeben, das da nicht nur "Array" steht?
    Danke!!
     

  8. #8
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Die Session starten
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  9. #9
    Avatar von 123123123
    123123123 123123123 ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    177
    Die ist schon gestartet!!
     

  10. #10
    Avatar von Yaslaw
    Yaslaw Yaslaw ist gerade online n/a
    tutorials.de Moderator
    Registriert seit
    Dec 2007
    Ort
    Winterthur(CH)
    Beiträge
    5.205
    Und der User wird in der Session registriert?
     
    ---------------------------------------------------------------------------------------------------
    item: Ich habe es mir aus gesundheitlichen Gründen abgewöhnt unformatierten Code zu lesen (Auch SQL-Statements kann man formatieren!)
    item: Tutorial: [PHP][MySQL] Debug Queries
    item: Schreibt mir keine PN mit Fragen die im Forum beantwortet werden können - ich mache kein persönliches coaching
    item: Bitte zur besseren Lesbarkeit PHP-Code in [PHP]...[/PHP], SQL in [SQL]...[/SQL], Visual Basic in [VB]...[/VB] etc. schreiben

  11. #11
    Avatar von 123123123
    123123123 123123123 ist offline Mitglied Gold
    Registriert seit
    Aug 2011
    Beiträge
    177
    also ich hab ja ein 'header.php'- Bereich und 'login.php' Bereich.
    Ich zeige dir mal, was dadrin steht:
    login.php
    PHP-Code:
    <?php 
    if(isset($_SESSION['user'])) {
        
    header("Location: startseite.php");
    }

    if(
    $_POST && $_POST['user_login'] && $_POST['user_passwort']) {
        
    $user $db->getQueryData("    SELECT * 
                                    FROM benutzerliste 
                                    WHERE user_login = '
    {$_POST['user_login']}
                                    AND user_passwort = '"
    .md5($_POST['user_passwort'])."'    
                                    LIMIT 1"
    );
        if(
    $user && $user[0]['user_login']) {
            
    $_SESSION['user'] = $user[0];
            
    header('Location: startseite.php');
        } else {

            
    $messages"Login fehlgeschlagen";
        }
    }

    ?>
    header.php
    PHP-Code:
    session_start();
        
    $messages "";
        if(isset(
    $_REQUEST['action']) && $_REQUEST['action'] == 'logout') {
            unset(
    $_SESSION['user']);
            
    $messages "Sie wurden erfolgreich ausgeloggt!";
        }
        if(empty(
    $_SESSION['user']) && basename($_SERVER['SCRIPT_NAME']) != "login.php") {
            
    header("Location: login.php");
        }
    ?> 
    So im header-Bereich will ich das einfügen!Danke!
     

Ähnliche Themen

  1. [Illustrator] Griffpunkt bei Pfeilen
    Von Rofi im Forum Vektor-Programme
    Antworten: 0
    Letzter Beitrag: 21.07.06, 08:13
  2. ID aufsteigend zu absteigend ändern
    Von 3ul3-daniel im Forum Relationale Datenbanksysteme
    Antworten: 4
    Letzter Beitrag: 29.05.06, 21:19
  3. Antworten: 2
    Letzter Beitrag: 01.06.05, 20:22
  4. Antworten: 2
    Letzter Beitrag: 21.02.05, 23:39
  5. Fireworks: Gerade Linie 1px breit mit Pfeilen?
    Von fourns im Forum Sonstige Grafik-Programme
    Antworten: 0
    Letzter Beitrag: 09.01.05, 22:50