Suchfunktion - DB auslesen und mit String vergleichen

RageNo1

Erfahrenes Mitglied
Hallo,
ich bastel gard eine Suchfunktion bin aber nicht der Profi in PHP.
Ich habe mal so angefangen:
PHP:
mysql_connect($host, $user, $pass);
mysql_select_db($db);

$abfrage = "SELECT * FROM corenews2_news WHERE news_title LIKE '$suchstring' OR news_text LIKE '$suchstring'";
$ergebnis = mysql_query($abfrage);

while ($comm = mysql_fetch_array($ergebnis))

echo $comm["news_title"];

?>

Leider wird aber nichts angezeigt. Woran könnt das liegen?
$suchstring wird von der Form übergeben.
 
Vermutlich, weil keiner der Newstitel oder -texte exakt dem Suchbegriff entsprechen.
Du solltest Wildcards verwenden:
PHP:
//...
$abfrage = "SELECT * 
        FROM corenews2_news 
        WHERE news_title LIKE '%$suchstring%' 
            OR news_text LIKE '%$suchstring%'";
//...
Gruß hpvw
 
Wenn ich das jetzt recht verstehe bewirkt das %, dass auch Einträge angezeigt werden wenn sich nur ein Teil der Suchstrings in dem Wort befindet.

d.h. Suche test = testfahrer

PHP:
mysql_connect($host, $user, $pass);
mysql_select_db($db);

$abfrage = "SELECT * FROM news WHERE news_title LIKE '%$suchstring%' OR news_text LIKE '%$suchstring%'";
$ergebnis = mysql_query($abfrage);

while ($comm = mysql_fetch_array($ergebnis))

echo $comm["news_title"];

Nun kommt die Fehlermeldung:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/ema1/html/suche.php on line 16
 
Man beachte meine Signatur und poste die entsprechende MySQL-Fehlermeldung... ;-]

Das Prozentzeichen entspricht dem Sternchen in der Windows-Explorersuche.
Sucht man nach %test% wird test, testtext, texttest oder auch texttesttext gefunden.

Gruß hpvw
 
Ich habe es mit dem mysql_error() so gemacht:
PHP:
mysql_connect($host, $user, $pass);
mysql_select_db($db);

$abfrage = "SELECT * FROM news WHERE news_title LIKE '%$suchstring%' OR news_text LIKE '%$suchstring%'";
$ergebnis = mysql_query($abfrage);

while ($comm = mysql_fetch_array($ergebnis))

echo mysql_error();
Kommt aber der gleiche Fehler. Wird kein anderer Fehler angezeigt.
 
Ein Blick ins Handbuch unter [phpf]mysql_error[/phpf] verrät Dir, wie man die Funktion richtig anwendet.

Gruß hpvw
 
Nun stehe ich vor dem nächsten Problem:
Ich habe nun soweit alles fertig und bin nun an den feinheiten dran.
Hier das aktuelle Script:
PHP:
mysql_connect($host, $user, $pass);
mysql_select_db($db);

$abfrage = "SELECT * FROM corenews2_news WHERE news_title LIKE '%$suchstring%' OR news_text LIKE '%$suchstring%'";
$ergebnis = mysql_query($abfrage);

while ($comm = mysql_fetch_array($ergebnis))

echo "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" class=\"news\">
  <tr> 
    <td width=\"1003\" height=\"19\" valign=\"top\" class=\"news\"><b>".$comm['news_title']."</b></td>
  </tr>
  <tr>
    <td height=\"19\" valign=\"top\" class=\"newsmiddle\">".$comm['news_text']."</td>
  </tr>
  <tr> 
    <td height=\"19\" valign=\"top\" class=\"news\">
<div align=\"right\">{category} | time | {user} | {dead} | <a class=\"navi\" href=\"index.php?&comments=".$comm['id']."#newcomment\">kommentare</a></div>
    </td>
  </tr>
</table>
<br>";

Ich möchte nun die Zeit ausgeben (z.B. 1104609908).
Dafür habe ich diesen string gemacht:
PHP:
$time = date("j. n. Y - G:i", $comm['time']);
Und die Ausgabe um $time ergänzt.

Leider wird dann aber kein Eintrag ausgegeben, es kommt auch keine Fehlermeldung.
Hier mal das Script mit $time:
PHP:
mysql_connect($host, $user, $pass);
mysql_select_db($db);

$abfrage = "SELECT * FROM corenews2_news WHERE news_title LIKE '%$suchstring%' OR news_text LIKE '%$suchstring%'";
$ergebnis = mysql_query($abfrage);

while ($comm = mysql_fetch_array($ergebnis))
$time = date("j. n. Y - G:i", $comm['time']);

echo "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" class=\"news\">
  <tr> 
    <td width=\"1003\" height=\"19\" valign=\"top\" class=\"news\"><b>".$comm['news_title']."</b></td>
  </tr>
  <tr>
    <td height=\"19\" valign=\"top\" class=\"newsmiddle\">".$comm['news_text']."</td>
  </tr>
  <tr> 
    <td height=\"19\" valign=\"top\" class=\"news\">
<div align=\"right\">{category} | $time | {user} | {dead} | <a class=\"navi\" href=\"index.php?&comments=".$comm['id']."#newcomment\">kommentare</a></div>
    </td>
  </tr>
</table>
<br>";
 
Das nächste mal würde ich dir empfehlen ein neuen Thread auf zu machen, ist ja schließlich ein Neues Thema.

Also die Syntax ist erstmal richtig. Konnte jednefalls keinen Syntaktischen Fehler erkennen. Lass dir doch erstmal $comm['date'] ausgeben ohne die date() Funktion. Wenn er dort schon nichts ausgibt, dann gibts die Spalte entweder nciht oder sie ist leer!

Oder du versuchst es mal so:

PHP:
<div align=\"right\">{category} | ".$time." | {user} | {dead} | <a class=\"navi\" href=\"index.php?&comments=".$comm['id']."#newcomment\">kommentare</a></div>
 
Zurück