php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 26.01.2012, 16:28  
Neuer Benutzer
 
Registriert seit: 24.01.2012
Beiträge: 5
PHP-Kenntnisse:
Anfänger
ecke09 befindet sich auf einem aufstrebenden Ast
Standard Mysql LIKE Verzweiflung

Guten Tag,
Ich verharre an folgendem Problem:

PHP-Code:

$sql 
"SELECT first_name, last_name, register_date FROM standard_user WHERE first_name='$eingabe'";

$res mysql_query$sql );

while( 
$a mysql_fetch_array$res ) ) {
  echo 
$a['first_name'] .' - '$a['last_name'] .' - '$a['register_date'] .'<br/>';
  
$i=true;
}

if(!isset(
$i)) { 

echo 
"Freund nicht gefunden !";
echo 
"<br />"
echo 
"Deine Freunde schon dabei?";
echo 
"<br />"
echo 
"Tippe einen Freund in das Suchfeld oben ein !";
}

funktioniert nach langer Bastel Arbeit wunderbar.
Wenn ich z.B nach Christian suche werden mir alle Datensätze mit Vornamen Christian ausgegeben
Wenn ich jetzt aber die Mysqlsuche durch diese ersetze:

PHP-Code:
$sql "SELECT first_name, last_name, register_date FROM standard_user WHERE first_name LIKE '%$eingabe%'"
und nach: "unChristian" oder "Christian Bale" suche dann liefert es mir keine Ergebnisse mehr

Vielleicht kann mir jemand helfen

Danke schonmal
ecke09 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 26.01.2012, 16:43  
Neuer Benutzer
 
Registriert seit: 20.01.2012
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
Rafjax befindet sich auf einem aufstrebenden Ast
Standard

Hi, also im Prinzip funktioniert das so.

Edit: Die Lösung steht unten.

Geändert von Rafjax (26.01.2012 um 16:58 Uhr).
Rafjax ist offline   Mit Zitat antworten
Alt 26.01.2012, 16:49  
Erfahrener Benutzer
 
Benutzerbild von jspit
 
Registriert seit: 19.08.2011
Beiträge: 701
PHP-Kenntnisse:
Anfänger
jspit wird schon bald berühmt werden
Standard

Zitat:
Zitat von ecke09 Beitrag anzeigen
und nach: "unChristian" oder "Christian Bale" suche dann liefert es mir keine Ergebnisse mehr
Das ist auch richtig so. Mit LIKE '%$eingabe%' suchst du nach "irgenendwelchenZeichen"unChristian"irgenendwelche nZeichen".
Deine Eingabe muß irgendwo im String sein. 'hris' würde er finden.
jspit ist offline   Mit Zitat antworten
Alt 26.01.2012, 16:54  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Na dann probiere mal aus was dein Script macht wenn du nach "Petra's Wollstübl" suchst.
__________________
Warum denkt mein Hund eigentlich immer dann, wenn es an der Tür klingelt, es sei für ihn?
Wolla ist offline   Mit Zitat antworten
Alt 26.01.2012, 16:57  
Neuer Benutzer
 
Registriert seit: 20.01.2012
Beiträge: 4
PHP-Kenntnisse:
Fortgeschritten
Rafjax befindet sich auf einem aufstrebenden Ast
Standard

Oh da ist mein Lösungsansatz sogar falsch, da ich zu schnell gelesen habe.
Rafjax ist offline   Mit Zitat antworten
Alt 26.01.2012, 16:58  
Erfahrener Benutzer
 
Benutzerbild von Arne Drews
 
Registriert seit: 22.04.2009
Beiträge: 3.486
PHP-Kenntnisse:
Anfänger
Arne Drews wird schon bald berühmt werdenArne Drews wird schon bald berühmt werden
Arne Drews eine Nachricht über Skype™ schicken
Standard

Der ganze (Vor)-Name würde auch gehen "Christian".
Aber wenn Du nach Vor- und Nachnamen suchst (Christian Bale), kannst Du nicht erwarten, daß er etwas ausspuckt, denn Du setzt LIKE nur auf first_name an!
__________________
Phantasie ist wichtiger als Wissen, denn Wissen ist begrenzt.
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.
Albert Einstein
Arne Drews ist offline   Mit Zitat antworten
Alt 26.01.2012, 17:03  
Erfahrener Benutzer
 
Registriert seit: 18.01.2009
Beiträge: 128
PHP-Kenntnisse:
Fortgeschritten
CPCoder wird schon bald berühmt werden
Standard

Zitat:
Zitat von ecke09 Beitrag anzeigen
Wenn ich jetzt aber die Mysqlsuche durch diese ersetze:

PHP-Code:
$sql "SELECT first_name, last_name, register_date FROM standard_user WHERE first_name LIKE '%$eingabe%'"
und nach: "unChristian" oder "Christian Bale" suche dann liefert es mir keine Ergebnisse mehr

Vielleicht kann mir jemand helfen

Danke schonmal
Dieses Verhalten ist schon korrekt!

Gehen wir davon aus in der Datenbank steht in der Spalte "first_name" ein (oder mehrere) User mit dem Namen "Christian" drin.

Wenn du nun z.B. "unChristian" als Suchparameter angibst, würde das Query wie folgt aussehen:
PHP-Code:
$sql "SELECT first_name, last_name, register_date FROM standard_user WHERE first_name LIKE '%unChristian%'"
Einen Namen "unChristian" gibt es jedoch nicht in der Spalte und somit wird auch kein Ergebnis zurück geliefert!

Gibst du als Suchwert jedoch "risti" ein, schaut das Query wie folgt aus:
PHP-Code:
$sql "SELECT first_name, last_name, register_date FROM standard_user WHERE first_name LIKE '%risti%'"
Nun würde auch der (oder mehrere) Datensatz gefunden werden, der den Vornamen "Christian" enthält, da das Teilstück "risti" in dem Namen "Christian" vorkommt.

Hast du in der Tabelle auch einen Datensatz drin, mit dem Vornamen "Christiane", so würde auch dieser Datensatz mit als Ergebnis ausgeliefert werden, da auch hier das Teilstück "risti" drin vorkommt.

Edit
Zefix war ich zu langsam mit dem Schreiben *lach*
CPCoder ist offline   Mit Zitat antworten
Alt 26.01.2012, 19:35  
Neuer Benutzer
 
Registriert seit: 24.01.2012
Beiträge: 5
PHP-Kenntnisse:
Anfänger
ecke09 befindet sich auf einem aufstrebenden Ast
Standard

Dann ist demnach LIKE nicht geeignet für mein Vorhaben?
Eigentlich will ich ja nur erreichen das wenn in ein mein Suchfeld z.B
Christian Bale eingegeben wird meine Datenbank ( ID first_name last_name ) nach ihm durchsucht wird und wenn jemand nur Christian eingibt halt alle Christians ausgegeben werden.

Habe das ganze nun mit folgender Variante so halb hinbekommen:

PHP-Code:

$x
=$_GET["s"];
$eingabe=str_replace(" ","','",$x);
 
$sql="SELECT first_name, last_name, register_date FROM standard_user WHERE first_name IN ('$eingabe') OR last_name IN ('$eingabe')"
Problem:
Angnommen ich habe folgende Datensätze:

1 Christian Bale
2 Christian Nuss
3 Christian Baum

Suche "Christian" -> Alle 3 werden gefunden
Suche "Bale" -> Nur Christian Bale wird gefunden
alles soweit richtig aber suche ich nun nach
Suche "Christian Bale" -> werden natürlich wieder alle gefunden.

Ist doch zum Verzweifeln gibt es den keine Lösung die mir wenn nur der Vorname gesucht wird alle Personen mit dem Vornamen ausgibt,

bei einer Suche nur mit Nachnamen alle Personen mit dem Nachnamen und bei einer Suche nach Vor und Nachnamen NUR Personen mit dem Vor und Nachnamen ausgibt.

Hoffe das war jetzt nicht zu viel

Danke nochmal für die vielen Antworten !!!
ecke09 ist offline   Mit Zitat antworten
Alt 26.01.2012, 19:39  
Erfahrener Benutzer
 
Benutzerbild von Dark Guardian
 
Registriert seit: 10.10.2009
Beiträge: 2.631
PHP-Kenntnisse:
Fortgeschritten
Dark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekanntDark Guardian ist jedem bekannt
Standard

Code:
CONCAT(first_name,' ',last_name) LIKE ...
http://dev.mysql.com/doc/refman/5.0/...unction_concat
__________________
"Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".
Dark Guardian ist offline   Mit Zitat antworten
Alt 26.01.2012, 20:44  
Neuer Benutzer
 
Registriert seit: 24.01.2012
Beiträge: 5
PHP-Kenntnisse:
Anfänger
ecke09 befindet sich auf einem aufstrebenden Ast
Standard

Vielen Dank genau das habe ich gesucht !! Thema ist damit erledigt.
Hier nocheinmal der Vollständigkeit halber:

PHP-Code:
$sql="select first_name, last_name, register_date FROM standard_user WHERE first_name like '%$eingabe%' or last_name
like '%$eingabe%' or concat_ws(' ',first_name,last_name) 
like '%$eingabe%'"

Juhuuuuu
ecke09 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
[Erledigt] while-Schleife läuft anscheinend endlos konfusius PHP Einsteiger 7 06.11.2011 13:30
Pure-Ftpd Mysql fabi288 Server, Hosting und Workstations 1 24.10.2011 09:31
[Erledigt] Datensätze von einer MySQL in eine andere MySQL Datenbank abgleichen Marvin75 Datenbanken 7 10.06.2011 18:00
PHP Zugriff auf MySQL Community Server gewähren daemonTutorials Datenbanken 8 21.02.2011 12:28
[Erledigt] Kann keine Umlaute im mysql client eingeben Oger Datenbanken 9 02.04.2009 11:54
MySQL Konsole und Umlaute unter Windows [LÖSUNG] f4ckm5 Datenbanken 8 30.03.2009 22:10
Lerne Grundlagen | Quellensammlung cycap PHP Einsteiger 0 12.11.2008 16:23
MySql Suche über verschiedene Tabellen - Ergebnis dabei reduzieren padrone Datenbanken 0 04.11.2008 18:43
LIKE und Suche nach Escape-Sequenzen bicpi Datenbanken 0 20.09.2006 13:39
Like ohne Mysql Das Devil PHP Tipps 2006 4 20.08.2006 18:58
SOUNDS LIKE, SOUNDEX und LIKE ClaBo3 Datenbanken 10 23.03.2006 22:17
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MySQL 4.x - SELECT `feld` LIKE 'ä' - Fehlerhaft MrNiceGuy Datenbanken 2 25.03.2005 14:13
Diskussion zu Tutorial MySQL-Datenbank durchsuchen Guradia Off-Topic Diskussionen 9 22.10.2004 19:45


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:40 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