Suchfunktion - DB auslesen und mit String vergleichen

Es wäre schön wenn du auch ein bisschen mitdenken würdest.
Versuchs mal so:

PHP:
<?php 

$host = "*******"; 
$user = "*******"; 
$pass = "*******"; 
$db = "*******"; 

$date_format = "j. n. Y - G:i"; 

if (!$suchstring) {echo "es wurde kein suchbegriff eingegeben!";} 

else { 
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)) { 
    $sql = mysql_query("SELECT name FROM category WHERE id = '".$comm['category']."' LIMIT 1"); 
    $category = mysql_fetch_array($sql);  
    $categoryname = $category['name'];  

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\">".date("j. n. Y - G:i", $comm['time'])." | <a class=\"navi\" href=\"deadlink.php?id=".$comm['id']."\">deadlink?</a> | <a class=\"navi\" href=\"index.php?&comments=".$comm['id']."#newcomment\">kommentare</a></div> 
    </td> 
  </tr> 
</table> 
<br>"; 
}
} 

?>

Ich hoffe das es so klappt, wenn nciht dann sag mir bitte noch was Zeile 20 ist!
 
Jetzt mal abgesehen von den anderen Fehlern ist es kein schöner Stil zwei SQL Abfragen abzusetzen, wo nur eine nötig wäre, so weit ich die Tabellenstruktur laut deiner Aussagen überblicken kann.
PHP:
$abfrage = "SELECT n.id, n.news_title, n.news_text, n.time, c.name
             FROM news AS n 
             LEFT JOIN category AS c
             ON n.category = c.id
             WHERE news_title LIKE '%$suchstring%' 
             OR news_text LIKE '%$suchstring%'";

$ergebnis = mysql_query($abfrage); 

...

und dann Deine While-Schleife zwecks Ausgabe. Damit sollte das Skript weniger Speicher und SQL-Server Rechenzeit verbraten.
 
Wenn wir die Zeit ausrechnen würden die gespart wird, würden wir in etwa auf 0,001 Sekunde kommen. Klasse! Das macht vielleicht Sinn bei einer Seite wie tutorials.de, gmx.de etc.
Aber was interessieren mich bei 150.000 User pro Jahr solche kleinigkeiten! Stimmt, du hast recht man sollte schon darauf achten. Aber was solls!
 
Weiß ich, vielleicht hab ich ein bissl Aggro reagiert, du hast ja auch recht, aber ich finde Zwei Abfragen übersichtlicher! Aber das kann ja jeder so machen wie er gerne möchte!

Gruß
 
Es sieht nun so aus:
PHP:
<?php

$host = "*****";
$user = "*****";
$pass = "******";
$db = "******";

if (!$suchstring) {echo "es wurde kein suchbegriff eingegeben!";}

else {
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)) {

$catid = $comm['category'];

    $sql = mysql_query("SELECT name FROM category WHERE id = $catid");
    $category = mysql_fetch_array($sql);
    

$cat = $category['name'];
$time = date("j. n. Y - G:i", $comm['time']);
$id = $comm['id'];
$title = $comm['news_title'];
$text = $comm['news_text'];

echo "<table width=\"100%\" cellpadding=\"0\" cellspacing=\"0\" class=\"news\">
  <tr> 
    <td width=\"1003\" height=\"19\" valign=\"top\" class=\"news\"><b>$title</b></td>
  </tr>
  <tr>
    <td height=\"19\" valign=\"top\" class=\"newsmiddle\">$text</td>
  </tr>
  <tr> 
    <td height=\"19\" valign=\"top\" class=\"news\">
<div align=\"right\">$time | $cat | <a class=\"navi\" href=\"deadlink.php?id=$id\">deadlink?</a> | <a class=\"navi\" href=\"index.php?&comments=$id#newcomment\">kommentare</a></div>
    </td>
  </tr>
</table>
<br>";
}
}

?>
Nun kommt dieser Fehler:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in [...]suche.php on line 22

Kann es sein das es ein Problem damit gibt, das in beiden Tabellen ein Feld mit "id" gibt?
Das diese sich in die Quere kommen?
 
Zurück