SELECT [PHP/MySQL]

dennislassiter

Erfahrenes Mitglied
Hi
hab folgendes Problem bei meinem Songtext-Script:

Wenn man sich im Suchscript vertippt gibt es kein ergebnis...
wenn ich das hier im Bereich Tutorials gepostete verwende, bekomme ich z.B. bei der Suche nach lyrics von Wyclef Jean folgende liste angeboten:
-Wonderwall
-Wyclef Jean
-Will Smith
-und alles mit W...

Wie kann ich machen, dass es nach einzelnen Worten sucht...
Dann könnte man sich in einem Wort vertippen:

z.B Sophie Ellis-Baxtor (statt Sophie Ellis-Bextor)

Es muss halt nach: Sophie, nach Ellis und nach Bextor suchen und für jedes Wort die Suchergebnisse listen

nur folgende wörter sollen nicht von der MySQL-Tabelle abgefragt werden:
-feat.
-feat
-pres
-pres.
-and
-und
-vs
-vs.

helft mir bitte schnell (ich fang bald das Promoten an...)

_______________________
nur so, ich such für das Projekt noch freiwillige helfer (die sich an evtl. Kosten beteiligen (höchstens 15,-€ / jahr je helfer)

ihr könnt aber auch anders helfen...
geht auf http://www.lyrics2003.de/add.htm und addet eure lieblings-Songtexte...
 
Also du musst den Suchtext aufsplitten und in ein Array schreiben. Dann musst du mit Hilfe des Arrays deinen Query "zusammenbauen":

Suchtext: "will smith hat keine lust"
- nach Leerzeichen aufsplitten und in array schreiben
- array hat dann 5 Elemente
- SQL-Query zusammen bauen.

PHP:
$suchtext = "will smith hat keine lust";
$arr = explode(" ", $suchtext);
$sql="SELECT * FROM tabelle WHERE ";

for($i=0; $i<count($arr); $i++)
{
   $sql += "interpret LIKE '%$arr[$i]%' ";
   if($i<(count($arr)-1) $sql += " OR ";
}

Danach hast du einen Query, der nach allen Wörtern sucht.
Gruss Homer

P.S. auf diese Art und Weiße funktionieren auch Suchmaschinen
 
parse error? zeig mal das script und vor allem die zeile mit dem fehler.

Code:
$sql += "interpret LIKE '%$arr[$i]%' ";
if($i<(count($arr)-1) $sql += " OR ";

... müsste das nicht eigentlich eher
Code:
$sql .= "interpret LIKE '%" . arr[$i] . "%' ";
if($i < (count($arr) - 1) $sql .= " OR ";
heissen?
 
Zuletzt bearbeitet:
hab ich auch gedacht, aber ist immer noch ein fehler drin...

der code
PHP:
<HTML><HEAD><TITLE></TITLE></HEAD>
<STYLE TYPE='text/css'><!--a {  color:#FFFFFF; text-decoration: none}a:hover {  text-decoration: underline}--></STYLE>
<BODY BGCOLOR='#6789BF' TEXT='#FFFFFF'>
<?PHP
include("dbconnect.php");

$arr = explode(' ', $suche);

$sql = "SELECT * FROM lyric WHERE ";
for($i=0; $i<count($arr); $i++)
{
$sql .= "artist LIKE '%" . arr[$i] . "%' ";
if($i < (count($arr) - 1) $sql .= " OR ";

} 

echo $sql;
  $ergebnis = mysql_query($sql);
  while($row = mysql_fetch_object($ergebnis))
    {
    echo "<TABLE WIDTH='100%' BORDER='0' CELLSPACING='0' CELLPADDING='0'><TR onmouseover=\"this.style.backgroundColor='#006699'\" onmouseout=\"this.style.backgroundColor='#6789BF'\">";
    echo "<TD WIDTH='50%'><FONT FACE='Verdana, Arial, Helvetica, sans-serif' SIZE='2'><A HREF='song.php?num=$row->id' target=_blank>$row->artist - $row->song</a></FONT></TD><TD><FONT FACE='Verdana, Arial, Helvetica, sans-serif' SIZE='2'><A HREF='doppel1.php?num=$row->id' target=_blank>Doppeleintrag melden</a></FONT></TD>";
    echo "</TR></TABLE></BODY></HTML>";
    }
 
?>

Euch PHP-Oldies zucken warscheinlich die Achselhaare zusammen, da das die dümmste methode ist, diesen Script zu schreiben.
Aber es hat vorher funktioniert, nur nicht so, wie ich es wollte...

bye
 
Zurück