Suchausgabe fehlerhaft?

markberg

Erfahrenes Mitglied
Hallo,
ich wollte eine kleine Suchfunktion basteln, die ich wie folgt realisirt habe:

$suchabfrage = $HTTP_POST_VARS["suchabfrage"];
$Verbindung =mysql_connect(xxx","xxx","xxx");
$SQLString = "SELECT * FROM db WHERE
stichworte = '$suchabfrage' ";
$Ergebnis = mysql_query($SQLString, $Verbindung);
if ($Ergebnis) {
$Datensatz = mysql_fetch_array ($Ergebnis);
while ($Datensatz) {
echo "<table widht=\"500\" border=\"0\" cellspacing=\"1\" cellpadding=\"0\">";
echo "<tr><td>" .$Datensatz["name"]."</td></tr>";
echo "<tr><td>" .$Datensatz["strasse"]."</td></tr>";
echo "<tr><td>" .$Datensatz["plz"]." Berlin - " .$Datensatz["bezirk"]."</td></tr>";
echo "<tr><td>" .$Datensatz["telefon"]. "</td></tr>";
echo "<tr><td><a href=' " .$Datensatz["www"] . " '>" .$Datensatz["www"] . "</a></td></tr>";
echo "<tr><td height=20></td></tr>";
echo "</table>";
$Datensatz = mysql_fetch_array($Ergebnis);
}
} else {
echo "Fehler in der Abfrage";
}

Problem, wenn ich eine Abfrage starte passiert nix. Liegt es daran, dass in 'stichworte' mehrer Worte liegen? Wenn Ja, gibt es einen Trick?

Thx...
 
Du könntest für alle angegebenen Stichworte einzeln eine Abfrage starten und dabei unscharf suchen.

Also sowas wie
"SELECT * FROM db WHERE stichworte LIKE '%".$stichwort."%' "

Aber wahrscheinlich lässt sich das auch noch eleganter lösen.
 
Zuletzt bearbeitet:
Probier mal Folgendes:
PHP:
<?php

	$link = mysql_connect('xxx', 'xxx', 'xxx');
	// Datenbankbezeichner muss noch angegeben werden
	mysql_db_select('Datenbankbezeichner');
	$query = "
		SELECT
		        `name`,
		        `strasse`,
		        `plz`,
		        `bezirk`,
		        `telefon`,
		        `www`
		  FROM
		        `db`
		  WHERE
		        `stichworte` LIKE '%".mysql_real_escape_string($_POST['suchabfrage'])."%'
		";
	$result = mysql_query($query, $link);
		or die('<p><strong>Fehler in der Datenbankabfrage:</strong> '.htmlentities(mysql_error()).':</p><pre>'.htmlentities($query).'</pre>');
	while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
		echo '<table>';
		echo '<tr><td>'.htmlentities($row['name']).'</td></tr>';
		echo '<tr><td>'.htmlentities($row['strasse']).'</td></tr>';
		echo '<tr><td>'.htmlentities($row['plz']).' Berlin - ' .htmlentities($row['bezirk']).'</td></tr>';
		echo '<tr><td>'.htmlentities($row['telefon']).'</td></tr>';
		echo '<tr><td><a href="'.htmlspecialchars($row['www']).'">'.htmlentities($row['www']).'</a></td></tr>';
		echo '</table>';
	}

?>
 
Zuletzt bearbeitet:
Ich denke mal ein grundlegendes Problem wird sein, dass du vergessen hast zu einer Datenbank zu verbinden, kurz gesagt das mysql_select_db() fehlt.
 
Um eine oder mehrer Tabellen einer Datenbank abzufragen, musst du sowohl eine Verbindung zum Datenbankserver herstellen (mysql_connect()) als auch eine Datenbank auswählen (mysql_db_select() oder auch USE-Abfrage).
 
Zurück