2012-03-31 40 views
0

嗨我有一個頁面顯示我的表的所有內容。沿着表格的每一行我也有一個包含複選框的列。當用戶通過勾選複選框並按下提交按鈕來選擇一行或多行時,我只想讓這些行出現在下一頁的表格(buy.php)中。我知道它基本上是每行選擇的select語句。但我不知道如何解決這個問題。任何人都可以幫忙嗎?謝謝如何使用複選框(PHP)從mysql表中選擇一行(s)

 <!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> 

編輯:我試了下面的建議,我沒有得到一張表。就在頁面的標題appeard:

  <!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> 

回答

6

你需要創建一個動態的SQL查詢。

1)我建議你通過所有的購買選項更改複選框以下

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

2)循環

<?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

你還應該注意,某些應該檢查來自帖子的值並防止sql注入:) – 2012-03-31 12:35:07

+0

我是否在新頁面的編碼中添加了第2步的部分?此語句也是正確的:SELECT * FROM Items WHERE'ID'= $ item – Matt9Atkins 2012-03-31 13:06:53

+0

步驟2位於新頁面/流程訂單頁面上。該sql語句不正確。 'ID'應該是'\'ID \'',用〜鍵來使用。列名使用'values use'(單引號) – David 2012-03-31 14:01:03

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

//此複選框使用 2015-05-15 12:28:38

0

//此複選框使用

//buy.php的foreach($ _ POST [ '購買']爲$項目){

$查詢= 「SELECT * FROM物品WHERE ID = $項」; //使用「」

//嘗試,如果有任何問題,請仔細看看你的數據庫表//下載文件,並與表的SQL數據試試2file

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

相關問題