Hallo,
ich möchte den folgenden Code für eine Suche über PHP-Formulare in MySQL einsetzen. Eines vorweg, die Suchfunktion ist nicht von mir, sondern von TITUS. Danke schonmal dafür.
Ich finde einfach den Fehler nicht. Meine Tabelle heißt "termine", das Textfeld für das Suchwort "suche" und die ID heißt "termin_id".
Vielleicht findet jemand den Fehler oder kann mir einen Tipp geben, was ich falsch mache. Bin leider in PHP und MySQL noch nicht so bewandert.
Danke schonmal.
Daniel
Und hier der Code:
#Festlegen der Tabelle
$table = "termine";
#Zusammenbauen der SQL-Abfrage
function seek_table ($table, $suche)
{
#alle Spaltennamen ermitteln
$q = mysql_query ('show fields from '.$table);
$fields = array();
while ($x = mysql_fetch_array($q))
$fields[] = $x['Field'];
mysql_free_result ($q);
#jede Spalte in einer eigenen Query abfragen wg. Perfomance
$result = array();
for ($i=0; $i<count($fields); $i++)
if ('id'!=($col=$field[$i])) #Spalte 'ID' auslassen
{
$q = mysql_query ("select * from $table where $col like '%$suche%'");
if ($q)
{
while ($x = mysql_fetch_array($q))
$result[$x['id']] = $x;
mysql_free_result ($q);
}
}
ksort ($result);
return $result;
}
$zeilen = mysql_num_rows($result);
Und noch der Code der Abfrage, der sollte eigentlich ok sein, aber bei mir weiß man ja nie. :-)
#Ab hier folgt die Ausgabe der Ergebnisse in einer Tabelle.
#Tabelle öffnen
echo "<table border=1>";
#Überschriften der einzelnen Spalten
echo "<tr><td><b>Termin ID</b></td>";
echo "<td><b>Ort</b></td>";
echo "<td><b>Datum</b></td>";
echo "<td><b>Enddatum</b></td>";
echo "<td><b>Uhrzeit</b></td>";
echo "<td><b>Endzeit</b></td>";
echo "<td><b>Terminart</b></td>";
echo "<td><b>Person</b></td>";
echo "<td><b>Semester</b></td>";
echo "<td><b>Kommentar</b></td></tr>";
for ($i=0; $i<$zeilen; $i++)
{
$terminid_ausgabe = mysql_result($result, $i, "termin_id");
$ort_ausgabe = mysql_result($result, $i, "ort");
$datum_ausgabe = mysql_result($result, $i, "datum");
$bisdatum_ausgabe = mysql_result($result, $i, "bis_datum");
$uhrzeit_ausgabe = mysql_result($result, $i, "uhrzeit");
$endzeit_ausgabe = mysql_result($result, $i, "endzeit");
$terminart_ausgabe = mysql_result($result, $i, "terminart");
$person_ausgabe = mysql_result($result, $i, "person");
$semester_ausgabe = mysql_result($result, $i, "semester");
$kommentar_ausgabe = mysql_result($result, $i, "kommentar");
#Erstellen und füllen der Spalten
echo "<tr><td>$terminid_ausgabe</td><td>$ort_ausgabe</td> <td>$datum_ausgabe</td>";
echo "<td>$bisdatum_ausgabe</td> <td>$uhrzeit_ausgabe</td>";
echo "<td>$endzeit_ausgabe</td> <td>$terminart_ausgabe</td>";
echo "<td>$person_ausgabe</td> <td>$semester_ausgabe</td>";
echo "<td>$kommentar_ausgabe</td> </tr>";
}
#Tabelle schliessen
echo "</table>";
#Anzahl der passenden Datensätze
$anzahl = mysql_num_rows($result);
if ($anzahl > 0) {
echo "<br><br>";
echo "Ihre Suche hat $anzahl Treffer ergeben.";
}
else
{
echo "<br><br>";
echo "Zu ihrer Suchanfrage konnte leider kein Termin gefunden werden. Bitte versuchen sie eine andere Auswahl.";
}
ich möchte den folgenden Code für eine Suche über PHP-Formulare in MySQL einsetzen. Eines vorweg, die Suchfunktion ist nicht von mir, sondern von TITUS. Danke schonmal dafür.
Ich finde einfach den Fehler nicht. Meine Tabelle heißt "termine", das Textfeld für das Suchwort "suche" und die ID heißt "termin_id".
Vielleicht findet jemand den Fehler oder kann mir einen Tipp geben, was ich falsch mache. Bin leider in PHP und MySQL noch nicht so bewandert.
Danke schonmal.
Daniel
Und hier der Code:
#Festlegen der Tabelle
$table = "termine";
#Zusammenbauen der SQL-Abfrage
function seek_table ($table, $suche)
{
#alle Spaltennamen ermitteln
$q = mysql_query ('show fields from '.$table);
$fields = array();
while ($x = mysql_fetch_array($q))
$fields[] = $x['Field'];
mysql_free_result ($q);
#jede Spalte in einer eigenen Query abfragen wg. Perfomance
$result = array();
for ($i=0; $i<count($fields); $i++)
if ('id'!=($col=$field[$i])) #Spalte 'ID' auslassen
{
$q = mysql_query ("select * from $table where $col like '%$suche%'");
if ($q)
{
while ($x = mysql_fetch_array($q))
$result[$x['id']] = $x;
mysql_free_result ($q);
}
}
ksort ($result);
return $result;
}
$zeilen = mysql_num_rows($result);
Und noch der Code der Abfrage, der sollte eigentlich ok sein, aber bei mir weiß man ja nie. :-)
#Ab hier folgt die Ausgabe der Ergebnisse in einer Tabelle.
#Tabelle öffnen
echo "<table border=1>";
#Überschriften der einzelnen Spalten
echo "<tr><td><b>Termin ID</b></td>";
echo "<td><b>Ort</b></td>";
echo "<td><b>Datum</b></td>";
echo "<td><b>Enddatum</b></td>";
echo "<td><b>Uhrzeit</b></td>";
echo "<td><b>Endzeit</b></td>";
echo "<td><b>Terminart</b></td>";
echo "<td><b>Person</b></td>";
echo "<td><b>Semester</b></td>";
echo "<td><b>Kommentar</b></td></tr>";
for ($i=0; $i<$zeilen; $i++)
{
$terminid_ausgabe = mysql_result($result, $i, "termin_id");
$ort_ausgabe = mysql_result($result, $i, "ort");
$datum_ausgabe = mysql_result($result, $i, "datum");
$bisdatum_ausgabe = mysql_result($result, $i, "bis_datum");
$uhrzeit_ausgabe = mysql_result($result, $i, "uhrzeit");
$endzeit_ausgabe = mysql_result($result, $i, "endzeit");
$terminart_ausgabe = mysql_result($result, $i, "terminart");
$person_ausgabe = mysql_result($result, $i, "person");
$semester_ausgabe = mysql_result($result, $i, "semester");
$kommentar_ausgabe = mysql_result($result, $i, "kommentar");
#Erstellen und füllen der Spalten
echo "<tr><td>$terminid_ausgabe</td><td>$ort_ausgabe</td> <td>$datum_ausgabe</td>";
echo "<td>$bisdatum_ausgabe</td> <td>$uhrzeit_ausgabe</td>";
echo "<td>$endzeit_ausgabe</td> <td>$terminart_ausgabe</td>";
echo "<td>$person_ausgabe</td> <td>$semester_ausgabe</td>";
echo "<td>$kommentar_ausgabe</td> </tr>";
}
#Tabelle schliessen
echo "</table>";
#Anzahl der passenden Datensätze
$anzahl = mysql_num_rows($result);
if ($anzahl > 0) {
echo "<br><br>";
echo "Ihre Suche hat $anzahl Treffer ergeben.";
}
else
{
echo "<br><br>";
echo "Zu ihrer Suchanfrage konnte leider kein Termin gefunden werden. Bitte versuchen sie eine andere Auswahl.";
}
Kommentar