MySQL的:无线电检查插入到数据库中的多行

时间:2018-10-02 04:15:14

标签: php mysql

我想将两个不同的数据插入到具有不同行的表中。如果只有一个数据,那就可以完成。当两个数据如图片中所示时,会发生此问题。

这是我的显示html。 enter image description here

foreach ($rows as $row) {
        <tr>
            <input type="hidden" id="roomID" name="roomID" value="<?php echo $row['roomID']?>">
            <td style="text-align:center"><?php echo $i++?> </td>
            <td><?php echo $row['room_name']?></td>
            <td style="text-align:center"><?php echo $row['number_room']?> </td>
            <td style="text-align:center"><input type="radio" name="status[<?php echo $i; ?>]" id="status" value="1" required> Available</td>
            <td style="text-align:center"><input type="radio" name="status[<?php echo $i; ?>]" id="status" value="2" required> Not Available</td>
        </tr>
 }

这是要插入数据库。我尝试使用 foreach 循环插入表,但只插入一个数据。

$data = $_POST['status'];
$id = $_POST['roomID'];

    $sql = 'UPDATE `booking_room` 
     SET `available` = '.$data.'
    WHERE id_hotelroom = '.$id.'';

    mysql_query($sql);

还有其他我没有注意到/可以解决的问题的解决方案吗?谢谢。

2 个答案:

答案 0 :(得分:0)

最好的方法是循环。但是需要在html中做一些更正。

<?php
	$i = 0;
	foreach ($rows as $row) {
	?>	
			<tr>
				<input type="hidden" id="roomID" name="row[<?=$i?>][roomid]" value="<?php echo $row['roomID']?>">
				<td style="text-align:center"><?php echo $i?> </td>
				<td><?php echo $row['room_name']?></td>
				<td style="text-align:center"><?php echo $row['number_room']?> </td>
				<td style="text-align:center"><input type="radio" name="row[<?=$i?>][status]" id="status" value="1" required> Available</td>
				<td style="text-align:center"><input type="radio" name="row[<?=$i?>][status]" id="status" value="2" required> Not Available</td>
			</tr>
	<?php
		$i++;
	 }
?>

然后您就可以循环并使用php。

<?php 
    $data_array = $_POST['row'];
    foreach($data_array as $row){
        $room_id = $row[roomid];
        $status = $row[status];

        $sql = 'UPDATE `booking_room` 
         SET `available` = '.$status.'
        WHERE id_hotelroom = '.$room_id.'';

        mysql_query($sql);
    }
?> 

我不确定 name="row[<?=$i?>][roomid]" 要么 name="row[<?=$i?>]['roomid']"。两者都检查。

答案 1 :(得分:0)

尝试此代码:

foreach ($rows as $row) { ?>
            <tr>
                <input type="hidden" id="roomID" name="roomID[]" value="<?php echo $row['roomID']?>">
                <td style="text-align:center"><?php echo $i++?> </td>
                <td><?php echo $row['room_name']?></td>
                <td style="text-align:center"><?php echo $row['number_room']?> </td>
                <td style="text-align:center"><input type="radio" name="status<?=$row['roomID']?>[]" id="status" value="1" required> Available</td>
                <td style="text-align:center"><input type="radio" name="status<?=$row['roomID']?>[]" id="status" value="2" required> Not Available</td>
            </tr>
     <?php } 


foreach ($_POST['roomID'] as $key => $roomID) {
    $roomID =  $roomID;
    $status =  $_POST['status'.$roomID][$key];

    $sql = "UPDATE `booking_room` SET `available` = '".$status."' WHERE id_hotelroom = '".$roomID."'";

    mysql_query($sql);
}