2017-11-02 10 views
0

私は値を変更できるSQLデータベースの行を持つテーブルを持っています。私はデータベース内でデータの行を変更できるように、選択されたオプションが組み込まれたフォームを作成しました。 1つのフォームを送信するだけで、データベース内の複数の行を同時に変更できるようにしたい。これは私のコードをフォームとPHPでテーブルを作成することです。私はupdatedb.phpページにすべての値を取得する方法を見つけることができますが、そこからデータベースの複数の行を更新する方法はわかりません。あなたのupdatedb.phpファイルでPHPとHTMLフォームで複数のSQL行を更新する

<form action="updatedb.php" method="POST"> 
<tbody> 
<?php 
$servername = "localhost"; 
$username = "******"; 
$password = "******"; 
$dbname = "database"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 


$sql = "SELECT * FROM table WHERE value = '$value'"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
// output data of each row 
while($row = $result->fetch_assoc()) { 

$test = $row["value3"]; 
$test2 =$row["value5"]; 

if ($row["status"] == "Value1") { $status1 = 'selected'; } else { $status1 = ''; } 

if ($row["status"] == "Value2") { $status2 = 'selected'; } else { $status2 = ''; } 

if ($row["status"] == "Value3") { $status3 = 'selected'; } else { $status3 = ''; } 

if ($row["status"] == "Value4") { $status4 = 'selected'; } else { $status4 = ''; } 

if ($row["status"] == "Value5") { $status5 = 'selected'; } else { $status5 = ''; } 

//This is the table that is created 
echo " 
<tr><td>" . $row["value"] . $row["value2"] . "</td> 
<td>" . $row["value3"] . "</td> 
<td>" . $row["value4"] . "</td> 
<td>" . $row["value5"] . "</td> 
<td>" . $row["value6"] . "</td> 
<td>" . $row["value7"] . "</td> 

<td> 
<select name='status[]' required> 
    <option $status1 value='Status1'>Status1</option> 
    <option $status2 value='Status2'>Status2</option> 
    <option $status3 value='Status3'>Status3</option> 
    <option $status4 value='Status4'>Status4</option> 
    <option $status5 value='Status5'>Status5</option> 
</select> 
</td> 

<td>" . $row["value8"] . "</td></tr>"; 
echo " 
    <input name='send[]' value='$test' style='display: none' />". 
"<input name='send2[]' value='$test2' style='display: none' />"; 
    } 

    } else { 
    //No data to show 
    } 

    $conn->close(); 

    ?> 
</tbody> 
<button type="submit">Submit</button> 
</form> 

答えて

1

あなたは、状況の配列を取得送信しSEND2

あなたは、レコードのIDが必要ですまず第一に、あなたは次のようにフォームにIDを持つ1つの隠れフィールド を追加することができますので、あなたのupdatedb.phpに比べ

<input type="hidden" name="id[]" value="$row['id']"> 

for($i=0;$i<count($_POST['id']);$i++){  
    $sql = "update tableName set status = '".$_POST['status'][$i]."',send = '".$_POST['send'][$i]."',send2 = '".$_POST['send2'][$i]."' where id = '".$_POST['id'][$i]."'"; 
    if(!mysql_query($sql)){ 
     echo "not updated".$_POST['id'][$i]; exit(); 
    } 

}

+0

完全に機能しました。ありがとうございました! –

+0

SQLインジェクションに注意してください:https://stackoverflow.com/a/601524/1461181、https://stackoverflow.com/a/60496/1461181 – DanielO

関連する問題