Hallo Ich habe eine Seite, die den gesamten Inhalt meiner Tabelle anzeigt. Entlang jeder Zeile der Tabelle habe ich auch eine Spalte mit einem Kontrollkästchen. Wenn der Benutzer eine oder mehrere Zeilen auswählt, indem er das Kontrollkästchen ankreuzt und den Submit-Button drückt, möchte ich nur diese Zeilen in einer Tabelle auf der nächsten Seite (buy.php) anzeigen. Ich weiß, es ist im Grunde eine Select-Anweisung pro Zeile, die ausgewählt ist. Aber ich weiß nicht, wie ich das angehen soll. Kann jemand helfen? DankeSo wählen Sie eine Zeile (n) aus mysql Tabelle mit Kontrollkästchen (PHP)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Shopping</title>
</head>
<body>
<form action='buy.php' method='post'>
<input type='submit' value='Submit' />
</form>
<h1>Buy</h1>
<?php // Script 12.7 - sopping.php
$db = mysql_connect('localhost', '#####', '#####');
mysql_select_db('shopping', $db);
$query = 'SELECT * FROM Items';
if ($r = mysql_query($query, $db)) {
print "<form>
<table>";
while ($row = mysql_fetch_array($r)) {
print
"<tr>
<td>{$row['ID']}</td>
<td>{$row['Name']}</td>
<td>{$row['Cost']}</td>
<td><input type='checkbox' name='buy[{$row['ID']}] value='buy' /></td>
</tr>";
}
print "</table>
</form>";
} else {
print '<p style="color: blue">Error!</p>';
}
mysql_close($db); // Close the connection.
?>
</body>
</html>
EDIT: Ich habe den Vorschlag unten versucht, und ich habe keinen Tisch bekommen. Nur der Titel der Seite apparte:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Confirmation</title>
</head>
<body>
<h1>Order Details</h1>
<?php // Script 12.7 - buy.php
$db = mysql_connect('localhost', '#####', '#####');
mysql_select_db('shopping', $db);
foreach($_POST['buy'] as $item) {
$query = 'SELECT * FROM Items WHERE ID = $item';
if ($r = mysql_query($query, $db)) {
print "<table>";
while ($row = mysql_fetch_array($r)) {
print
"<tr>
<td>{$row['ID']}</td>
<td>{$row['Name']}</td>
<td>{$row['Cost']}</td>
</tr>";
}
print "</table>";
} else {
print '<p style="color: blue">Error!</p>';
}
}
mysql_close($db);
?>
</body>
</html>
Sie sollten auch beachten, dass einige Schecks sollten auf den Wert von der Post gemacht werden und vor sql Injektionen schützen :) –
füge ich den Schritt 2 Teil in der Codierung für die neue Seite hinzu? Außerdem ist diese Aussage korrekt: SELECT * FROM Artikel WHERE 'ID' = $ item – Matt9Atkins
Schritt 2 befindet sich auf der neuen Seite/Prozessbestellseite. Diese SQL-Anweisung ist falsch. 'ID' sollte '\ 'ID \' 'sein, benutze den Schlüssel mit ~. Spaltennamen verwenden \ 'values use' (einfaches Zitat) – David