Suchscript erweitern
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
alt
aussehen
begreifen
beitrag
bit
eintrag
fragen
funktion
hilfe
kategorie
kleinschreibung
login
operator
relevanz
schreibung
schreibweise
spalten
stellen
suchbegriff
tabelle
-
wie kann ich bei meinen script einstehlen das es egal ist ob ich das wort gro? oder klein shriebe. derzeit funktioniert es nur wenn ich es klein schreibe (suchbegriff). ich hoffe ihr k?nnt mir weiter helfen.
$dbname = 'db'; $dbh = mysql_connect('mysql.lima-city.de','user','passwort'); mysql_select_db($dbname, $dbh); $sqlab = "select * from karten"; $sqlab .= " where name like '%" . $suchbegriff . "%'"; $res = mysql_query($sqlab); $num = mysql_num_rows($res); if ($num==0) echo "Keine Karte gefunden!"; while ($dsatz = mysql_fetch_assoc($res)) { echo "<table width=100% border=0 cellspacing=0 cellpadding=0> <tr> <td width=13%><font face=Verdana size=1> "; echo $dsatz['nr']; echo "</font></td><td width=70%>"; echo " <a href='#'><font face=Verdana size=1>". $dsatz['name']."</font></a>"; echo "</td> <td width=17%><font face=Verdana size=1>"; echo $dsatz['packung']; echo "</font></td> </tr> </table> "; }
Beitrag ge?ndert am 31.10.2005 19:09 von boyman
Beitrag ge?ndert am 31.10.2005 19:10 von boyman -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Verwandel doch einfach den eingegeben Begriff mit hilfe der funktion strtolower(); in kleinbuchstaben dann d?rfete es doch kein Problem sein, oder?
-
Verwandel doch einfach den eingegeben Begriff mit hilfe der funktion strtolower(); in kleinbuchstaben dann d?rfete es doch kein Problem sein, oder?
Verstehe jetzt nicht was du meinst! -
Dein Problem ist doch wenn man etwas gro? schreib das man dann ncihts findet und die funtkion die ich ganant habe macht alles zu kleinbuchstaben.
-
Dein Problem ist doch wenn man etwas gro? schreib das man dann ncihts findet und die funtkion die ich ganant habe macht alles zu kleinbuchstaben.
das stimmt, aber wo m?sste ich diese Funktion einbauen damit es funktioniert?
-
ich glaube das ist eher eine Frage, welche Collation du f?r deine Tabelle verwendest.
Geh mal in PHPmyAdmin und stelle bei der Suchtabelle die Collation latin1_general_ci ein. Damit m?sste MySQL dann auch ?ber Gro?- und Kleinschreibung hinwegsehen (funzt jedenfalls bei meinem Login problemlos, wenn ich mal gro? und ein anderes Mal Kleinschreibung verwende) -
das:
$sqlab .= " where name like '%" . $suchbegriff . "%'";
in das $sqlab .= " where lower(name) like lower('%" . $suchbegriff . "%')";
m?sste glaube ich gehen probiers mal in phpmyadmin, ich habe zurzeit leider keine volle db
mfg apollo13
P.s: warum im sql-string: da du dass sql feld name sowie deinen suchbegriff klein haben musst, um vergleichen zu k?nnen. -
So m?sste es (eigentlich) gehen:
... $sqlab = "select * from karten"; $sqlab .= " where name like '%" . strtolower($suchbegriff). "%'"; ...
Beitrag ge?ndert am 31.10.2005 19:37 von phattek -
strtolower() alleine reicht nicht. Um eine Suche wirklich unabh?ngig von der Schreibweise zu machen, muss sowohl das Suchwort, als auch der zu durchsuchende Text einheitlich klein- oder gro?geschrieben sein. F?r MySQL empfiehlt sich die Gro?schreibung:
http://dev.mysql.com/doc/refman/4.0/de/case-sensitivity-operators.html
http://dev.mysql.com/doc/refman/4.0/de/string-comparison-functions.html
So m?sste das dann aussehen:
$sqlab .= " where UPPER(name) like UPPER('%" . $suchbegriff . "%')";
MfG
alopex -
ich glaube das ist eher eine Frage, welche Collation du f?r deine Tabelle verwendest.
Geh mal in PHPmyAdmin und stelle bei der Suchtabelle die Collation latin1_general_ci ein. Damit m?sste MySQL dann auch ?ber Gro?- und Kleinschreibung hinwegsehen (funzt jedenfalls bei meinem Login problemlos, wenn ich mal gro? und ein anderes Mal Kleinschreibung verwende)
Danke es funktioniert. -
strtolower() alleine reicht nicht. Um eine Suche wirklich unabh?ngig von der Schreibweise zu machen, muss sowohl das Suchwort, als auch der zu durchsuchende Text einheitlich klein- oder gro?geschrieben sein. F?r MySQL empfiehlt sich die Gro?schreibung:
http://dev.mysql.com/doc/refman/4.0/de/case-sensitivity-operators.html
http://dev.mysql.com/doc/refman/4.0/de/string-comparison-functions.html
So m?sste das dann aussehen:
$sqlab .= " where UPPER(name) like UPPER('%" . $suchbegriff . "%')";
MfG
alopex
mein lower h?tte doch auch gereicht oder ;)
mfg apollo13 -
Sicher, ich war nur mal kurz vom Netz getrennt, als ich meinen Post geschrieben habe. Und nachdem ich wieder online war und "Absenden" gedr?ckt hatte, standen schon viele andere Posts (so auch deiner) da. Das liegt an dem bl?den "mybycall"-Internet-Provider.
-
@alopex
Was interessant w?re in diesem Fall:
Gibt es Unterschiede zwischen upper und lower von der Rechenzeit her?
mfg apollo13
//Edit:
Wie sucht man nach mehreren W?rtern, bei mir gehts immer nur mit einem ?
Beitrag ge?ndert am 31.10.2005 20:01 von apollo13 -
Glaube ich nicht. Bei alten 8-Bit-Zeichens?tzen wurde da fr?her nur ein Bit gesetzt (upper) oder gel?scht (lower). Heute wird wohl eine Tabelle abgegrast. Die Ausf?hrungszeit d?rfte lediglich davon abh?ngen, wie viele Zeichen konvertiert werden m?ssen. Da meist mehr Kleinbuchstaben als Gro?buchstaben verwendet werden, k?nnte LOWER() schneller fertig sein. Ob man den Unterschied messen kann, bezweifle ich allerdings.
Ich habe UPPER() nur genommen, weil es in der Online-Doku stand, und ich zu faul war, erst nachzuschauen, ob es ein LOWER() ?berhaupt gibt. -
Was m?sste ich jetzt machen, damit ich nach zwei suchkriterien suchen k?nnte.
Beispiel: Spalte a nach eine namen (zb. Florian) und gleichzeitig in Spalte b nach alter (zb. 17)
Hoffe das ihr verstanden habt was ich meine. -
naja, indem du ein and benutzt und die zweite where anh?ngst. Das machts dann aber so, dass es NUR funktioniert, wenn bedies ?bereinstimmt.
$sqlab .= " where UPPER(name) like UPPER('%" . $suchbegriff . "%') AND UPPER(alter) like UPPER('%" . $suchbegriff2 . "%')";
Ansonsten k?nnte man noch OR usw benutzen...^^ -
Wie sucht man nach mehreren W?rtern, bei mir gehts immer nur mit einem ?
Du kannst den Suchstring einfach an Hand der Leerzeichen trennen und dann mit jedem Wort einzeln eine Suche durchf?hren. Die Ergebnisse kannst du dann z.B. in ein Array schreiben und anschlie?end noch ?berpr?fen ob ein Eintrag mehrmals vorkommt, was ja dann hei?t, dass dieser Eintrag bei beiden (oder noch mehr) Suchbegriffen einen Treffer geliefert hat. Seine Relevanz ist dann also h?her und er sollte beim Anzeigen der Ergebnisse weiter oben stehen.
Soweit zur Theorie, die praktische Umsetzung ?berlasse ich dir. -
naja, indem du ein and benutzt und die zweite where anh?ngst. Das machts dann aber so, dass es NUR funktioniert, wenn bedies ?bereinstimmt.
$sqlab .= " where UPPER(name) like UPPER('%" . $suchbegriff . "%') AND UPPER(alter) like UPPER('%" . $suchbegriff2 . "%')";
Ansonsten k?nnte man noch OR usw benutzen...^^
wie w?rde da denn der pfad ausschaun?
.../suche.php?suchbegriff=Florian....
Und wie geht es da weiter? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage