Rolf B: Per Klick Button erscheinen lassen, der Variable an andere Seite übergeben kann

Beitrag lesen

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