2012-03-31 40 views
0

こんにちは私は私のテーブルのすべての内容を表示するページを持っています。テーブルの各行に沿って、私はチェックボックスを含む列も持っています。ユーザーがチェックボックスにチェックを入れ、送信ボタンを押して1つまたは複数の行を選択すると、次のページ(buy.php)の表にその行だけが表示されます。私はそれが基本的に選択された行ごとの選択文であることを知っています。しかし、私はこれに近づく方法を知らない。誰でも助けることができますか?おかげチェックボックス(PHP)を使用してmysqlテーブルから行を選択する方法

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

編集:私は以下の提案を試してみましたが、私はテーブルを取得できませんでした。ページのタイトルだけです:

  <!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インジェクションから保護する必要があります:) –

+0

私は新しいページのコーディングでステップ2の部分を追加しますか?また、次のステートメントは正しいです:SELECT * FROM Items WHERE 'ID' = $ item – Matt9Atkins

+0

ステップ2は新しいページ/プロセスの注文ページにあります。そのSQL文は正しくありません。 'ID'は '\' ID \ ''でなければなりません。列名は\ values used(一重引用符)を使用します – 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

//このチェックボックスを使用してください

0

//このチェックボックスはを使用します

//buy.phpのforeachの($アイテムとして$ _ POST [ '購入')=は "ID = $アイテムアイテムSELECT * FROM" {

$クエリ。 //使用「いずれかの問題は慎重にあなたのデータベーステーブル//ダウンロードファイルを見て、テーブルのSQLデータと

それを2fileみてください場合は、」

//それを試してみてください// https://copy.com/8ZsBAFj7LvypLJkK

関連する問題