php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2010

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 08.02.2010, 08:35  
Benutzer
 
Registriert seit: 08.02.2010
Beiträge: 75
PHP-Kenntnisse:
Anfänger
bench78 kann nur auf Besserung hoffen
Standard MySQL Volltextsuche bringt 0 Ergebnisse

Hi PHP-Leutz,

Ich versuche seit 2 Wochen eine MySQL-Fulltextsuche hinzubekommen. Aber es gelingt mir nicht so ganz. Ich will auch anmerken, dass ich ein absoluter PHP-Anfänger bin. Ganz wichtig neben der Funktionalität ist natürlich auch die Sicherheit. Ich hoffe, dass ich mit meinem Skript, so wie er hier steht meinem Ziel etwas nah bin. Weiter unten (unter dem Skript) stehen die Probs, die ich mit meiner Fulltext-Suche habe und BITTE um Eure Hilfe...BIG THX an alle die helfen können!!!


Mein Skript sieht folgendermaßen aus:
PHP-Code:
// Vriablen Definieren
$suchwort mysql_real_escape_string($_POST['suche']);
$marke mysql_real_escape_string($_POST['hersteller']);

// Abfrage
$sql "SELECT * FROM test WHERE MATCH (Bezeichnung, Beschreibung, Marke) AGAINST('" mysql_real_escape_string($suchwort) . "')";
if (
$marke)

$sql .=  " AND Marke = '%" mysql_real_escape_string($marke) . "%'"
}

$db_erg mysql_query$sql );
if ( ! 
$db_erg )
{
die(
'Ungültige Abfrage: ' mysql_error());
}

$anzahl mysql_num_rows($db_erg);
echo 
"Suchergebnisse: $anzahl"
Via ALTER TABLE test ADD FULLTEXT (marke) habe ich in meiner MySQL-Tabelle einen Fulltext-Index für die Spalte Marke erstellt. Und einen ALTER TABLE test ADD FULLTEXT (Bezeichnung, Beschreibung, Marke) für die Spalten Bezeichnung, Beschreibung und Marke.

Wenn ich jetzt einen Suchbegriff ins Textfeld eintippe und dabei aus dem Sprungmenü eine Marke auswähle, erhalte ich die Meldung, dass 0 Ergebnisse gefunden wurden.

Den selben Schrott habe ich auch, wenn ich NICHTS ins Textfeld getippt habe und mir nur eine Marke aus dem Sprungmenü raussuche.

Tippe ich was ins Textfeld und lasse dabei das Sprungmenü "Marke" unberührt, funtzt die Such einwandfrei.

Womit kann denn das jetzt bitte zu tun haben? Wie kann ich das Prob. lösen?
bench78 ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 08.02.2010, 08:42  
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

Verwende mal
PHP-Code:
$sql .=  " AND Marke LIKE '%" mysql_real_escape_string($marke) . "%'"
Arne Drews ist offline  
Alt 08.02.2010, 08:55  
Benutzer
 
Registriert seit: 08.02.2010
Beiträge: 75
PHP-Kenntnisse:
Anfänger
bench78 kann nur auf Besserung hoffen
Standard

Wahnsinn...erstaml vielen Dank für die prompte Antwort...

Zitat:
Zitat von Arne Drews Beitrag anzeigen
Verwende mal
PHP-Code:
$sql .=  " AND Marke LIKE '%" mysql_real_escape_string($marke) . "%'"
Habe ich probiert. Ändert sich aber trotzdem nichts an meinem Problem.

Ich würde auch gerne wissen, ob eine Volltextsuche via LIKE - also an Stelle von Match in der Abfrage - machbar ist, damit z. B. die fehlerhafte Sucheingabe "adida" trotzdem als Ergebnis "Adidas" ausgiebt.
bench78 ist offline  
Alt 08.02.2010, 09:01  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Hat er doch gerade gemacht.. Du solltest wenigstens versuchen, Vorschläge auch zu verstehen.

mysql_real_escape_string doppelt zu benutzen ist übrigens Unsinn.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 08.02.2010, 09:08  
Benutzer
 
Registriert seit: 08.02.2010
Beiträge: 75
PHP-Kenntnisse:
Anfänger
bench78 kann nur auf Besserung hoffen
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Hat er doch gerade gemacht.. Du solltest wenigstens versuchen, Vorschläge auch zu verstehen.

mysql_real_escape_string doppelt zu benutzen ist übrigens Unsinn.
Das Feld Marke ist ein Sprungmenü, wo man sich Marken aussuchen kann und kein Textfeld, wo sich ein User vertippen kann. Mein Frage bzgl. Like und Tippfehler bezieht sich auf das Textfeld ($suchwort).

Lieber ein mysql_real_escape_string zu viel als zu wenig ist doch besser oder???...habe ich mir sagen lassen.

Wo sollten die mysql_real_escape_strings raus:

in der Zeile wo die var definiert sind
oder
in der Abfrage?

Geändert von bench78 (08.02.2010 um 09:12 Uhr).
bench78 ist offline  
Alt 08.02.2010, 09:12  
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

Naja, glaub' mir, wir helfen gerne, aber warum probierst Du es nicht einfach aus und schreibst Deine MATCH-Variante auf LIKE um,
postest evtl. Fehlermeldungen und wie Du's umgesetzt hast.

Dann können wir weiterhelfen, aber Eigeninitiative wird hier erwartet.

Wo Du die mysql_real_escape_string() wegläßt bleibt Dir überlassen.
Einmal reicht aber definitiv.

Geändert von Arne Drews (08.02.2010 um 09:22 Uhr).
Arne Drews ist offline  
Alt 08.02.2010, 09:22  
Benutzer
 
Registriert seit: 08.02.2010
Beiträge: 75
PHP-Kenntnisse:
Anfänger
bench78 kann nur auf Besserung hoffen
Standard

Aber dann ist das doch keine Volltextsuche mehr oder?

Ihr seid meine letzte Hoffunung...ich bin seit gut zwei Wochen nur am testen, fragen, lesen und wider testen und wieder testen.

Geändert von bench78 (08.02.2010 um 09:25 Uhr).
bench78 ist offline  
Alt 08.02.2010, 09:25  
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

Weil Du es falsch verwendest!
Du kannst MATCH nicht einfach mit LIKE ersetzen.
LIKE wendest Du auf eine Spalte an und verkettest die Abfrage auf die zweite Spalte mit AND.

Und dann: Bitte poste auch Deinen geänderten Code!
Anhand der Fehlermeldung kann man nicht immer sehen, was genau Du falsch gemacht hast!
Arne Drews ist offline  
Alt 08.02.2010, 09:25  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.990
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ja, das ist nun nicht erstaunlich. Du kannst auch statt SELECT nicht ORANGUTAN schreiben.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline  
Alt 08.02.2010, 09:33  
Benutzer
 
Registriert seit: 08.02.2010
Beiträge: 75
PHP-Kenntnisse:
Anfänger
bench78 kann nur auf Besserung hoffen
Standard

Der Code ist wieder der selbe wie oben.

Wenn ich eine Abfrage mit LIKE mache, dann handelt es sich doch nicht mehr um eine Volltextsuche.?!?
bench78 ist offline  
 


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
mysql Ergebnisse auf mehrere seiten aufteilen - linkfehler geschenkefinder Datenbanken 5 12.07.2009 20:41
MySQL Verbindung zu fremden Server Xanatus Datenbanken 5 27.05.2009 14:13
[Erledigt] umschreiben von sql auf mysql willow10 Datenbanken 4 17.05.2009 09:50
[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
Problem bei Umstellung auf MySQL 5 bettina Datenbanken 13 21.01.2009 10:00
MySQL - Abfrage: Unterschiedliche Ergebnisse aus PHP/manuell horstenpeter Datenbanken 3 16.07.2006 13:22
MySQL Server startet nicht mehr richtig... Datenbanken 16 03.03.2006 19:40
Kein Zugriff über ODBC mit der IP-Adresse auf MySql DB Datenbanken 4 09.02.2006 11:04
Ergebnisse einer MySQL Abfrage an nächste seite übertragen Plague PHP Tipps 2005-2 4 07.09.2005 21:51
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MySQL 3.23.x Volltextsuche mit Boolean codix Datenbanken 0 29.07.2005 14:42
MYSQL läuft nur wenn /tmp auf 777 Datenbanken 5 06.07.2005 08:38
mysql root passwort vergessen Datenbanken 1 29.05.2005 11:33

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
http://www.php.de/php-einsteiger/64348-mysql-volltextsuche-bringt-0-ergebnisse.html, mysql volltextsuche, mysql fulltext umlaute, mysql volltextsuche kein ergebnis, mysql fulltext kein ergebnis, mysql volltextsuche umlaute, match against bringt zu wenige ergebnisse, volltextsuche mysql, match against umlaute, fulltext mysql null, mysql full text umlaute, volltextsuche mit umlauten, mysql suche umlaute, mysql match umlaute, mysql fulltext umlaut, mysql fulltext deutsche umlaute, mysql volltextindex textfeld, mysql fulltext match, match against keine suchergebnisse, php volltext against sonderzeichen

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