Problem mit PHP/MySQL-Datenbankabfrage und Dropdownliste

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

  • Problem mit PHP/MySQL-Datenbankabfrage und Dropdownliste

    Hallo Experte,

    ich habe ein Dropdownfeld mit Namen D1, wo ich mit
    HTML-Code:
    <option value="0 bis 12">Kategorie0-12 </option>
    insgesamt 13 Auswahlmöglichkeiten habe. Den ausgewählten Wert 0-12 übergebe ich an eine Variable $wert und will damit eine Datenbankabfrage machen, wie

    PHP-Code:
    if ($wert "0"$sSQL "SELECT * FROM tabelle WHERE id like 'A%' ORDER BY hauptkategorie, unterkategorie ASC";
    else

    // UND HIER KOMMT MEIN PROBLEM:
    $sSQL "SELECT * FROM tabelle WHERE hauptkategorie like '$wert' "
    Wenn ich mir $wert am Bildschirm anzeigen lasse, hat sie korrekterweise je nach Auswahl den Inhalt 0-12, jedoch werden keine Sätze meiner Datenbank ausgegeben. Ich habe es auch schon mit -hauptkategorie = $wert versucht, klappt aber auch nicht, auch nicht mit 2 x = oder mit "$wert".

    Was läuft hier verkehrt? Ich mache selten PHP, kenne mich daher nicht so gut aus und bin für jeden Tip dankbar,

    Gruss Ludwig
    Zuletzt geändert von LudwigSt; 29.04.2010, 20:21.

  • #2
    hi, wie empfängst du denn deinen wert..per get oder post?
    geht da leider nicht hervor..wie ich das sehe, bekommst du vom formular so garnichts..?!

    Kommentar


    • #3
      mit post, und ich erhalte für $wert eine Zahl von 0-12
      Zuletzt geändert von LudwigSt; 29.04.2010, 20:13.

      Kommentar


      • #4
        Hallo und willkommen im Forum,

        bitte benutze die PHP-Tags für PHP-Code und die anderen Code-Tags für andere Quelltexte (siehe Signatur).

        Deinen Beitrag kannst du mit dem Ändern-Button (unten rechts) und dann über Erweitert anpassen.

        Sind die Namen ("tabelle" und "hauptkategorie") korrekt? Wie sieht dein sonstiger Code aus (ca. 3 Zeilen vor und nach der geposteten Zeile)?

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          HTML-Code:
          <form method="POST" action="tabelle1.php">
            <p>
            <select size="1" name="D1">
            <option value="1">Auswahl1</option>
            <option value="3">Auswahl2</option>
            <option value="4">Auswahl3</option>
            <option value="6">Auswahl4</option>
            <option value="7">Auswahl5</option>
            <option value="9">Auswahl6</option> 
            <option value="11">Auswahl7</option>
            <option value="12">Auswahl8</option>
            <option value="0">alle</option>
           </select><input type="submit" value="Auswählen" name="B1"></p>
          </form>
          PHP-Code:
          <?php

          include "../php/xy.php";
          $wert 0;

          if (isset(
          $_POST['D1'])) $wert $_POST['D1'];


          echo 
          "Auswahl: "$wert;
           if (
          $wert "0"$sSQL "SELECT * FROM tabelle WHERE id like 'A%' ";
          else

          $sSQL "SELECT * FROM tabelle WHERE hauptkategorie like $wert ORDER BY unterkategorie, zweite_unterkategorie ASC";

          $rs mysql_query($sSQL) or die ("Fehler in der Datenbank-Abfrage!");

          echo
          "<table>";
          So sieht das ganze aus. Wenn ich statt $wert eine Zahl abfrage, dann klappt die Abfrage.
          Zuletzt geändert von LudwigSt; 29.04.2010, 20:22.

          Kommentar


          • #6
            Auf die Benutzung der Code-Tags habe ich dich freundlich hingewiesen. Bitte bearbeite deine Beiträge und benutze sie auch. Wenn du Hilfe suchst, halte dich an die Regeln!
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Kommentar


            • #7
              ... bin gerade dabei, es zu versuchen, klappt aber offensichtlich noch nicht so richtig, sorry

              Zitat von AmicaNoctis Beitrag anzeigen
              Hallo und willkommen im Forum,

              bitte benutze die PHP-Tags für PHP-Code und die anderen Code-Tags für andere Quelltexte (siehe Signatur).

              Deinen Beitrag kannst du mit dem Ändern-Button (unten rechts) und dann über Erweitert anpassen.

              Sind die Namen ("tabelle" und "hauptkategorie") korrekt? Wie sieht dein sonstiger Code aus (ca. 3 Zeilen vor und nach der geposteten Zeile)?

              Gruß,

              Amica
              tabelle und hauptkategorie sind die Datenbanktabelle und das entsprechende Feld - das ist korrekt
              Zuletzt geändert von AmicaNoctis; 29.04.2010, 20:11. Grund: Doppelposting

              Kommentar


              • #8
                Zitat von LudwigSt Beitrag anzeigen
                ... bin gerade dabei, es zu versuchen, klappt aber offensichtlich noch nicht so richtig, sorry
                (unten rechts am Beitrag), [Erweitert] (unten rechts), Code markieren, einen dieser Buttons drücken, je nachdem, ob es PHP-Code, HTML-Code oder anderer Code ist. Fertig.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  .. wusste nicht, dass ich den Code markieren muss - jetzt hat es wohl geklappt. Und wie mache ich das mit den 100 Zeichen?

                  Kommentar


                  • #10
                    Zitat von LudwigSt Beitrag anzeigen
                    Und wie mache ich das mit den 100 Zeichen?
                    Ich habe meinen Editor so eingestellt, dass er bei 100 Zeichen eine dünne senkrechte Linie macht, die ich freiwillig (auch privat für mich) nach Möglichkeit nicht überschreite. Wenn ich hier Code poste, schreib ich den vorher in meinem Editor, da ich dort auch automatische Einzüge, Makros und Funktionen nutzen kann, was viel bequemer ist. Das nur als Tipp.

                    Aber um auf deine Frage zurückzukommen: Entweder wie ich oder gut schätzen oder nachzählen.

                    Jetzt zur eigentlichen Frage: lass dir mal $sSQL ausgeben und wirf es mal PHPMyAdmin von Hand vor. Vielleicht findest du dann den Fehler oder siehst ihn gleich.
                    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                    Super, danke!
                    [/COLOR]

                    Kommentar


                    • #11
                      $sSQL gibt aus ...
                      PHP-Code:
                      where hauptkategorie 
                      ...
                      unter phpmyadmin funktioniert es nur mit
                      PHP-Code:
                      where hauptkategorie="0" 
                      , aber wenn ich mein Script ändere in
                      PHP-Code:
                      where hauptkategorie ="$wert
                      , erhalte ich eine Fehlermeldung: unexpected T_VARIABLE.

                      Es ist zum verzweifeln

                      Kommentar


                      • #12
                        Zitat von LudwigSt Beitrag anzeigen
                        unexpected T_VARIABLE.
                        Dafür gibt es das PHP-Handbuch, in dem steht drin, wie man Zeichenketten verknüpft und Anführungszeichen escaped: PHP: Strings - Manual
                        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                        Super, danke!
                        [/COLOR]

                        Kommentar


                        • #13
                          Zitat von LudwigSt Beitrag anzeigen
                          PHP-Code:
                          where hauptkategorie ="$wert
                          , erhalte ich eine Fehlermeldung: unexpected T_VARIABLE.
                          Hallöchen,

                          versuche es mal mit

                          PHP-Code:
                          <?php
                          where hauptkategorie 
                          '". $wert ."'
                          Das sollte dann klappen.

                          Gruß
                          Sven

                          Kommentar


                          • #14
                            Hallo Sven,
                            leider klappt das auch nicht. Wenn ich mir $sSQL ausgeben lasse, erhalte ich dann:
                            PHP-Code:
                            where hauptkategorie ='0' 
                            und nicht
                            PHP-Code:
                            where hauptkategorie "0" 
                            .

                            Kommentar


                            • #15
                              Das sollte auch mit den einfach Anführungszeichen funktionieren.

                              Ansonsten kannst du auch einfach ein Backslash vor den doppelten Anführungszeichen schreiben:

                              also \"

                              statt '". bzw "

                              Kommentar

                              Lädt...
                              X