Hallo Nadine,
ein Hinweis noch zur Ausgabe deiner Ergebnistabelle. Und ich sehe dabei noch: dein set_charset kommt zu spät, der müsste meiner Meinung nach eigentlich schon vor dem mysqli_query stehen.
Es ist unschön, größere Mengen HTML per echo auszugeben. Du kannst jederzeit aus dem PHP Kontext aus- und wieder einsteigen, das macht keinen Performance-Unterschied. Eine ECHO-Orgie wie bei Dir ist höchstens interessant, wenn man das HTML sehr kleinteilig zusammensetzt (wenn z.B. die Tabellenspalten konfigurierbar sind).
if ($search->num_rows > 0) : ?>
<table>
<tr>
<th>Autor</th>
<th>Titel</th>
<th>Untertitel</th>
<th>Jahr</th>
<th>BuchID</th>
<th>Verleihstatus</th>
</tr>
<?php while($row = $search-> fetch_assoc()) : ?>
<tr>
<td><?= htmlspecialchars($row["Autor"]) ?></td>
<td><?= htmlspecialchars($row["Titel"]) ?></td>
<td><?= htmlspecialchars($row["Untertitel"]) ?></td>
<td><?= htmlspecialchars($row["Jahr"]) ?></td>
<td><?= htmlspecialchars($row["BuchID"]) ?></td>
<td><?= htmlspecialchars($row["Verleihstatus"]) ?></td>
</tr>
<?php endwhile; ?>
</table>
<?php endif;
...ggf weiterer PHP Code
?>
Man verwendet bei solchen Konstrukten dann besser die "alternative Syntax" für Kontrollstrukturen, also dies:
if ($bedingung) : ?>
// html wüste
<?php endif;
statt dies:
if ($bedingung) { ?>
// html wüste
<?php }
Grund: Die einsame } wird bei solchen Konstrukten gern im Getümmel übersehen. Noch besser ist es, die Ausgabe des HTML-Blocks in eine Funktion auszulagern:
if ($search->num_rows > 0)
show_search_result($search);
Und hinter der eigentlichen Programmlogik notiert man dann die Funktionen:
function show_search_result($search) {
?>
<table>
<tr>
<th>Autor</th>
<th>Titel</th>
<th>Untertitel</th>
<th>Jahr</th>
<th>BuchID</th>
<th>Verleihstatus</th>
</tr>
<?php
while($row = $search-> fetch_assoc()) {
show_search_result_row($row);
}
?>
</table>
<?php
}
function show_search_result_row($row) {
?>
<tr>
<td><?= htmlspecialchars($row["Autor"]) ?></td>
<td><?= htmlspecialchars($row["Titel"]) ?></td>
<td><?= htmlspecialchars($row["Untertitel"]) ?></td>
<td><?= htmlspecialchars($row["Jahr"]9 ?></td>
<td><?= htmlspecialchars($row["BuchID"]) ?></td>
<td><?= htmlspecialchars($row["Verleihstatus"]) ?></td>
</tr>
<?php
} // endfunction;
...ggf weiterer PHP Code
?>
Durch die Funktionengliederung hast Du keine HTML-Blöcke innerhalb von PHP Blockstrukturen, und kannst bei { und } bleiben.
Edit 10.03.: natürlich müssen die Ausgaben mit htmlspecialchars maskiert werden
Rolf
sumpsi - posui - clusi