2012-03-31 3 views
0

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> 

Antwort

6

Sie müssen eine dynamische SQL-Abfrage erstellen.

1) Ich schlage vor, Sie Kontrollkästchen, um die folgenden zu ändern

<input type='checkbox' name='buy[]' value='{$row['ID']}' /> 

2) Schleife durch alle der Kaufoptionen

<?php 
    foreach($_POST['buy'] as $item) { 
    // Append the ID (in the $item variable) to the SQL query, using WHERE `ID` = $item OR `ID` = $item and so on 
    } 
?> 

UPDATE:

<?php // Script 12.7 - buy.php 

$db = mysql_connect('localhost', '#####', '#####'); 
mysql_select_db('shopping', $db); 

$query = 'SELECT * FROM Items WHERE '; 

$item_count = count($_POST['buy']); 

for($i = 0; $i < $item_count; $i++) { 
    $itemid = (int)mysql_real_escape_string($_POST['buy'][i]); // Secures It 
    $query .= '`ID` = '.$itemid; 
    if($i +1 < $item_count) { 
    $query .= ' OR '; 
    } 
} 

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>"; 
mysql_close($db); 
?> 
+0

Sie sollten auch beachten, dass einige Schecks sollten auf den Wert von der Post gemacht werden und vor sql Injektionen schützen :) –

+0

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

+0

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

0
// this checkbox use 
<input type='checkbox' name='buy[]' value='{$row['ID']}' /> 


//buy.php 
foreach($_POST['buy'] as $item) { 

$query = "SELECT * FROM Items WHERE ID = $item"; 
//use " " 

// try it if any problem please carefully look you database table 
// download file and try it 2file with table sql data 

// https://copy.com/8ZsBAFj7LvypLJkK 
+0

// dieses Kontrollkästchen verwenden

0

// Dieses Kontrollkästchen verwendet

//buy.php foreach ($ _ POST [ 'kaufen'] as $ item) {

$ query = "SELECT * FROM Artikel WHERE ID = $ item"; // use „“

// es versuchen, wenn irgendein Problem Sie vorsichtig Download-Datei Tabelle // Datenbank suchen und versuchen, mit Tabelle SQL-Daten 2file bitte

// https://copy.com/8ZsBAFj7LvypLJkK

Verwandte Themen