| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |
|

11-06-2008, 13:18
|
|
DonPatricio
Newbie
|
|
Registriert seit: Jun 2008
Beiträge: 15
|
|
Full Text Search
Hallo,
Ich habe versucht eine Datenbanksuche zu programmieren. Dazu habe ich folgendes Stueck Code:
PHP-Code:
$friends_add = mysql_query ("SELECT username from users where MATCH(username) AGAINST ('%".$_POST[search]."%');") or die ("error");
Ich habe folgende Datenbank:
id username
1 donpatricio
2 philip
3 patricio
In ein Text Formular gebe ich Patricio ein. Wenn ich nun auf Submit klicke und es natuerlich durch eine while Schleife laufen lasse, erscheint mir jedoch nur der Name Patricio und nicht auch DonPatricio, was doch sein sollte, da ich die Prozente vor und nach der Variable hingeschreiben habe.
Ich hoffe mir kann jemand helfen.
Vielen lieben Dank.
Geändert von DonPatricio (11-06-2008 um 13:29 Uhr)
|

11-06-2008, 13:22
|
|
XGremliN
PHP Senior
|
|
Registriert seit: Sep 2003
Ort: Karl-Marx-Stadt
Beiträge: 1.900
|
|
schon mal die %-Zeichen weggelassen?
__________________
it's not a bug,
it's a feature!
|

11-06-2008, 13:25
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.283
|
|
PHP-Code:
$friends_add = mysql_query ("SELECT username from users where username LIKE '%".$_POST['search']."%'");
|

11-06-2008, 13:27
|
|
DonPatricio
Newbie
|
|
Registriert seit: Jun 2008
Beiträge: 15
|
|
Warum sollte ich die % Zeichen weglassen. Ich will ja, das sowohl Patricio und DonPatricio ausgegeben wird.
Wenn ich sie weggebe geht es natuerlich nicht ...
@jahlives:
So wie du es gemacht hast funktioniert es, aber ich wurde es gerne meine Methode machen, da sie schneller funktioniert wenn man mehrere tausende Datensaetze hat, ausserdem wirde es deine Methode nicht nach der Wichtigkeit geordnet. Wenn man patricio eingibt wurde als erstes donpatricio ausgegeben, weil es als erstes in die db eingetragen wurde, verstehst du?
Geändert von DonPatricio (11-06-2008 um 13:31 Uhr)
|

11-06-2008, 13:39
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.283
|
|
* statt % verwenden
|

11-06-2008, 13:45
|
|
H2O
PHP Junior
|
|
Registriert seit: Jul 2007
Beiträge: 937
|
|
Zitat:
Original geschrieben von DonPatricio
Wenn ich sie weggebe geht es natuerlich nicht ...
|
Dann machst du sonst etwas falsch, vielleicht hast du sie dem falschen gegeben  . Das % ist bei der Volltextsuche ein Zeichen wie jedes andere. Mehr dazu in MySQL-Volltextsuche
__________________
Gruss
H2O
|

11-06-2008, 13:48
|
|
DonPatricio
Newbie
|
|
Registriert seit: Jun 2008
Beiträge: 15
|
|
Auch mit * funktioniert es nicht ..
@H2O: Ich meinte, wenn ich die % weggebe werden nicht beide Werte angezeigt, sondern wie es sollte wird Patricio ausgegeben, wenn ich es eingebe. Aber es wird eben nicht auch noch DonPatricio ausgegeben.
|

11-06-2008, 13:53
|
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.746
|
|
Probiere mal:
SELECT username from users where MATCH(username) AGAINST ('*Patricio' IN BOOLEAN MODE)
|

11-06-2008, 14:00
|
|
DonPatricio
Newbie
|
|
Registriert seit: Jun 2008
Beiträge: 15
|
|
Nur Patricio wird ausgegeben, funktioniert also auch nicht richtig ...
Irgendwie bin ich am verzweifeln.
|

11-06-2008, 14:21
|
|
H2O
PHP Junior
|
|
Registriert seit: Jul 2007
Beiträge: 937
|
|
Zitat:
Original geschrieben von DonPatricio
Irgendwie bin ich am verzweifeln.
|
Hat schon mal jemand gezählt, wieviel Verzweifelte sich hier im Forum tummeln?
Zitat:
Original geschrieben von DonPatricio
Auch mit * funktioniert es nicht ..
|
Natürlich nicht, auch * ist ein ganz normales Zeichen. Oder hast du in den Beispielen im Handbuch auch nur irgendeine Form von Platzhaltern gesehen? Die würden es ja verunmöglichen, die Relevanz zu berechnen.
PHP-Code:
$friends_add = mysql_query("SELECT username from users where MATCH(username) AGAINST('Patricio') or exit(mysql_error());
print_r($friends_add);
Müsste gehen. Kann es leider nicht testen, da ich im Moment nur InnoDB-Tabellen habe.
__________________
Gruss
H2O
|

11-06-2008, 14:24
|
jahlives
Master  
|
|
Registriert seit: Jun 2004
Ort: Hooker in Kernel
Beiträge: 8.283
|
|
Zitat:
|
Natürlich nicht, auch * ist ein ganz normales Zeichen. Oder hast du in den Beispielen im Handbuch auch nur irgendeine Form von Platzhaltern gesehen?
|
Also das Manual meint dazu:
Zitat:
'apple*'
Find rows that contain words such as “apple”, “apples”, “applesauce”, or “applet”.
|
http://dev.mysql.com/doc/refman/5.0/...t-boolean.html
|

11-06-2008, 14:30
|
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.746
|
|
Zitat:
Original geschrieben von DonPatricio
Nur Patricio wird ausgegeben, funktioniert also auch nicht richtig ...
Irgendwie bin ich am verzweifeln.
|
Hast du auch IN BOOLEAN MODE angegeben?
|

11-06-2008, 14:40
|
|
DonPatricio
Newbie
|
|
Registriert seit: Jun 2008
Beiträge: 15
|
|
Wenn das hier meinst. Funktioniert auch nicht.
PHP-Code:
$friends_add = mysql_query ("SELECT * from users where MATCH(username) AGAINST ('*$_POST[search]*' IN BOOLEAN MODE);") or die ("error");
|

11-06-2008, 14:49
|
|
asp2php
Banned
|
|
Registriert seit: Feb 2004
Beiträge: 11.746
|
|
Und so auch nicht?
PHP-Code:
$friends_add = mysql_query ("SELECT * from users where MATCH(username) AGAINST ('*".
$_POST['search']."*' IN BOOLEAN MODE)") or die ("error");
|

11-06-2008, 14:59
|
|
DonPatricio
Newbie
|
|
Registriert seit: Jun 2008
Beiträge: 15
|
|
OK, also jetzt passiert schon was sehr interessantes. Wenn ich zum Beispiel atricio eingebe, wird Patricio auch angezeigt, was wirklich cool ist, aber es wird nicht der Wert DonPatrico angezeigt obwohl atricio wieder da drinnen steckt.
Egal was ich mache, irgendwie wird kein Zweiter Wert ausgegeben.
Geändert von DonPatricio (11-06-2008 um 15:02 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|