[SQL allgemein] Order by mit Variable

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

  • [SQL allgemein] Order by mit Variable

    Ich habe eine Webseite mit einem einfachen Formular.
    Die Formularwerte werden mit einem Senden Button ans php-Script übermittelt, welches einen sql Befehl enthält.

    Select *
    from Witze
    where Witzart like '$Witzart' AND Bewertung <= '$Wert'
    Order by 'Witzart';

    Jetzt möchte ich gerne bei der Tabelle, wo die Witze ausgegeben werden bei oberhalb jeder Spalte ein Bild mit einem Pfeil dazufügen. Wenn man auf das Bild drückt werden die Datensätze nach der Spalte sortiert
    _____________________
    |Witzart V | Bewertung V <--Pfeil zum Sortieren
    |--------------------------------
    |Witz 1 etc| 5.5 |

    Soll: Order by '$var1';
    1. Wie kann ich dem Script verständlich machen, dass beim Klick aufs Bild die Variable '$var1' geändert werden soll?
    2. Wie schaffe ich es, dass wenn ich aufs Bild drücke, nicht die Ausgabe der Datensätze verschwindet?

    Danke für die Tipps
    Zuletzt geändert von seppm; 17.09.2004, 00:58.

  • #2
    hallo,

    1) sofern ich das richtig verstanden habe, geht es primär über die Übermittlung der Order-Variable mittels $_GET, $_POST oder Javascript

    2) kapier ich nicht ?
    bei einer neu Sortierung ist eine Änderung der Position der einzelnen Datensätze unumgänglich
    oder warum sollten die Datensätze verschwinden, wenn Du auf's Bild klickst
    onMouseClick-Effekt ???

    sorry, aber irgendwie komm' ich mit der Fragestellung nicht ganz klar

    Kommentar


    • #3
      Genau, das Problem liegt warscheinlich beim Variablen übermitteln.

      Mit dem Drücken den Senden Buttons werden die Tabellen angezeigt.

      Beim Pfeil-Bild zum Sortieren habe ich die Variable mit href http://witze.php?var1=Witzart übergeben, das Problem ist warscheinlich, dass nur diese Variable übermittelt wird und deshalb keine Datensätze angezeigt werden.

      Wie schaffe ich es, dass ich beim Klicken aufs Bild auch die andern Variablen übermitteln kann?

      Kommentar


      • #4
        wohl sowas in die Richtung:
        PHP-Code:
        echo 'witze.php?var1=wasauchimmer&Witzart='.$_GET['Witzart'].'&Wert='.$_GET['Wert']; 
        [Test] MySQL cli Emulator

        Kommentar


        • #5
          Yep, vielen Dank!!

          Jetzt hab ich nur noch einen Schönheitsfehler:

          Ich habe ein Dropdown-Menü und einen Submit Knopf

          Wenn ich auf den Submitknopf drücke, wird das Dropdown-Menü wieder auf den Standartwert zurückgesetzt.

          Ich möchte aber, dass das Dropdown-Menü auch noch dem drücken des Submit-Knopfes seinen Wert beibehält.

          Geht das überhaupt?

          Kommentar


          • #6
            Geht das überhaupt?
            wie wärs mal mit ein wenig Code
            Woher sollen wir wissen wie Du Deine Selectbox erstellst?
            Mit Funktionen, Templates, manuell?

            Die Glaskugel sagt manuell,

            Du mußt ja nur den per GET/POST übermittelten Wert mit den einzelnen <option>'s der Selectbox vergleichen und bei Übereinstimmung ein " echo ' selected';" ...
            [Test] MySQL cli Emulator

            Kommentar


            • #7
              Du hast Recht: Hier ist das ganze Script:
              Das Dropdownmenü wird generiert.
              Wenn die Seite aufgerufen wird, ist beim Dropdownmenü "Fun" ausgewählt. Jetzt kann ich "Computer" wählen und Submit drücken.
              Der Witz wird angezeigt und das Dropdownmenü springt automatisch wieder auf "Fun".

              Ich möchte aber, dass das Menü auf "Computer" bleibt
              (Die Variable $Art soll auch erhalten bleiben, wenn z.B. 2x Submit gedrückt wird)



              PHP-Code:
              <html>
              <head>
                 <title>Witzdb</title>
              </head>
              <body>

              <form name="FormArt" method="post" action="index1.php">
              <select name="Art">
              <?php
                 $dbverb
              =mysql_connect("localhost""root"""); 
                 
              mysql_select_db("Witzdatenbank",$dbverb);
                 
              $res mysql_query("SELECT DISTINCT Witzart FROM witz");

                 while (
              $row mysql_fetch_array($res)) {
                 echo 
              "<option>"$row["Witzart"],"</option>";
                 }
              ?>
              </select>
              <input type="submit" name="Submit" value="Senden">
              </form>

              <table>
              <tr>
              <?php
                 $Art 
              $_POST[Art];
                 
              $dbverb=mysql_connect("localhost""root"""); 
                 
              mysql_select_db("Witzdatenbank",$dbverb);
                 
              $res mysql_query("SELECT Witztext FROM witz WHERE Witzart LIKE '$Art'");
                 while (
              $row mysql_fetch_array($res)) {
                 echo 
              "<td>",$row[Witztext],"</td>";
                 }
              ?>
              </tr>
              </table>
              </body>
              </html>
              <!--
              CREATE TABLE `witz` (
              `Witztext` varchar(50) NOT NULL default '',
              `Witzart` varchar(30) NOT NULL default '',
              `Bewertung` char(2) NOT NULL default ''
              ) TYPE=MyISAM;

              INSERT INTO `witz` VALUES ('der 1. Witz', 'Fun', '5');
              INSERT INTO `witz` VALUES ('der 2. Witz', 'Fun', '4');
              INSERT INTO `witz` VALUES ('der 3. Witz', 'Computer', '5');
              -->

              Kommentar


              • #8
                Du hast Recht: Hier ist das ganze Script:
                ja aber wozu?
                Du erstellst die <option>'s manuell und dazu hast Du doch auch schon einen Ansatz bzw. die Lösung bekommen? Probiere Sie doch erstmal einzubauen
                [Test] MySQL cli Emulator

                Kommentar


                • #9
                  Ja das mit $_Get[Art] funktioniert schon aber:

                  Das Ziel ist folgendes:
                  Zuerst selektiert der Benutzer die Witze, indem er auf Submit drückt.

                  Danach kann der User die selektierten Witze mit einem 2. Knopf nach der Bewertung Auf- und abwärts sortieren.

                  So wie es jetzt ist, kann man nur die Witze "Fun" Auf- und abwärts sortieren und nicht die Selektion "Computer". Denn sobald der Submitknopf gedrückt wurde, setzt es mir die Variable $Art auf "Fun" zurück.

                  Kommentar


                  • #10
                    ich meinte eher das hier
                    Du mußt ja nur den per GET/POST übermittelten Wert mit den einzelnen <option>'s der Selectbox vergleichen und bei Übereinstimmung ein " echo ' selected';" ...
                    ?
                    Oder ich habe Dich mißverstanden,

                    meinst Du mit
                    Denn sobald der Submitknopf gedrückt wurde, setzt es mir die Variable $Art auf "Fun" zurück.
                    die Variable $Art oder sprichst Du vom HTML Output also von der Selectbox?

                    Sonst stell es online, dann kann man es leichter nachvollziehen
                    [Test] MySQL cli Emulator

                    Kommentar


                    • #11
                      Ich hab jetzt die Lösung so, wie ich sie möchte.
                      Vielen Dank für eure Beiträge.

                      PHP-Code:
                      <form name="FormArt" method="get" action="index1.php">

                      <select name="Art">
                      <?php
                         $dbverb
                      =mysql_connect("localhost""root""");
                         
                      mysql_select_db("Witzdatenbank",$dbverb);
                         
                      $res mysql_query("SELECT DISTINCT Witzart FROM witz");
                         while (
                      $row mysql_fetch_array($res)) {
                         
                      $wert $row['Witzart'];
                         if(
                      $wert == $_GET['Art']){$tmp 'selected';}
                         echo 
                      "<option $tmp value=\"$wert\">$wert</option>";
                         if(
                      $tmp){unset ($tmp);}
                      }


                      ?>
                      </select>
                         <input type="submit" name="Submit" value="Senden">
                      </forms>
                      Zuletzt geändert von seppm; 18.09.2004, 23:13.

                      Kommentar

                      Lädt...
                      X