php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 29.05.2010, 12:28  
Erfahrener Benutzer
 
Benutzerbild von pfump
 
Registriert seit: 29.03.2008
Beiträge: 576
pfump kann nur auf Besserung hoffen
Standard Suche ohne Groß-/Kleinschreibung

Hallo,

ich hab da ein kleines Problem. Und zwar geht es um die Suche.
Ich habe ein Suchformular erstellt. Dort gibt man einen Suchbegriff ein
und wenn man will eine Kategorie.

Danach wird die Suche ausgeführt. Mein Quelltext sieht so aus:
PHP-Code:
$sql="SELECT id, name, Kategorie, art, beschreibung FROM tips WHERE (name LIKE '%$suchwort%' OR beschreibung LIKE '%$suchwort%')";
if(
$art!="0"$sql.= "AND art LIKE '%$art%'"
Jetzt ist mir aber ein Problem aufgefallen.
Und zwar mit der Groß- und Kleinschreibung. Suche ich z.B. nach "sie",
wird nur ein DS gefunden. Suche ich aber nach "Sie", so sind es 4.

Scheinbar liegt das an der Schreibweise.
Hat jemand ne Idee was da falsch läuft?
pfump ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 29.05.2010, 12:33  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Du könntest eine Kollation mit der Endung _ci auswählen (case insensitive), z.B. utf8_unicode_ci.
Asipak ist offline   Mit Zitat antworten
Alt 29.05.2010, 13:18  
thomas_w
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von Asipak Beitrag anzeigen
Du könntest eine Kollation mit der Endung _ci auswählen (case insensitive), z.B. utf8_unicode_ci.
Interessante Sache, schon wieder was neues gelernt..!
Frage: Kann man die Collation einfach "mal so" bei einer gefüllten Tabelle umstellen, oder ist da mehr notwendig?


Zitat:
Zitat von pfump Beitrag anzeigen
Danach wird die Suche ausgeführt. Mein Quelltext sieht so aus:
PHP-Code:
$sql="SELECT id, name, Kategorie, art, beschreibung FROM tips WHERE (name LIKE '%$suchwort%' OR beschreibung LIKE '%$suchwort%')";
if(
$art!="0"$sql.= "AND art LIKE '%$art%'"
Die Vergleiche in der Datenbank beim LIKE sind Case-Sensitiv. Also "Sie" != "sie".

Eine alternative Lösung (zu der von @Asipak) wäre es, alle Vergeichswerte temporär entweder auf Gross- oder Kleinschrift umzuwandeln.

Beispiel für Umwandlung auf klein...

PHP-Code:
$suchwort strtolower($suchwort);
$art strtolower($art);

$sql="SELECT id, name, Kategorie, art, beschreibung FROM tips WHERE (LOWER(name) LIKE '%$suchwort%' OR LOWER(beschreibung) LIKE '%$suchwort%')";
if(
$art!="0"$sql.= "AND LOWER(art) LIKE '%$art%'"
so, hoffe mich nicht vertippt zu haben..

Grüße
Thomas
  Mit Zitat antworten
Alt 29.05.2010, 13:47  
Erfahrener Benutzer
 
Benutzerbild von pfump
 
Registriert seit: 29.03.2008
Beiträge: 576
pfump kann nur auf Besserung hoffen
Standard

Also ich hab das jetzt so:

PHP-Code:
$suchwort=strtolower($suchwort);

$sql="SELECT id, name, Kategorie, art, beschreibung FROM tips WHERE ((LOWER(name) LIKE '%$suchwort%' OR LOWER(beschreibung) LIKE '%$suchwort%')";
if(
$art!="0"$sql.= "AND (art LIKE '%$art%')";  
$sql.=")"
Jetzt ist es aber genau umgekehrt. Also gebe ich sie ein werden 4 Ds gefunden, gebe ich Sie ein gar keiner

Hat sich erledigt. Hatte einen Schreibfehler drin
Vielen Dank für die Hilfe. Jetzt klappts

Geändert von pfump (29.05.2010 um 13:51 Uhr).
pfump ist offline   Mit Zitat antworten
Alt 29.05.2010, 14:12  
Erfahrener Benutzer
 
Benutzerbild von pfump
 
Registriert seit: 29.03.2008
Beiträge: 576
pfump kann nur auf Besserung hoffen
Standard

Es gibt doch noch ein Problem.
Und zwar wenn ich als Suchwort z.B. öffnen eingebe.
Dann wird nichts gefunden, obwohl öffnen vorkommt.
Ich hab mir mein sql Statement mal ausgeben lassen:
Code:
SELECT id, name, Kategorie, art, beschreibung FROM tips WHERE  ((LOWER(name) LIKE '%�ffnen%' OR LOWER(beschreibung) LIKE '%�ffnen%'))
Obwohl ich
PHP-Code:
header('Content-Type: text/html; charset=utf-8');
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
angegeben habe.
Oder liegt das am POST?
pfump ist offline   Mit Zitat antworten
Alt 29.05.2010, 14:20  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Wohl eher am strtolower().

PHP: mb_strtolower - Manual

Ebenfalls brauchbar: http://de.php.net/mysql_set_charset.
Asipak ist offline   Mit Zitat antworten
Alt 29.05.2010, 14:35  
Erfahrener Benutzer
 
Benutzerbild von pfump
 
Registriert seit: 29.03.2008
Beiträge: 576
pfump kann nur auf Besserung hoffen
Standard

Also das mit den Umlauten funktioniert jetzt.
Jetzt ist aber das Problem, das wenn ich nach öffnen suche,
alle Einträge die öffnen oder Öffnen enthalten gefunden werden. Soweit so gut.
Jetzt will ich aber das das Suchwort farblich hervorgehoben wird. Das mache ich so:
PHP-Code:
preg_replace("#($suchwort)#i","<span style='font-weight:bold;background-color:yellow;'>\\0</span>",htmlspecialchars($row2["name"])) 
Das funktioniert auch an sich wunderbar. Nur bei den Umlauten nicht.
Suchwort = "öffnen"
Fehlende Hervorhebung bei "Öffnen"

Wenn kein Umlaut vorhanden ist, funktioniert es.

Geändert von pfump (29.05.2010 um 14:41 Uhr).
pfump ist offline   Mit Zitat antworten
Alt 29.05.2010, 15:00  
Moderator
 
Benutzerbild von Asipak
 
Registriert seit: 18.07.2005
Beiträge: 4.072
Asipak sorgt für eine eindrucksvolle AtmosphäreAsipak sorgt für eine eindrucksvolle Atmosphäre
Standard

Hast du auch den Zeichensatz für die Datenbankverbindung mit Hilfe von mysql_set_charset() auf utf8 gesetzt?

Vermutlich kann dir auch der u-Modifier helfen.
Asipak ist offline   Mit Zitat antworten
Alt 29.05.2010, 15:04  
Erfahrener Benutzer
 
Benutzerbild von pfump
 
Registriert seit: 29.03.2008
Beiträge: 576
pfump kann nur auf Besserung hoffen
Standard

Meine Datenbank hat als Kollation utf8_bin.
Brauch ich dann das mysql_set_charset() überhaupt?

Was meinst du mit
u-Modifier? Wo setze ich den ein?
pfump ist offline   Mit Zitat antworten
Alt 29.05.2010, 15:15  
Erfahrener Benutzer
 
Benutzerbild von pfump
 
Registriert seit: 29.03.2008
Beiträge: 576
pfump kann nur auf Besserung hoffen
Standard

Also ich hab das jetzt so geschrieben:

PHP-Code:
preg_replace("#($ersatz)#ui","<span style='font-weight:bold;background-color:yellow;'>\\0</span>",htmlspecialchars($row2["name"])) 
Das scheint auch zu funktionieren
pfump ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Suche einen Programmierer für ein kleines Skript Patrickhoch2 Beitragsarchiv 1 25.11.2009 23:36
Suche für Statische Seiten ? phpde Off-Topic Diskussionen 4 30.10.2009 13:13
[Erledigt] Suche - Wortmanipulation vaLLe PHP Tipps 2009 30 24.08.2009 20:17
Scriptsuche Suche browsergame-script kennykiller Scriptbörse 9 28.07.2009 16:58
eine Suche definieren Tyrra PHP Tipps 2009 14 10.07.2009 09:39
Scriptsuche [Erledigt] PHP Suche Sebo Scriptbörse 1 30.06.2009 19:46
Problem mit foren suche programmieren! litterauspirna PHP Tipps 2008 4 17.08.2008 12:17
Verbesserungsvorschläge: Design und Suche Manko10 Board-Support 3 15.06.2008 16:21
Suche in Office Dateien mit Index Beatbox Off-Topic Diskussionen 6 09.02.2007 15:34
Suche Alienuser PHP Tipps 2006 5 02.07.2006 16:31
suche funktion: suche alles zwischen notyyy PHP Tipps 2006 7 05.06.2006 20:46
[Erledigt] Erweiterung der Suche PHP Tipps 2007 2 01.12.2005 19:30
mal wieder eine suche lomtas Datenbanken 0 12.07.2005 11:03
Suche Job als Entwickler/Designer (Raum Bonn o. Telearbeit) Beitragsarchiv 23 01.03.2005 14:00
Suche mehrere Images........ Beitragsarchiv 7 10.01.2005 08:07

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
sql like groß kleinschreibung, http://www.php.de/datenbanken/68426-suche-ohne-grossy-kleinschreibung.html, suche groß oder klein, sql groß und kleinschreibung, beim suchen groß oder kleinschreibung, suche kleinschreibung, ich suche groß oder klein, php suchfunktion groß und kleinschreibung, php kleinschreibung, php suche kleinschreibung, php suche groß- kleinschreibung, das suchen groß, php suchwort groß und klein, auf der suche groß oder klein, php suche groß-kleinschreibung, suchen gross oder klein, suche groß oder kleinschreibung, suchen ohne groß kleinschreibung, suche groß klein, sql suche groß kleinschreibung

Alle Zeitangaben in WEZ +2. Es ist jetzt 10:22 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum