#1 1. August 2007 Suchfunktion - funktioniert nicht wie gewollt! Hallo, ich bin es wieder einmal und habe ein neues Problem: Ich habe auf meiner Homepage eine Art Suchfunktion. Diese habe ich auf zwei Orten drin, zum Einen ist eine kleine Suchfunktion rechts, welche nur nach dem NAMEN eines Eintrages sucht, dann gibt es noch die erweiterte Suchfunktion, die nach NAMEN uvm. sucht. Mein Problem ist: Wenn ich einen MySQL Query nur für die kleine Suchfunktion einrichte, funktioniert der auch wie gewollt, dieser würde dann zB so aussehen: PHP: $name = $_GET [ 'name' ]; $suchen = "SELECT * FROM cards_cards WHERE name LIKE '% $name %'" ; $search = mysql_query ( $suchen ) OR die( mysql_error ()); Wie schon gesagt, das funktioniert auch schön, wenn ich das ganze dann mit while($row ... ) usw. mache. Allerdings funktioniert die erweiterte Suchfunktion nicht, da ich dort noch folgende Werte ausser NAMEN habe: Und jetzt kommt das Problem: Wie zum Teufel soll der MySQL Query aussehen, damit die Suche funktioniert? Ich habe bisher nur folgendes: PHP: $name = $_GET [ 'name' ]; $action = $_GET [ 'action' ]; $cat = $_GET [ 'edition' ]; $art = $_GET [ 'art' ]; $seltenheit = $_GET [ 'seltenheit' ]; $kartentext = $_GET [ 'kartentext' ]; $eigenschaft = $_GET [ 'eigenschaft' ]; $typ = $_GET [ 'typ' ]; $effekt = $_GET [ 'effekt' ]; $fusion = $_GET [ 'fusion' ]; $ritual = $_GET [ 'ritual' ]; $spirit = $_GET [ 'spirit' ]; $toon = $_GET [ 'toon' ]; $level = $_GET [ 'level' ]; $atk = $_GET [ 'atk' ]; $def = $_GET [ 'def' ]; $symbol = $_GET [ 'symbol' ]; $suchen = "SELECT * FROM cards_cards WHERE name LIKE '% $name %' AND cat = ' $cat ' AND art = ' $art ' AND seltenheit = ' $seltenheit ' AND text = ' $kartentext ' AND eigenschaft = ' $eigenschaft ' AND typ = ' $typ ' AND level = ' $level ' AND atk = ' $atk ' AND def = ' $def ' AND symbol = ' $symbol ' ORDER BY name ASC" ; $search = mysql_query ( $suchen ) OR die( mysql_error ()); Allerdings funktioniert der natürlich nicht ganz wie gewollt. Denn wenn ich jetzt einen Namen eingebe, kommt einfach kein Suchresultat mehr. Auch wenn ich irgendeinen anderen Wert ausfülle, kommt nix ... Wäre nett, wenn mir jemand helfen könnte, wer etwas nicht kapiert hat, ich erkläre gerne zweimal ... MfG + Multi-Zitat Zitieren
#2 1. August 2007 AW: Suchfunktion - funktioniert nicht wie gewollt! OR statt AND? + Multi-Zitat Zitieren
#3 1. August 2007 AW: Suchfunktion - funktioniert nicht wie gewollt! Wenn ich statt AND einfach OR in den Query einsetze, dann liest der mir bei der Suchanfrage ALLES aus, statt nur die gewünschten Dinge -.-' MfG + Multi-Zitat Zitieren
#4 1. August 2007 AW: Suchfunktion - funktioniert nicht wie gewollt! Huhu, naja du hast 3 logische Operatoren in PHP, versuche alle 3 durch AND - OR - XOR laut meinem logischen Verständnis müsste es XOR sein.... MfG Sancezz + Multi-Zitat Zitieren
#5 1. August 2007 AW: Suchfunktion - funktioniert nicht wie gewollt! ...oder wenns komplizierter sein soll, aber was sicher funzt: du machst immer eine if abfrage nachdem was übergeben wurde und dann immer PHP: if( isset( $_GET [ 'name' ]) && $_GET [ 'name' ] != "" ) { $suchen = "SELECT * FROM cards_cards WHERE name LIKE ' { $_GET [ 'name' ]} '....." ; } if( isset( $_GET [ 'name' ]) && $_GET [ 'name' ] != "" && $_GET [ 'action' ] != "" && isset( $_GET [ 'action' ])) { $suchen = "SELECT * FROM cards_cards WHERE name LIKE ' { $_GET [ 'name' ]} ' AND action LIKE ' { $_GET [ 'action' ]} '....." ; etc ... is zwar seh umfangreich am ende, aber es würde so funktionieren! =) gruß gl + Multi-Zitat Zitieren
#6 2. August 2007 AW: Suchfunktion - funktioniert nicht wie gewollt! um nicht heterolords vorschlag aufzugreifen: PHP: // "simulierte" post-variablen $post [ muh ] = 0 ; $post [ blubb ] = 3 ; $post [ bleh ] = "asd" ; $post [ foo ] = "" ; $k = 0 ; $sql = "SELECT * FROM blah WHERE " ;foreach( $post as $key => $value ) { if(isset( $value ) && ( $value > 0 || $value != "" )) { if( $k == 1 ) { $sql .= "AND " ; } $sql .= $key . "='" . $value . "' " ; $k = 1 ; }} ist schicker + Multi-Zitat Zitieren
#7 2. August 2007 AW: Suchfunktion - funktioniert nicht wie gewollt! @teh_boiiingerrr: Kannste mir deine Zeilen mal erklären? Ich bin erst seit wenigen Tagen im PHP Geschäft und würde schon gerne verstehen, was ich wie in mein Script integriere ... MfG + Multi-Zitat Zitieren
#8 2. August 2007 Zuletzt von einem Moderator bearbeitet: 15. April 2017 AW: Suchfunktion - funktioniert nicht wie gewollt! Metafragen - Readfirst - RR:Board <- lesen, wiederkommen + Multi-Zitat Zitieren
#9 2. August 2007 AW: Suchfunktion - funktioniert nicht wie gewollt! und wie siehts mit injections aus? + Multi-Zitat Zitieren
#10 2. August 2007 AW: Suchfunktion - funktioniert nicht wie gewollt! funktionieren damit wunderbar aber da kann man ja dann ein array aufstellen mit erlaubten $key's und dann mit in_array() prüfen obs rein darf und natürlich mit mysql_real_escape_string($value) absichern + Multi-Zitat Zitieren
#11 2. August 2007 AW: Suchfunktion - funktioniert nicht wie gewollt! Ich werd hier keine Codes verteilen, aber ich geb dir mal einen guten Ratschlag... da du noch PHP Anfänger bist ist es noch umso leichter, das zu lernen^^ Deinen Quellcode kommentieren. Ich selber kommentiere meine Codes sehr gerne. Bei einer 2.000 Zeilen kleinen Klasse sind davon mindestens 1.500 zeilen reiner Kommentar (na ok... bissl übertrieben^^) Zudem solltest du (vor allem bei Suchanfragen) immer eine logische reihenfolge der Abfragen überlegen. Was muss was haben, damit das und das gültig sind? <-- beispielhafter Pseudo-Satz POST dem GET vorziehen und SQL-Abfragen schöner machen. Nicht einfach nur schreiben, sondern den Query ein wenig "formatieren" PHP: $sql = "SELECT var.int as integer, var.row as nums, fo.getFROM variable var, footer foWHERE fo.get IN (string)ORDER BY abs((lon*lat)/2) DESC" ; So als Beispielquery mal genommen. Das vll erstmal ein bissl üben, dann würde dir auch eine Suchfunktion schon einfacher fallen. Dokumentation ist 90% Code... außer du weißt jedes Detail nach 8 Stunden noch^^ + Multi-Zitat Zitieren
#12 2. August 2007 AW: Suchfunktion - funktioniert nicht wie gewollt! ich würde dir noch raten, wenn du mit $_GET arbeitest die übergebenen Daten mit funktionen z.B. "strip_tags($_GET['....']) zu speichern. die funktion entfernt jeglichen code. + Multi-Zitat Zitieren
#13 2. August 2007 AW: Suchfunktion - funktioniert nicht wie gewollt! wie oben gesagt, die gehen wunderbar ich bau keine sicherheitsmechanismen in die codeschnipsel ein, die ich hier poste - dauert mir viel zu lang, es geht mir um die funktion an sich. + Multi-Zitat Zitieren