Veröffentlicht 13. Juli 200619 j Hallo, ich hab eine Suche Programmiert, welche eine Datenbank durchsucht, allerdings funktioniert sie nur, wenn ich den kompletten Inhalt angebe, also, wenn ich zb nach "Michael" suche, dann spuckt dir die Funktion nur was aus, wenn ich "Michael" eintippe und nicht nur "Micha", oder so. Hat irgendwer ne Idee?
13. Juli 200619 j du machst deine suche wahrscheinlich so: SELECT feld FROM tabelle WHERE feld="Michael"; richtig? Schau dir mal den syntax von "LIKE" oder "HAVING" an: http://www.sql-und-xml.de/sql-tutorial/where-auswahl-von-daten-zeilen.html SELECT feld FROM tabelle WHERE feld LIKE "%Micha%"; Das %-Zeichen gilt hier als Platzhalter für beliebige Zeichen. mfg Eth
13. Juli 200619 j Hallo, danke erstmal für die Hilfe so sieht meine Suche zur zeit aus: if ($_POST['auswahl']==$row['titel']&&$_POST['check']=='ch_titel') ist für mich einfacher, da ich schon seit fast 3 jahren c programmiere edit: habs jetzt mal mit ($_POST['auswahl']==$row['%titel%']&&$_POST['check']=='%ch_titel%') probiert, aber das funktioniert nicht, so spuckt er mir gar keine ergebnisse aus
13. Juli 200619 j ($_POST['auswahl']==$row['%titel%']&&$_POST['check']=='%ch_titel%') Nee, nich so. Lieg ich richtig, das $row die Rückgabe der Datenbank enthält? Dann ist das schon zu spät. Irgendwo hast du ein SQL Statement, welches dann $row füllt. Genau dort, im SQL Statement, muss das % Zeichen rein. Also aus zB: $sql = "SELECT * FROM users WHERE name = '".$_POST['Eingabefeld']."';"; [/php] wird: [php] $sql = "SELECT * FROM users WHERE name like '%".$_POST['Eingabefeld']."%';"; Dann sollte es auch klappen
13. Juli 200619 j hmm, die zeile sieht bei mir folgendermasen aus: $sql = "SELECT * FROM cds";[/PHP] ich hab nicht wirklich viel ahnung von php (aber das kommt jetzt ja ). wenn ich mir des so anschaue, dann kopiert diese zeile meine komplette datenbank in das array $sql, oder? ich mein, ich hab hier erstmal vielleicht 10 datensätze, aber wenn des mal mehr werden, dann wird das ganze doch ziemlich lahm, oder?
13. Juli 200619 j hmm, die zeile sieht bei mir folgendermasen aus: $sql = "SELECT * FROM cds";[/PHP] ich hab nicht wirklich viel ahnung von php (aber das kommt jetzt ja ). wenn ich mir des so anschaue, dann kopiert diese zeile meine komplette datenbank in das array $sql, oder? ich mein, ich hab hier erstmal vielleicht 10 datensätze, aber wenn des mal mehr werden, dann wird das ganze doch ziemlich lahm, oder? Richtig, das wird sehr lahm. Daher solltest du die Filterung lieber direkt in der SQL-Abfrage durchführen
13. Juli 200619 j hmm, ok wieder bissl mehr verstanden :marine :bimei Des hier ist meine Ausgabe, wie ich sie jetzt umgeschrieben hab, funktioniert aber nicht. Die ausgeklammerten if Bedingungen ist meine alte Suchabfrage, die jetzt aber ja rausfällt da ich nicht mehr die komplette DB in $sql kopiere. die DB heißt cds (ist die Testdb von XAMP) in $POST gibts ch_titel, ch_interpret und ch_jahr (checkboxen) dann auswahl für den suchtext und noch genau/ungenau ob man genau bzw ungenau suchen möchte //Ausgabe while($row = mysql_fetch_assoc($result)) { if ($_POST['genau']=='genau') { $sql = "SELECT * FROM cds WHERE $_POST['auswahl'] LIKE $row['titel']"; //if (($_POST['auswahl']==$row['titel']&&$_POST['check']=='ch_titel')||($_POST['auswahl']==$row['interpret']&&$_POST['check']=='ch_interpret')||($_POST['auswahl']==$row['jahr']&&$_POST['check']=='ch_jahr')) echo "<tr><td>".$row['interpret']."</td><td>".$row['titel']."</td><td>".$row['jahr']."</td>"; } else { $sql = "SELECT * FROM cds WHERE $_POST['auswahl'] LIKE '%".$row['titel']."%';"; echo "<tr><td>".$row['interpret']."</td><td>".$row['titel']."</td><td>".$row['jahr']."</td>"; } }[/PHP]
13. Juli 200619 j ok, erstmal kommen keine fehler (aber auch noch keine suchergebnisee -> Query was empty, da tüftel ich noch ein wenig rum, aber kann mir einer folgendes erklären -> '%".$_POST['Eingabefeld']."%';"; woher kommen die ganzen hochkommatas und vorallem, warum 2x Semikolon? :eek edit: noch ne frage... bevor ich in die db schreiben will, muss ich sie schon komplett auslesen, oder? :nixblick: edit2: gnaaa, jetzt bringt der mir hier: while($row = mysql_fetch_assoc($result)) folgenden Fehler:Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in C:\Program Files\xampp\htdocs\sortieren.php on line 14 an was kann das liegen, ich hab an der zeile nichts verändert, ich les jetzt nur nicht mehr die komplette datenbank ein... hmm
13. Juli 200619 j Du hast einen Fehler in deinem Sql-Query. Wo genau der Fehler liegt kannst du dir mit mysql_error() ausgeben lassen http://www.php.net/mysql-error
13. Juli 200619 j mein sql-query ist doch die zeile hier, oder? $sql = "SELECT * FROM cds WHERE '".$_POST['auswahl']."' = '".$row['titel']."'; ";
13. Juli 200619 j wie kann man denn sein posting editieren?! also, ich raffs jetzt gar nimmer... :uff: mysql_error bringt keine ausgabe und an der zeile echo "<html><body>"; while($row = mysql_fetch_assoc($result))[/PHP] hab ich rein garnichts verändert, warum kann da auf einmal ein fehler kommen?! :nixblick: vorallem kommt der fehler auch, wenn ich die komplette zeile auskommentiere... so siehts jetzt aus: [PHP] //Verbindung aufbauen $link = mysql_connect ("127.0.0.1","root",""); if (!$link) die ("MySQL-Server Verbindung fehlgeschlagen"); echo 'Verbindung zum Server erfolgreich'; echo "<br>"; //Datenbank offnen if (!mysql_select_db(cdcol)) die ("Verbindung zur Datenbank fehlgeschlagen"); else echo 'Verbindung zur Datenbank erfolgreich<br><br>'; echo "<br><br />"; //Tabellenkopf echo "<table border=1>"; echo "<tr><td>Interpret</td><td>Titel</td><td>Jahr</td>"; //Ausgabe while($row = mysql_fetch_assoc($result)) { if ($_POST['genau']=='genau') { //$sql = mysql_query("SELECT * FROM cds WHERE $_POST['auswahl'] = $row['titel']"); //if (($_POST['auswahl']==$row['titel']&&$_POST['check']=='ch_titel')||($_POST['auswahl']==$row['interpret']&&$_POST['check']=='ch_interpret')||($_POST['auswahl']==$row['jahr']&&$_POST['check']=='ch_jahr')) echo "<tr><td>".$row['interpret']."</td><td>".$row['titel']."</td><td>".$row['jahr']."</td>"; } else { //$sql = mysql_query("SELECT * FROM cds WHERE '".$_POST['auswahl']."' LIKE '%".$_row['titel']."%';"); echo "<tr><td>".$row['interpret']."</td><td>".$row['titel']."</td><td>".$row['jahr']."</td>"; } } echo "</table></body></html>"; echo mysql_error($link); //Verbindung schliesen mysql_close($link); ?> Formular: <html> <body> <form action ="sortieren.php" method="post"><br> <input type="radio" name="check" value="ch_titel"> Titel <input type="radio" name="check" value="ch_interpret"> Interpret <input type="radio" name="check" value="ch_jahr"> Jahr <br> <input type="text" name ="auswahl"><br> <input type="submit" value="Anzeigen"> <input type="reset" value=" Abbrechen"><br> <input type="radio" name="genau" value="genau"> genau <input type="radio" name="genau" value="ungenau"> ungenau <br> </form> </body> </html>
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.