Ankündigung

Einklappen
Keine Ankündigung bisher.

Hilfe bei Tabellenabfrage mit Like.....

Einklappen

Neue Werbung 2019

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

  • Hilfe bei Tabellenabfrage mit Like.....

    Hallo,

    Ich habe eine Tabelle Namens "wiki" und eine Spalte Namens "Begriff"

    $buchstabe wird der Datei übergeben. Ich möchte dann alle Begriffe aufgelistet haben, die mit diesem Buchstaben beginnen.

    Warum bekomme ich auf folgenden Code:
    PHP-Code:
      if (isset($buchstabe))
      {
      
    $abfrage "SELECT * FROM wiki WHERE Begriff Like "'.$buchstabe.'%"";
      
    $ergebnis mysql_query($abfrage);
      while(
    $row mysql_fetch_object($ergebnis))
         {
         echo 
    "$row->Begriff <br>";
         }
      } 
    folgenden Fehler: Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in ...../index.php on line 35 (wäre $abfrage...)

    Nächste Frage wäre: Wie kann ich es machen, dass mir von dem aufgelisteten Begriff die ID der Datei übergeben wird wenn ich ihn anklicke?

    Vielen Dank,

    Alex

  • #2
    Wenn du PHP-Code hier in [ php ] Tags setzt, dann ist dieser besser lesbar:

    PHP-Code:
    $abfrage "SELECT * FROM wiki WHERE Begriff Like "'.$buchstabe.'%""
    So sieht man auf den ersten Blick, dass $buchstabe rot ist, also irgendetwas mit den Hochkommas nicht stimmt.
    [PHP]if ($var != 0) {
    $var = 0;
    }[/PHP]

    Kommentar


    • #3
      OK - habe es korrigiert!

      Und wo ist mein Fehler?

      Kommentar


      • #4
        Also das war der angezeigte Fehler.
        Welche Fehlermeldung erhälst Du jetzt und wie sieht Dein Code jetzt aus?

        Kommentar


        • #5
          Habe an meinem Code noch nichts verändert - weiß leider nicht wo mein Fehler ist. Habe nur in meinem Anfangsthread den Code in [php] gesetzt. Fehler ist also immer noch der gleiche...

          Kommentar


          • #6
            PHP-Code:
            $x "abc"
            Die doppelten Anführungszeichen leiten ein Zeichenkettenliteral ein. Das geht genau so lange, bis ein weiteres (unmaskiertes) " auftaucht - dann ist das Literal zu Ende.
            PHP-Code:
            $abfrage "SELECT * FROM wiki WHERE Begriff Like " 
            Da, bei dem zweiten " ist das Literal zu Ende. Danach kommt ein ' und damit kann PHP an dieser Stelle nichts anfangen. Du hast die Anführungszeichen ziemlich sehr falsch gesetzt.
            Ich würde die Zeile löschen und noch mal neu tippen (und das mache ich oft wirklich so, einfach weg und nochmal)

            Kommentar


            • #7
              PHP-Code:
              $abfrage "SELECT * FROM wiki WHERE Begriff LIKE '" $buchstabe "%'"
              (Bevor du ganz und gar verzweifelst).

              Wenn du zum Programmieren einen Editor mit Syntaxhilighting benutzt, dann fallen solche Hochkomma-Fehler sofort ins Auge.

              BTW:
              SELECT * ist Schrott
              - schreib die benötigten Spalten immer aus: SELECT vorname,name,strasse,plz,ort FROM adressen
              [PHP]if ($var != 0) {
              $var = 0;
              }[/PHP]

              Kommentar


              • #8
                Danke, aber so gings es auch nicht!! Habe nach langen probieren diese Variante "positiv" getestet!

                PHP-Code:
                $ergebnis mysql_query("SELECT * FROM wiki WHERE Begriff like '$buchstabe%'"); 
                Sicherlich sollte man nicht alle Spalten einer Tabelle auswählen, aber hier habe ich nur 5 Spalten und ich möchte mit 4 davon arbeiten - daher habe ich alle ausgewählt. Grundsätzlich hast du aber natürlich Recht.

                Alex

                Kommentar


                • #9
                  Danke, aber so gings es auch nicht!!
                  Das allerdings halte ich für ein Gerücht.
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #10
                    OK, hatte das %-Zeichen eine Stelle weiter links...

                    So geht es auch. Ist mein Code eigentlich richtig oder bekomme ich damit irgendwann Probleme? Habe es nur durch probieren hin bekommen, also es basiert nicht auf "Wissen"!?!? Aber so läuft es problemlos und es sind ein paar Zeichen weniger.

                    Grüße,

                    Alex

                    Kommentar


                    • #11
                      Kommt darauf an, was $buchstabe genau ist.
                      Testest Du irgendwo ab, dass es sich um genau ein Zeichen aus dem Bereich a-z (eventuell noch Ziffern und Umlaute) handelt?

                      Kommentar


                      • #12
                        Ich wollte das nicht noch komplizierter machen. Natürlich hast du recht - wir haben hier eine Usereingabe, und die ist gefälligst zu verifizieren:

                        PHP-Code:
                        if ( $buchstabe ==  '' ) {
                          
                        $buchstabe 'a';
                        }
                        $buchstabe $buchstabe[0];
                        $abfrage "SELECT * FROM wiki WHERE Begriff LIKE '" $buchstabe "%'"
                        [PHP]if ($var != 0) {
                        $var = 0;
                        }[/PHP]

                        Kommentar


                        • #13
                          Wenn da keine weiteren Maßnahmen eingebaut sind, kann ich immer noch die Abfrage zusammenbrechen lassen durch ein einzelnes '
                          Code:
                          SELECT * FROM wiki WHERE Begriff LIKE ''%'
                          Oder alle Einträge abrufen mit %
                          Code:
                          SELECT * FROM wiki WHERE Begriff LIKE '%%'
                          Beides nicht unbedingt dramatisch schlimm, aber ...

                          Kommentar


                          • #14
                            oder
                            ' OR 1=1 OR '
                            [COLOR="#F5F5FF"]--[/COLOR]
                            [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                            „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                            [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                            [COLOR="#F5F5FF"]
                            --[/COLOR]

                            Kommentar


                            • #15
                              Das wird ja schon durch
                              $buchstabe = $buchstabe[0];
                              entschärft.

                              Kommentar

                              Lädt...
                              X