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 23.04.2011, 19:53  
Benutzer
 
Registriert seit: 05.11.2010
Beiträge: 48
PHP-Kenntnisse:
Anfänger
marckannisgut zeigte ein beschämendes Verhalten in der Vergangenheit
marckannisgut eine Nachricht über ICQ schicken marckannisgut eine Nachricht über Skype™ schicken
Standard [Erledigt] Suchmaschiene mit Keywords Description und Name

Hallo alle zusammen.
Ich habe vor eine Online-Verkaufs-Plattform zu erstellen.
Diese ist auch schon bis auf das Design und einigen Funktionen fertig.
Zurzeit bin ich dabei eine Suchmaschiene in meinem Shop zu integrieren.
Diese Suchmaschiene soll nicht nur in der Spalte Keywords suchen sondern auch in Name und Beschreibung. Man soll via Formular mehrere Begriffe eingeben können und diese werden dann mittels preg_split aufgeteilt.
Dann soll die Datenbank durchsucht werden und die Resultat mit den am meisten übereinstimmenden Wörtern als erstes kommen und die mit wenigeren Ergebnissen folgen. Ich habe bereits viele Foren durchstöbert und mir einige Manuals durchgelesen. Nur so wie ich es vorhabe ist es nicht auf zufinden.

Das ist mein derzeitiges Ergebnis:
PHP-Code:
IF(isset($_GET['search']))
{
    
$search $_GET['search'];
    
$search preg_split('[:space:]',$search);
    
$sql mysql_query("SELECT * FROM products WHERE name IN ('$search') OR keywords IN ('$search') OR beschreibung IN ('$search')");
    echo 
"<table>";
    while(
$row mysql_fetch_object($sql))
       {
            echo 
"<tr>";
            echo 
"<td>";
            echo 
"<a href='";
            echo 
"product.php?id=";
            echo 
$row->ID;
            echo 
"'>";
            echo 
$row->name;
            echo 
"</a>";
       }

Es funktioniert aber nicht ganz. Es werden auch keine Fehler ausgegeben.
Hat vielleicht jemand eine Idee wie ich meinen Code optimieren bzw aufbessern kann? Ich bin sehr dankbar für eure Antworten.
marckannisgut ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.04.2011, 19:58  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von marckannisgut Beitrag anzeigen
Es funktioniert aber nicht ganz. Es werden auch keine Fehler ausgegeben.
Wow, da hast du ja eine brillante Analyse betrieben ...

http://www.php.de/wiki-php/index.php/Debugging:SQL
In diesem Fall insb., aber nicht nur, Punkt 2.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 23.04.2011, 20:02  
Benutzer
 
Registriert seit: 05.11.2010
Beiträge: 48
PHP-Kenntnisse:
Anfänger
marckannisgut zeigte ein beschämendes Verhalten in der Vergangenheit
marckannisgut eine Nachricht über ICQ schicken marckannisgut eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Wow, da hast du ja eine brillante Analyse betrieben ...

http://www.php.de/wiki-php/index.php/Debugging:SQL
In diesem Fall insb., aber nicht nur, Punkt 2.
Der Code funktioniert einwandfrei.
Tut mir leid, dass ich mich falsch ausgedrückt habe.
Nur ich weiß nicht genau wie ich das bewerkstelligen soll, was ich oben geschrieben habe.
Hier die Ausgabe:
PHP-Code:
SELECT FROM products WHERE name IN ('Lautsprecher') OR keywords IN ('Lautsprecher') OR beschreibung IN ('Lautsprecher'
__________________
Mein neues Projekt:
Social Release
http://socialrelease.zapto.org/

Geändert von marckannisgut (23.04.2011 um 20:10 Uhr).
marckannisgut ist offline   Mit Zitat antworten
Alt 23.04.2011, 20:07  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von marckannisgut Beitrag anzeigen
Der Code funktioniert einwandfrei.
Nein, das tut er garantiert nicht.

Lass dir die Query ausgeben, dann siehst du es.

Und merke dir dann bitte für das nächste Mal, dass es dumm ist, aus Prinzip zu widersprechen, anstatt die Hinweise, die du bekommst, einfach mal umzusetzen.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 23.04.2011, 20:15  
Benutzer
 
Registriert seit: 05.11.2010
Beiträge: 48
PHP-Kenntnisse:
Anfänger
marckannisgut zeigte ein beschämendes Verhalten in der Vergangenheit
marckannisgut eine Nachricht über ICQ schicken marckannisgut eine Nachricht über Skype™ schicken
Standard

PHP-Code:
$search $_GET['search'];
    
$sql mysql_query("SELECT * FROM products WHERE name IN ('$search') OR keywords IN ('$search') OR beschreibung IN ('$search')");
    echo 
"<table>";
    while(
$row mysql_fetch_object($sql))
       {
            echo 
"<tr>";
            echo 
"<td>";
            echo 
"<a href='";
            echo 
"product.php?id=";
            echo 
$row->ID;
            echo 
"'>";
            echo 
$row->name;
            echo 
"</a>";
       } 
Ich habe es jetzt nun so abgeändert.
Jetzt besteht das Problem darin, dass in der Spalte keywords bespielsweise:
lautsprecher sony ericsson handy...
stehen. Also mehrere Wörter.
Wie kann ich meinen Code so anpassen, dass er jedes einzelne Wort, dass in der Suchleiste duch ein Leerzeichen getrennt wird durch die Spalten sucht. Also dass er erkennt, dass wenn mehrere Wörter in einer Spalte vorhanden sind und nur ein Wort eingetragen wird zur Suche, dass es trotzdem gefunden wird?
__________________
Mein neues Projekt:
Social Release
http://socialrelease.zapto.org/
marckannisgut ist offline   Mit Zitat antworten
Alt 23.04.2011, 20:22  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Überlege dir zuerst, wie die Query aussehen muss - ohne schon an PHP-Code zu denken.

Wenn du nicht weißt, wie Wildcard-Suche in MySQL funktioniert - informiere dich.


Die Volltext-Suche wäre ggf. auch ein Feature, dass du dir mal anschauen möchtest.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 23.04.2011, 23:07  
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

... und falls du auf deiner Seite dieses Wort auch benutzen willst, dann schreibe die Suchmaschine bitte ohne e - da rollen sich ja die Fußnägel hoch.

Wenn deine Spalte products z.B. dies enthält: 'Toller Lautsprecher in Retro-Optik' und du nach dem Wort 'Lautsprecher' suchen willst, dann kommst du mit IN nicht weiter, abgesehen davon, dass deine Syntax oben eh dann scheitert, wenn mehr als ein Wort als Suchbegriff eingegeben wird. Schau dir das mal an:
http://dev.mysql.com/doc/refman/5.1/...-matching.html
__________________
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 23.04.2011, 23:34  
Benutzer
 
Registriert seit: 05.11.2010
Beiträge: 48
PHP-Kenntnisse:
Anfänger
marckannisgut zeigte ein beschämendes Verhalten in der Vergangenheit
marckannisgut eine Nachricht über ICQ schicken marckannisgut eine Nachricht über Skype™ schicken
Standard

PHP-Code:
SELECT FROM products WHERE name LIKE '%' || '$search' || '%' OR keywords LIKE '%' || '$search' || '%' OR beschreibung LIKE '%' || '$search' || '%'" 
Ich habe meine Abfrage nun so optimiert. Ich muss aber gerade festellen das die Suchmaschien nun egal was man eingibt alle datensätze ausgibt. Was ist falsch an dem Code?
marckannisgut ist offline   Mit Zitat antworten
Alt 23.04.2011, 23:37  
Moderator¹
 
Registriert seit: 28.03.2010
Beiträge: 7.470
PHP-Kenntnisse:
Fortgeschritten
ChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer AnblickChrisB ist ein wunderbarer Anblick
Standard

Du scheinst noch nicht wirklich verstanden zu haben, wie der LIKE-Operator funktioniert ...

Schau dir doch bitte die Beispiele im Manual an, die sind doch wirklich selbsterklärend.
__________________
RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
ChrisB ist offline   Mit Zitat antworten
Alt 23.04.2011, 23:43  
Benutzer
 
Registriert seit: 05.11.2010
Beiträge: 48
PHP-Kenntnisse:
Anfänger
marckannisgut zeigte ein beschämendes Verhalten in der Vergangenheit
marckannisgut eine Nachricht über ICQ schicken marckannisgut eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von ChrisB Beitrag anzeigen
Du scheinst noch nicht wirklich verstanden zu haben, wie der LIKE-Operator funktioniert ...

Schau dir doch bitte die Beispiele im Manual an, die sind doch wirklich selbsterklärend.
Wie mach ich das denn mit der Variable ? Kannst du mir nicht einfach sagen was ich anpassen soll ich erkenne meinen Fehler nicht
__________________
Mein neues Projekt:
Social Release
http://socialrelease.zapto.org/
marckannisgut 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
Textdatei nach Hosts selektieren DDinler PHP Einsteiger 6 15.03.2011 15:17
[Erledigt] Problem mit &quot;for&quot; Schleife kay899 PHP Einsteiger 8 12.02.2011 12:26
[Erledigt] Keywords aus Referrer der Suchmaschine auslesen. Speziell Google Bildersuc spielzeug PHP Einsteiger 5 29.11.2010 00:09
Design einer DB für mehrsprachigkeit Squall Software-Design 35 08.10.2010 13:09
[Erledigt] Bereich einer Array lässt sich nicht ausgeben Polliny PHP Tipps 2010 54 21.06.2010 15:30
Datenbankdesign für Keywords monk Datenbanken 2 19.01.2010 21:03
[Erledigt] Table erstellen mit variablem Name Rutor PHP Tipps 2009 10 07.01.2010 12:52
mehrere select count zusammen fassen reddevil82 PHP Tipps 2009 9 03.05.2009 21:45
Array umwandeln von zwei zu mehrdimensional erselbst PHP Tipps 2009 6 02.04.2009 23:30
[Erledigt] MYSQL name nicht $user Marti95. PHP Tipps 2009 3 08.03.2009 17:35
Name suchen in My SQL und in php ausgeben nina123 PHP Tipps 2008 6 10.12.2008 11:10
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
[Erledigt] Bild anzeigen, wenn ein bestimmter Name aus MySQL gelesen wird AJ79 Datenbanken 3 15.07.2008 13:16
Problem mit einfachem Mail()-Skript PHP Tipps 2005-2 5 08.10.2005 17:39

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php description, namen suchmaschiene, php keyword description

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