php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 10.01.2006, 04:09  
Erfahrener Benutzer
 
Registriert seit: 23.12.2004
Beiträge: 210
PHP-Kenntnisse:
Anfänger
Bonaparte
Bonaparte eine Nachricht über ICQ schicken
Standard php / mysql suchfunktion - tutorial

Hallo, ich möchte für mein Projekt eine Suchfunktion erstellen, die die mySQL DB durchsuchen soll. Ich habe auch schon einiges gefunden. Ist aber nocht nicht das, was ich brauche. Ich hoffe mein Vorhaben ist auch technisch möglich zu realisieren.

Es handelt sich um 3 Suchefelder

1. für eine Volltextsuche(Text) - das nach Möglichkeit in zwei Spalten gleichzeitig sucht
2. für den Ort (Text)
3. für die Branche (Select)

Die 3 Felder sollen sich, falls alle ausgefüllt werden, ergänzen. Ich glaube nicht, dass es mit einem MySQL Befehl geht.

Dann habe ich mich auch schlau gemacht, und es hieß, dass wenn man in ein Feld mehrere Worte eingibt (mit Leerzeichen- oder Komma-getrennt), die Suche dann nicht mehr richtig funktioniert, man muss das auch berücksichtigen und in einzelne Strings? umwandeln/trennen?..

Da diese Aufgabe derzeit eindeutig zu kompliziert für mich ist, würde ich mich freuen, wenn mir jemand auf ein Tutorial oder ein ähnliches Beispiel verweist, mit dem ich etwas anfangen könnte.
__________________
MfG David
axinio Internet Marketing - professionelle Suchmaschinenoptimierung
Bonaparte ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 10.01.2006, 08:32  
Gast
 
Beiträge: n/a
Standard

Zitat:
Ich glaube nicht, dass es mit einem MySQL Befehl geht.
Ich glaube doch, dass das geht, warum auch nicht.
Zitat:
es hieß, dass wenn man in ein Feld mehrere Worte eingibt ... die Suche dann nicht mehr richtig funktioniert
Das scheint mir auch Blödsinn zu sein.
Zitat:
Da diese Aufgabe derzeit eindeutig zu kompliziert für mich ist
Fange mit einer einfachen Suche an. Danach erweiterst du die Suche jeweils um ein Feld und du wirst feststellen, dass das garnicht so schwer ist. Wenn du dann nach allen Feldern suchen kannst, erweiterst du die Sache noch, so dass auch mehere Wörter in einem Feld eingegeben werden können.

Gruß
phpfan
 
Alt 10.01.2006, 09:31  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Genau, geh das ganze erstmal nicht so kompliziert und mit 3 Feldern an.
Baue dir erstmal ein Skript, dass ein Wort in einem Feld findet.

WHERE spalte1 LIKE '%suchbegriff1%'

Und jetzt erweiter dein Skript schrittweise darum, mehrere Suchbegriffe eingeben zu können

WHERE spalte1 LIKE '%suchbegriff1%' OR spalte1 LIKE '%suchbegriff2%'

Am Ende solltest du dann das Skript haben für eine variable Anzahl Spalten und eine variable Anzahl Suchbegriffe.
Hier könnten dir Schleifen und/oder Arrays (explode zum Splitten der Suchbegriffe und implode (das Gegenstück) zum Zusammensetzen des SQL-Befehls) helfen.

Vielleicht hilft dir noch der Hinweis, auch so einen SQL-Befehl nutzen zu können
WHERE 0 OR spalte1 LIKE '%suchbegriff1%' OR spalte1 LIKE '%suchbegriff2%'
..wobei die farbigen Blöcke gleich und damit leichter mit Schleifen zu erstellen sind. Natürlich gibts aber auch andere Möglichkeiten, die ein "0 OR" (null oder) überflüßig machen.
Zergling-new ist offline  
Alt 10.01.2006, 12:33  
Erfahrener Benutzer
 
Registriert seit: 23.12.2004
Beiträge: 210
PHP-Kenntnisse:
Anfänger
Bonaparte
Bonaparte eine Nachricht über ICQ schicken
Standard

Danke für die Antworten. Ich habe jetzt MATCH genommen. Wenn man aber mehrere Suchwörter eingibt. dann werden alle einträge gezeigt, die dieses suchwort beinhalten

Ich verstehe das mit Schleife/Arrays, explode/implode. Kann jetzt aber nicht nachvollziehen, wie es ausgeführt werden soll. Also meißt werden die Suchwörter mit Komma oder mit Leerzeichen getrennt. Wenn ich das nun mit explode in Einzelteile gepackt habe, was dann? Sorry, da komme ich jetzt nicht mit.

Zitat:
%suchbegriff1%
Was ist damit gemeint, ein ganz normaler Suchbegriff? Kann man stattdessen auch ein Post-Variable einsetzen?

Was ist der Unteschied zw. MATCH und LIKE, was würdet ihr empfehlen: Anders gefragt: in welchen Fällen greift man auf welche Funktion zurück?
__________________
MfG David
axinio Internet Marketing - professionelle Suchmaschinenoptimierung
Bonaparte ist offline  
Alt 10.01.2006, 12:49  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von Bonaparte
Wenn ich das nun mit explode in Einzelteile gepackt habe, was dann?

Zitat:
%suchbegriff1%
Was ist damit gemeint, ein ganz normaler Suchbegriff? Kann man stattdessen auch ein Post-Variable einsetzen?

Was ist der Unteschied zw. MATCH und LIKE, was würdet ihr empfehlen: Anders gefragt: in welchen Fällen greift man auf welche Funktion zurück?
- Dann hast du einen Array, den du in einer Schleife durchlaufen kannst und in dem du Teile deines SQL-Statements generierst.

- Das ist eben ein Suchbegriff, den du einsetzen muss. Natürlich kannst du dafür auch einen POST-String benutzen. Musst ihn eben nach den Regeln der String-Erstellung einbauen.

- Schau doch ins Manual. MATCH AGAINST kann soweit ich weiß nur als Volltext indizierte Felder durchsuchen und erstellt zudem eine Art Relevanz-Ranking.
% ist eine Wildcard bei LIKE-Bedingungen.
LIKE "%eter" trifft "Peter" und "Übeltaeter".

Mehr dazu im Manual.
Zergling-new ist offline  
Alt 10.01.2006, 15:09  
Erfahrener Benutzer
 
Registriert seit: 23.12.2004
Beiträge: 210
PHP-Kenntnisse:
Anfänger
Bonaparte
Bonaparte eine Nachricht über ICQ schicken
Standard

Danke, wenn du mir noch den letzten Schups gibst, dann könnte ich die Arbeit endlich abschließen. Bin soweit gekommen.

Code:
$result = mysql_query("SELECT * FROM pboerse_firmen WHERE MATCH (titel,inhalt) AGAINST ('".$_POST["suchwort"]."') ORDER BY ".$_POST["sort"]." ".$_POST["sort_dir"]." LIMIT ".$_POST["anzahl"]."");
Wenn ich aber wie bei MySQL beschrieben, ein weiteres MATCH AGAINST einfüge oder mit AND oder OR etwas versuche, kommt es zu der Fehlermeldung.
Zitat:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\internet\praktikanten-netzwerk\pboerse\suchen.php on line 94
Mein Ziel ist einfach. Ich möchte den MySQL Befehl so erweitern, damit man die Ausgabe einschränken kann.

es existieren noch 2 weitere Felder (text (ort) und select (branche)) wenn man diese leer lässt, dann sollen diese ignoriert werden, anderenfalls soll nach einem bestimmten wort bei "ort" gesucht werden und bei "branche" - einfach den value mit dem wert in der spalte vergleichen.
__________________
MfG David
axinio Internet Marketing - professionelle Suchmaschinenoptimierung
Bonaparte ist offline  
Alt 10.01.2006, 16:12  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Benutze mysql_error() um herauszufinden, wo in deiner Abfrage der Fehler liegt.
xabbuh ist offline  
Alt 11.01.2006, 08:54  
Erfahrener Benutzer
 
Registriert seit: 23.12.2004
Beiträge: 210
PHP-Kenntnisse:
Anfänger
Bonaparte
Bonaparte eine Nachricht über ICQ schicken
Standard

Danke, das habe ich komplett vegessen

Ich habe das Gefühl, dass mein Vorhaben, die Suche mit einem SQL-Ausdruck einzuschränken nicht möglich ist. Liege ich da falsch?

Bei AND müssen alle Felder ausgefüllt werden und bei OR wird nur ein von diesen berücksichtigt.

Muss ich kontrolieren, welches Feld aufgeüllt wurde und entsprechend einen neuen SQL-Befehl augeben? Oder lässt sich das doch in einem Ausdruck formulieren?

Code:
$result = mysql_query("SELECT * FROM pboerse_firmen WHERE MATCH (titel,inhalt) AGAINST ('".$_POST["suchwort"]."') AND ort='".$_POST["suchort"]."' ORDER BY ".$_POST["sort"]." ".$_POST["sort_dir"]." LIMIT ".$_POST["anzahl"]."") or die(mysql_error());
__________________
MfG David
axinio Internet Marketing - professionelle Suchmaschinenoptimierung
Bonaparte ist offline  
Alt 11.01.2006, 08:58  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Natürlich musst du schauen, dass der SQL Befehl am Ende einen Sinn ergibt, logisch und syntaktisch richtig ist.
Wo liegt denn jetzt überhaupt das Problem?
Zergling-new ist offline  
Alt 11.01.2006, 09:32  
Erfahrener Benutzer
 
Registriert seit: 23.12.2004
Beiträge: 210
PHP-Kenntnisse:
Anfänger
Bonaparte
Bonaparte eine Nachricht über ICQ schicken
Standard

Also. Die Situation ist folgende:

Ich habe zwei Textfelder und ein Auswahlfeld (select)

Suchwort: _____________
Suchort: ______________
Branche: ______________

- Gibt man ein Suchwort ein, so werden alle Einträge gelistet, die dieses Wort enthalten.

- Sollte man zusätzlich den Suchort eingeben, dann müssen logischerweise nur die Einträge gelistet werden, die das Suchwort beinhalten und mit dem Suchort übereinstimmten.

- Das gleiche gilt für die Branche im Bezug auf das Suchwort.

- Und wenn man alle drei Felder ausgefüllt/gewählt hat, muss eine entsprechende Einschränkung erfolgen.

Also, da der Suchort und die Branche optionale Felder sind, weiß ich nicht wie der SQL-Befehl aussehen muss.
__________________
MfG David
axinio Internet Marketing - professionelle Suchmaschinenoptimierung
Bonaparte 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 Server Einstellunen Optimieren pchero Datenbanken 3 01.05.2007 19:50
tutorial mysql klassen im oop projekt phpdummi Beitragsarchiv 4 17.01.2007 20:17
Gutes PHP & MySQL Tutorial nicobischof PHP Tipps 2006 1 30.04.2006 18:59
MySQL Suchfunktion winki Datenbanken 8 15.04.2006 12:54
MySQL Tutorial anhand eines Newssystems? Datenbanken 12 13.03.2006 16:50
Suchfunktion in MySQL FireFIghter PHP Tipps 2006 5 10.01.2006 13:29
[Erledigt] Gutes MySQL Tutorial Datenbanken 2 01.12.2005 17:11
Suche gutes mySQL Tutorial imported_FlasH Datenbanken 1 26.10.2005 19:29
Suchfunktion für die Homepage? Was muss der Anfänger wissen? PHP Tipps 2005-2 1 11.10.2005 18:39
Suche Tipps für Persormance-Steigerung (Geld für Nützliches) Beitragsarchiv 18 16.08.2005 10:57
MySql error -- Suchfunktion mit mehreren Begriffen PHP Tipps 2005 1 12.04.2005 21:06
Ein gutes DEU. Tutorial zur Installation von MYsql... Datenbanken 2 30.01.2005 17:44
Bloody n00b braucht Hilfe - Suchfunktion per PHP und MySQL PHP Tipps 2004 2 04.08.2004 22:28
[Erledigt] PHP5 &a m p; MySQL Datenbanken 5 01.08.2004 05:47
[Erledigt] Mysql Datenbank durchsuchen - Tutorial Datenbanken 5 10.07.2004 13:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php mysql suchfunktion, php suchfunktion tutorial, suchfunktion php mysql, php suchfunktion mysql, php mysql suchfunktion tutorial, mysql php suchfunktion, suchfunktion tutorial, php sql suchfunktion, suchfunktion php tutorial, php mysql suche tutorial, mysql suchfunktion tutorial, suchfunktion mysql php, suchfunktion sql php, tutorial suchfunktion, php tutorial suchfunktion, mysql suchfunktion php, http://www.php.de/php-tipps-2006/35700-php-mysql-suchfunktion-tutorial.html, php mysql suche, php mysql select suchfunktion, suchfunktion mit php mysql

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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.