Ankündigung

Einklappen
Keine Ankündigung bisher.

order frage php & mysql

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • order frage php & mysql

    hallo zusammen,
    ich hoffe, dass mir einer von Euch hier helfen kann, ich bin nämlich der absolute Anfänger.

    Folgendes:

    Ich gebe Datensätze einer mysql datenbank über php aus. Angezeigt wird das ganze dann als Liste. Über dieser Liste stehen dann Überschriften, was darunter angezeigt wird, in meinem Fall: Datum, Name, Headline, Agentur, Bewertung

    Diese Punkte sind anklickbar und sortieren dann die Liste immer nach dem jeweiligen Kriterium. Jetzt zu meiner Frage:

    Ist es möglich, dass wenn ich z.B. den Link "Name" einmal anklicke, die Ergebnisse absteigend (DESC) angezeigt weden, und bei erneutem Klick auf den Link "Name" absteigend (DESC)?

    Momentan sieht das Script so aus:

    Code:
    $sql="select * from absagen ORDER BY ".$order." ASC limit $Anfangsposition,$Zeilen_pro_Seite";
    $result=mysql_query($sql);
    $result1=mysql_query("select id from absagen where id");
    
    $Anzahl=mysql_num_rows($result1);
    Danach erfolgt die Ausgabe der Textlinks, ich nehme der Übersichtlichkeit halber mal nur einen, nämlich Datum:

    Code:
    echo "<tr align=\"left\" valign=\"top\" bgcolor=\"#FFFFFF\">
    		 <td></td>
    				<td><a href=\"index.php?Anfangsposition=0&order=datum\" class=\"text\">Datum</a></td>
    Wie müsste dieser Link aussehen, bzw. was für eine Schleife muss ich einbauen, dass er zuerst ASC anzeigt, bei zweitem Klick DESC, bei drittem Klick wieder ASC usw.

    Ich hoffe Ihr könnt mir helfen, das brauche ich nämlich ganz unbedingt

    Vielen Dank für Eure Mühe

    P.S.: Anfangswert ist die Anzahl, wie viele Elemente aus der mysql Tabelle geholt werden, ist hier aber uninteressant

  • #2
    <a href=\"index.php?Anfangsposition=0&order=datum=>DE SC\"

    bei klick:
    $orderArray = explode('=>', $_GET['order']);
    $order = $orderArray[0];
    $by = $orderArray[1];
    ....
    sqlabfrage
    ....

    neugenerierung des links:
    if($by = 'DESC')
    {
    $by = 'ASC';
    }
    if($by == 'ASC')
    {
    $by = 'DESC';
    }

    <a href=\"index.php?Anfangsposition=0&order=datum=>$b y\"


    so als einfacher denkansatz

    mfg

    Kommentar


    • #3
      Danke...aber

      wie gesagt, ich bin halt ein waschechter Anfänger.

      was ich jetzt nicht ganz verstanden habe:

      ich soll also den link zweimal anlegen, einmal vor und einmal nach der sql abfrage?

      dann habe ich ja aber auch zwei reihen mit dem Link "datum" untereinander.

      Meintest du das dann so?:

      Code:
      echo "<a href=\"index.php?Anfangsposition=0&order=datum=>DESC\" class=\"text\">Datum</a>";
      
      $orderArray = explode('=>', $_GET['order']); 
      $order = $orderArray[0]; 
      $by = $orderArray[1]; 
      
      
      $sql="select * from absagen ORDER BY ".$order." ASC limit $Anfangsposition,$Zeilen_pro_Seite";
      $result=mysql_query($sql);
      $result1=mysql_query("select id from absagen where id");
      
      $Anzahl=mysql_num_rows($result1);
      
      if($by = 'DESC') 
      { 
      $by = 'ASC'; 
      } 
      if($by == 'ASC') 
      { 
      $by = 'DESC'; 
      } 
      
      echo "<a href=\"index.php?Anfangsposition=0&order=datum=>$by\"";
      Oder habe ich da was falsch verstanden?

      wie gesagt dann wird der link "datum" zweimal angezeigt untereinander. und die funktionalität geht auch nicht

      verzeih mir, aber ich stelle mich wahrscheinlich äusserst blöd an.

      hoffe du kannst mir nochmal helfen

      danke

      Kommentar


      • #4
        du gibst ja deinen link aus und möchtest das, wenn man nocheinmal darauf klickt die order by Methode
        entweder von ASC nach DESC wechselt oder von DESC nach ASC
        also klicken wir mal auf den link der in etwa so aussehen sollte:
        ( "<a href=\"index.php?Anfangsposition=0&order=datum=>AS C\"" )

        jetzt ruft dieser link die index.php auf mit den zugehörigen GET variablen
        unter anderem mit der GET variablen order, welche wir in der index.php abfragen und auswerten

        if(!empty($_GET['order']))
        {
        $orderArray = explode('=>', $_GET['order']);
        $order = $orderArray[0];
        $by = $orderArray[1];
        }

        Nun beinhaltet die variable $order demzufolge (datum) und die variable $by gleich ( na, naaa na was wohl ASC natürlich )
        nun können wir damit die SQL Abfrage gestalten

        $sql = mysql_query("SELECT * FROM absagen ORDER BY $order $by LIMIT $Anfangsposition,$Zeilen_pro_Seite");

        da der link dynamisch gestaltet werden muss mssen wir diesen link demzufolge verändern und neu generieren
        wenn vorher $by ASC beinhaltete soll nun das Gegenstck DESC drankommen

        if($by == 'DESC')
        {
        $by = 'ASC';
        }else
        {
        $by = 'DESC';
        }
        und Ausgabe des Links

        echo "<a href=\"index.php?Anfangsposition=0&order=datum=>$b y\"";

        ganz einfach zum testen auf dem localen system

        Datei index.php

        <?php
        if(!empty($_GET['order']))
        {
        $orderArray = explode('=>', $_GET['order']);
        $order = $orderArray[0];
        $by = $orderArray[1];
        }

        if($by == 'DESC')
        {
        $by = 'ASC';
        }else
        {
        $by = 'DESC';
        }

        echo "<a href=\"x.php?order=datum=>$by\">link order method = $by</a>";

        ?>

        auf ein einbringen der sqlabfrage hab ich gerade verzichtet das sollte aber null prob bereiten

        mfg

        Kommentar

        Lädt...
        X