order by problem

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

  • order by problem

    hallo ich habe mir mir mal den nutzen von schattenbaum gemacht.
    nun bin ich am ende des seitenlateiens angekommen und brauche noch einmal eure hilfe.

    Habe mir ein telefonregister gebastelt.
    alles klappt. nur das sortieren bekomme ich nicht hin.
    ich meine schon, aber nicht das ändern der sortierungen
    z.b nach name oder telefonnummer etc.

    hatte mir das so vorgestellt das man auf der übersicht auf name klickt
    und er das dann sortiert, nur funktioniert das nicht..
    bisher habe ich das automatisch machen lassen, aber will ich nicht.

    KLICK HIER

    mein bisheriges srcipt schaut so aus :

    PHP-Code:

    <table width="100%" border="1">
      <tr>
        <td width="76%"><span class="Stil1"> Telefonregister</span></td>
        <td width="24%"><div align="right"><a href="hinzu.php" class="Stil1">Neuen Datensatz hinzuf&uuml;gen </a></div></td>
      </tr>
    </table>
    <br>
    <br>
    <table width="900" border="1" align="center">
      <tr>
        <td width="109" class="Text1">Name</a></td>
        <td width="171" class="Text1">Vorname</td>
        <td width="168" class="Text1">Telefonnummer</td>
        <td width="173" class="Text1">Fax</td>
        <td width="76" class="Text1">ID</td>
        <td width="163" class="Text1">L&ouml;schen</td>
      </tr>
    </table><br>
    <?
    # Kontakt zur Datenbank
    include "config.php";

    ## Daten abfragen
    $abfrage = "SELECT Name, Vorname, Telefonnummer, Fax, ID FROM Telefonregister";

    ## Daten in eienr Variable speichern
    #$ergebnis = mysql_query ($abfrage);


    # Daten abfragen + sortieren
    $ergebnis = mysql_query ($abfrage);

    $abfrage = "SELECT * FROM Telefonregister ORDER BY Name";
    $abfrage = "SELECT Name, Vorname, Telefonnummer, Fax, ID FROM Telefonregister";
    $ergebnis = mysql_query($abfrage);
    while($row = mysql_fetch_object($ergebnis))


    # Daten in Tabelle ausgeben

    {
    echo "

    <html>
    <table width=\"900\" border=\"1\" align=\"center\">
      <tr>
        <td width=\"109\" class=\"Text1\">$row->Name</td>
        <td width=\"171\" class=\"Text1\">$row->Vorname</td>
        <td width=\"168\" class=\"Text1\">$row->Telefonnummer</td>
        <td width=\"173\" class=\"Text1\">$row->Fax</td>
        <td width=\"76\" class=\"Text1\">$row->ID</td>
        <td width=\"163\" class=\"Text1\">
        <form action=\"loeschen.php\" method=\"post\" class=\"Stil1\">
            <input name=\"loeschdaten\" type=\"text\" class=\"Text1\" id=\"loeschdaten\" value=\"$row->ID\" size=\"3\">
    <input name=\"submit\" type=\"submit\" class=\"Text1\" value=\"Löschen\">
        </form></td>
      </tr>
    </table>
    </html> ";
    }
    ?>
    könnt ihr mir helfen ? tipps geben ? und bitte nicht stichwortartig, ich bin anfänger

  • #2
    Wenn ich dich richtig verstanden habe, dann musst du das vom Prinzip her so machen:

    Die Tabellenköpfe, nach denen man sortieren können soll (Name, Tel-Nr. usw.) müssen jeweils einen $_GET Parameter haben, der deinem Script mitteilt, ob und wonach sortiert werden soll.
    Beispiel:
    PHP-Code:
    ...
    <
    td width="109" class="Text1"><a href="?order_by=name">Name</a></td>
    ... 
    Dein Script fängt nun $_GET['order_by'] ab und kann die SELECT-Abfragen dementsprechend ausführen.

    Vereinfachtes Beispiel:
    PHP-Code:
    $q sprintf("SELECT * FROM table_name ORDER BY '%s'"$_GET['order_by']);

    $result mysql_query($q)
        or die(
    mysql_error());
    ); 
    Nieder mit der Camel Case-Konvention

    Kommentar


    • #3
      ahja, ales klar, habs verstanden.. vielen dank !


      Gruß, Stefens

      Kommentar


      • #4
        hatte es gerade getestet, hat aber net funktioniert..

        also ich habe als link wie du schon als beispiel gepostet hast verwendet

        und im script hab ich dem beispiel hinzugefügt und dieses %s mit Name ersetzt , aber auch ohne das zu ersetzen klappt es net :/

        was mach ich nun schon wieder falsch ?

        Kommentar


        • #5
          Was genau funktioniert denn nicht? So kann ich dir nicht sagen, woran's hapert. Und poste auch gleich mal den neuen Codeausschnitt.
          Nieder mit der Camel Case-Konvention

          Kommentar


          • #6
            sry, erst jetzt gesehen..

            ja er sortiert eben nicht...

            hier ist der neue komplette code

            PHP-Code:
            <link href="css/index.css" rel="stylesheet" type="text/css">
            <style type="text/css">
            <!--
            .Stil1 {
                font-size: 12px;
                font-weight: bold;
            }
            -->
            </style>
            <table width="100%" border="1">
              <tr>
                <td width="76%"><span class="Stil1"> Telefonregister</span></td>
                <td width="24%"><div align="right"><a href="hinzu.php" class="Stil1">Neuen Datensatz hinzuf&uuml;gen </a></div></td>
              </tr>
            </table>
            <br>
            <br>
            <table width="900" border="1" align="center">
              <tr>
                <td width="109" class="Text1"><a href="?order_by=Name">Name</a></a></td>
                <td width="171" class="Text1"><a href="?order_by=Vorname">Vorname</a></td>
                <td width="168" class="Text1">Telefonnummer</td>
                <td width="173" class="Text1">Fax</td>
                <td width="76" class="Text1">ID</td>
                <td width="163" class="Text1">L&ouml;schen</td>
              </tr>
            </table><br>
            <?
            # Kontakt zur Datenbank
            include "config.php";

            ## Daten abfragen
            $abfrage = "SELECT Name, Vorname, Telefonnummer, Fax, ID FROM Telefonregister";

            ## Daten in eienr Variable speichern
            #$ergebnis = mysql_query ($abfrage);


            # Daten abfragen
            $ergebnis = mysql_query ($abfrage);
            # sortieren
            #sortieren nach ################################### manuelles sortieren

            $q = sprintf("SELECT * FROM Telefonregister ORDER BY 'Name'", $_GET['order_by']);

            $result = mysql_query($q)
                or die(mysql_error());


            ####################################################






            $abfrage = "SELECT Name, Vorname, Telefonnummer, Fax, ID FROM Telefonregister";
            $ergebnis = mysql_query($abfrage);
            while($row = mysql_fetch_object($ergebnis))






            # Daten in Tabelle ausgeben

            {
            echo "

            <html>
            <table width=\"900\" border=\"1\" align=\"center\">
              <tr>
                <td width=\"109\" class=\"Text1\">$row->Name</td>
                <td width=\"171\" class=\"Text1\">$row->Vorname</td>
                <td width=\"168\" class=\"Text1\">$row->Telefonnummer</td>
                <td width=\"173\" class=\"Text1\">$row->Fax</td>
                <td width=\"76\" class=\"Text1\">$row->ID</td>
                <td width=\"163\" class=\"Text1\">
                <form action=\"loeschen.php\" method=\"post\" class=\"Stil1\">
                    <input name=\"loeschdaten\" type=\"text\" class=\"Text1\" id=\"loeschdaten\" value=\"$row->ID\" size=\"3\">
            <input name=\"submit\" type=\"submit\" class=\"Text1\" value=\"Löschen\">
                </form></td>
              </tr>
            </table>
            </html> ";
            }
            ?>
            Zuletzt geändert von stefens; 26.11.2006, 17:15.

            Kommentar


            • #7
              So wie ich das sehe, machst du da einen ganzen Haufen unnötiger Abfragen, oder nicht? Die ersten beiden SELECTs werden nirgends benötigt, die abgefragten Datensätze werden nichtmal mit einem mysql_fetch_* abgerufen. Das macht zumindest so keinen Sinn.

              Also fangen wir nochmal bei dem Funktionsprinzip deines Scripts an:
              Du möchtest eine Tabelle generieren und dem Benutzer die Möglichkeit geben, diese Tabelle nach einem bestimmten Kriterium zu sortieren. Demnach überprüfst du erstmal, ob ein bestimmtes Sortierungskriterium als Parameter übergeben wurde. Falls ja, dann führst du die Abfrage mit diesem Parameter durch. Falls nein, dann nach einem Standard-Parameter. Dein Script sollte im Ganzen also nur eine Abfrage benötigen.
              Nieder mit der Camel Case-Konvention

              Kommentar


              • #8
                wie jetzt, versteh ich nicht.
                mein script macht doch bisher nur die abfrage um anschließend die ergebnisse anzeigen lassen zu können oder nicht ?!

                Kommentar


                • #9
                  Schau dir dein Script doch nochmal an. Du führst insgesamt 3 SELECTs aus, richtig? Und der einzige SELECT davon, der Sinn macht, ist der letzte. Wieso? Du fragst mit den ersten beiden SELECTs Datensätze ab, die du doch gar nicht weiter verwendest. Ein SELECT ohne anschließendem mysql_fetch_* macht keinen Sinn, da du mit den abgefragten Datensätze nicht arbeiten kannst. Bei dem letzten SELECT hingegen wendest du mysql_fetch_object an, damit du anschließend durch die Ergebnisse iterieren und die Tabelle generieren kannst. Und nur das macht Sinn. Also streich die anderen Abfragen.

                  EDIT:
                  Und schon brauchst du nur noch dafür sorgen, dass deine Abfrage entweder nach einem Kriterium sortiert, das der Benutzer übergeben hat, oder nach einem Standard.

                  Pseudo-Code:

                  WENN parameter order_by gesetzt DANN
                  abfrage nach diesem kriterium ausführen
                  SONST
                  abfrage nach einem standard-kriterium ausführen (z.b. name)

                  Zuletzt geändert von Griecherus; 26.11.2006, 17:34.
                  Nieder mit der Camel Case-Konvention

                  Kommentar


                  • #10
                    ups, das ist mir wohl beim rumbasteln doppelt gekommen *g*
                    naja, es hat ja nicht wehgetan *g* danke...

                    also hier wäre dann das ergebnis dazu, und wie klappt das dann mit dem sortieren ?

                    PHP-Code:

                    <?
                    # Kontakt zur Datenbank
                    include "config.php";

                    # Daten abfragen    ## Daten in eienr Variable speichern/// #$ergebnis = mysql_query ($abfrage);
                    $abfrage = "SELECT Name, Vorname, Telefonnummer, Fax, ID FROM Telefonregister";
                    $ergebnis = mysql_query($abfrage);
                    while($row = mysql_fetch_object($ergebnis))
                    # Daten in Tabelle ausgeben

                    {
                    echo "

                    <html>
                    <table width=\"900\" border=\"1\" align=\"center\">
                      <tr>
                        <td width=\"109\" class=\"Text1\">$row->Name</td>
                        <td width=\"171\" class=\"Text1\">$row->Vorname</td>
                        <td width=\"168\" class=\"Text1\">$row->Telefonnummer</td>
                        <td width=\"173\" class=\"Text1\">$row->Fax</td>
                        <td width=\"76\" class=\"Text1\">$row->ID</td>
                        <td width=\"163\" class=\"Text1\">
                        <form action=\"loeschen.php\" method=\"post\" class=\"Stil1\">
                            <input name=\"loeschdaten\" type=\"text\" class=\"Text1\" id=\"loeschdaten\" value=\"$row->ID\" size=\"3\">
                    <input name=\"submit\" type=\"submit\" class=\"Text1\" value=\"Löschen\">
                        </form></td>
                      </tr>
                    </table>
                    </html> ";
                    }
                    ?>

                    Kommentar


                    • #11
                      Schau dir mal das Edit meines letzten Postings an.
                      Nieder mit der Camel Case-Konvention

                      Kommentar


                      • #12
                        ist das dann wieder sone if und else sache ?
                        hm, also ich steh auf der stelle und weiß nicht weiter :/

                        Kommentar


                        • #13
                          Sicher ist es das. Und du solltest dich schnell mit diesen If-Else-Sachen anfreunden, denn ohne wirst du so schnell nichts verwirklichen können. Das ist einfach elementar.
                          Mein Tipp: PHP-Manual Online Dokumentation - Kontroll-Strukturen

                          Du bräuchtest in etwa das:
                          PHP-Code:
                          $sort_by = (isset($_GET['sort_by']) ? $_GET['sort_by'] : 'name');
                          // ist "kurzschreibweise" von

                          if (isset($_GET['sort_by'])) {
                              
                          $sort_by $_GET['sort_by'];
                          } else {
                              
                          $sort_by 'name'// das kriterium, nach dem du standardmäßig sortieren möchtest

                          Ich lege dir trotzdem nah, dir die Doku gut durchzulesen, denn hier werden dir in der Regel keine Fertiglösungen geboten und du möchtest dir ja auch selbst helfen können.
                          Nieder mit der Camel Case-Konvention

                          Kommentar


                          • #14
                            ja, das werde ich, ich war ja gerade schon dabei mit diesem if und else zeugs, aber ich bekomme es net hin.. auch mit deinem script nicht..

                            braucht mein html code noch ein formular tag ?
                            und wie lautet der code für dieses variablen selbst übergeben.
                            ich erinnter mich an etwas mit self php oder so ähnlich.

                            aber verstehen tu ich es immernoch net wirklich

                            Kommentar


                            • #15
                              Ich denke es ist am besten, wenn du dich erstmal mit dem Grundlagen auseinandersetzt und es dann nochmal versuchst. Alles, was du wissen musst, um dein Script zum laufen zu bringen, habe ich schon gepostet, du brauchst jetzt also nur noch ein halbwegs solides Grundlagenwissen, dann kommt das Verständnis für das Ganze fast wie von allein. Alles andere wird dir auf die Dauer nicht weiterhelfen, schon gar nicht, wenn ich dir dein Script schreibe.
                              Nieder mit der Camel Case-Konvention

                              Kommentar

                              Lädt...
                              X