MySQL mit Suche bringt falsche Ausgabe

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo Forum,

    ich versuche gerade Einträge in meinen Tabellen nach Schlagworten zu durchsuchen mit der Zeile

    Code
    $sqlpocc = "SELECT * FROM ham_poc WHERE msg LIKE '%".$_GET['search']."%'";

    Nun wird aber die ganze Tabelle mir entleert und mein Bildschirm geflutet. Daher dachte ich, setzte mal ein Limit...

    Code
    $sqlpocc = "SELECT * FROM ham_poc WHERE msg LIKE '%".$_GET['search']."%' LIMIT ".$_GET['idstart'].",".$_GET['idende']."";

    hier werden mir die ersten x zeilen entsprechend Ausgeben und danach kommen weitere Zeilen die ich nicht möchte und was dann nicht mit dem Schlagwort übereinstimmt.

    Was mache ich nun falsch.

    danke Lars

    • Offizieller Beitrag

    Bin da zwar schon ewig raus, aber mir scheint als vermischst Du hier PHP-syntax mit SQL.

    PHP
    $Suchwort = $_GET['search'];
    $Startposition = $_GET['idstart'];
    $Ausgabenmenge = $_GET['idende'];
    
    $sqlpocc = "SELECT * FROM ham_poc WHERE msg LIKE '%$Suchwort%' LIMIT '$Startposition,$Ausgabenmenge'";

    Natürlich ungetestet.

    • Offizieller Beitrag

    Was willst Du genau erreichen? Wenn Du nur Treffer mit genauem Suchwort willst, dann lass die %-Zeichen weg. Wenn Du Treffer willst, die mit dem Suchwort beginnen, dann setz das % dahinter. Wenn Du Treffer willst, die mit dem Suchwort enden, dann setz das %davor.


    //Edit MagicBird

    Btw. Die Bezeichnungen "idstart" und "idende" sind eigentlich nicht richtig, denn das erste ist die Nummer eines Treffers, ab dem die Ausgabe erfolgen soll und "idende" ist eigentlich die gewünschte Anzahl der Ausgaben. Das hat mit "id" nichts zu tun.

  • Ich habe bei mir ein POCASG PI nun laße ich die Meldungen aus dem HAMNET in die Tabelle schreiben, so das wenn ich auf arbeit bin kann ich meine Meldungen lesen, nun dachte ich mir kann diese Filtern nach Rufzeichen damit ich eben nicht Wetter oder Allgemeine Meldungen angezeigt bekomme also Gebe ich mein Rufzeichen ein und bekomme alles andere.

    Nehme ich das Limit heraus bekomme ich heraus bekomme ich alles zu meinem Rufzeichen das kann natürlich bei Wetter abfragen schon eine ganze Menge an zeilen sein.

    daher dachte ich eben die letzten Zeilen von x menge anzuzeigen.

    Lars

  • Hallo Magic Bird,

    probiere mal den Ansatz von Hyle aus #2 und setze einen festen Wert für die Anzahl Zeilen ein. Die Startposition sollte zunächst einmal keine Rolle spielen.

    Ich bin mir auch nicht sicher, was MYSQL mit den Hochkomma um die Einschränkung herum anstellt.

    Code
    $sqlpocc = "SELECT * FROM ham_poc WHERE msg LIKE '%$Suchwort%' LIMIT 10";

    Viel Erfolg

    Gruß Greenhouse

  • So ok also fehler irgendwo im script gefunden. habe alles bis auf die search abfrage gelöscht und dann kam genau wie hyle es geschrieben hat.

    vielen dank.

    $sqlpocc = "SELECT * FROM ham_poc WHERE msg LIKE '%$search%' LIMIT $idstart, $idende";

  • Code
    $sqlpocc = "SELECT * FROM ham_poc WHERE msg LIKE '%$Suchwort%' WHERE id BETWEEN $id_start AND $id_ende";

    oder

    Code
    $sqlpocc = "SELECT * FROM ham_poc WHERE msg LIKE '%$Suchwort%' AND id > $id_start LIMIT '$Ausgabenmenge' ORDER BY id";

    Offizieller Schmier und Schmutzfink des Forum.
    Warum einfach wenn's auch schwer geht ?

    Kein Support per PN !
    Fragen bitte hier im Forum stellen. So hat jeder etwas davon.

  • Guten Morgen,

    so wie Hyle Beitrag (#2) hat es wunderbar funktioniert, warum mir weitere Zeilen der Tabellen angezeigt werden muß ich mal untersuchen.

    Da werde ich mich in meinen IF Abfragen etwas vertan haben.

    vielen dank an euch...achja und dann muß ich das noch in MySQL Injection umbauen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!