我的数据库中有一个包含几个字段的表。我正在使用此表单从此表中选择数据:
<form id="#" name="#" method= "post" action="cms_order_detail.php">
<table width="100%" border="1" align="center">
<th> Item </th>
<th> Price </th>
<th> Active </th>
<tr>
<?php
$sql= mysql_query("SELECT * FROM `product` where `item_id` = '$id' AND `type`=0 ");
while($row= mysql_fetch_array($sql)){
$price = $row['price'];
$item_id = $row['item_id'];
$size = $row['size'];
?>
<td class="price"> <?php echo $size;?> </td>
<td class="price" width="1px">
<input type="number" name="pro_price" id="pro_price" value="<?php echo $price;?>" style="width:4.2em; " >
</td>
<td align="center">
<input type="number" name="onof" id="onof" value="<?php echo $row['active'];?>" style="width:2.5em; " min="0" max="1" title="1= active and 0= De-active">
</td>
</tr>
<?php }?>
</table>
<button class="updateBtn"> Update </button>
<div style="clear:both"> </div>
</form>
我必须使用MySQL和PHP更新表。怎么做?我的网页截图如下。
当我点击更新按钮时,应更新上述行。请参阅图像以获取清晰的信息。
答案 0 :(得分:0)
为此,您必须在上面的代码中进行更改,因为对于此代码,我们找不到哪个值与哪个行相关联?
<?php
$sql= mysql_query("SELECT * FROM `product` where `item_id` = '$id' AND `type`=0 ");
while($row= mysql_fetch_array($sql)){
$price= $row['price'];
$item_id= $row['item_id'];
$size= $row['size'];
?>
<td class="price"><?php echo $size;?> </td>
<td class="price" width="1px">
<input type="number" name="pro_price-$row['item_id']" id="pro_price-$row['item_id']" value="<?php echo $price;?>" style="width:4.2em; " >
</td>
<td align="center">
<input type="number" name="onof_$row['item_id']" id="onof_$row['item_id']" value="<?php echo $row['active'];?>" style="width:2.5em; " min="0" max="1" title="1= active and 0= De-active">
</td>
</tr>
<?php }?>
现在,当您打印($ _ REQUEST); 时,您将获得具有不同名称的所有值,您将获得具有不同名称的所有值。你必须使用 - 从每个变量中提取item_id,并在for循环或while循环中运行update query。
答案 1 :(得分:0)
前视图代码(用于显示):
<form id="frm_update" name="frm_update" method= "post" action="cms_order_detail.php">
<table width="100%" border="1" align="center">
<th> Item </th>
<th> Price </th>
<th> Active </th>
<tr>
<?php
$sql= mysql_query("SELECT * FROM `product` where `item_id` = '$id' AND `type`=0 ");
while($row= mysql_fetch_array($sql)){
$price = $row['price'];
$item_id = $row['item_id'];
$size = $row['size'];
?>
<td class="price"> <?php echo $size;?> </td>
<td class="price" width="1px">
<input type="number" name="pro_price[]" id="pro_price" value="<?php echo $price;?>" style="width:4.2em; " >
</td>
<td align="center">
<input type="number" name="onof[]" id="onof" value="<?php echo $row['active'];?>" style="width:2.5em; " min="0" max="1" title="1= active and 0= De-active">
</td>
<input type="hidden" name="item_id[]" value="<?php print($item_id);?>"/>
</tr>
<?php }?>
</table>
<input type='submit' name='submit' Value='Update' class="updateBtn"/>
<div style="clear:both"> </div>
</form>
后端代码(有关更新):
<?php
/**
* YOUR CONNECTION...
*$conn = mysql_connect("localhost","root","");
*mysql_select_db("phppot_examples",$conn);
**/
if(isset($_POST["submit"]) && $_POST["submit"]!="") {
$item_idCount = count($_POST["item_id"]);
for($i=0; $i<$item_idCount; $i++) {
mysql_query("UPDATE users set price='" . $_POST["pro_price"][$i] . "', active='" . $_POST["onof"][$i] . "' WHERE item_id ='" . $_POST["item_id"][$i] . "'");
}
header("Location:MYFRONTURL.php");
}
?>
警告:强> 此扩展在PHP 5.5.0中已弃用,并且已在PHP 7.0.0中删除。相反,应使用MySQLi或PDO_MySQL扩展名。
<强>更新强>
使用<input type='submit' name='submit' Value='Update' class="updateBtn"/>
代替<button class="updateBtn"> Update </button>
。
这应该有效!
答案 2 :(得分:0)
您需要所有ID。你可以通过在foreach中发布:
来做到这一点<input type="hidden" name="id[]" value="<?php echo $row['item_id']; ?>" />
这将导致HTML:
<input type="hidden" name="id[]" value="1" />
...
<input type="hidden" name="id[]" value="6" />
并且$ _POST [&#39; id&#39;]是一个包含1,2等等的数组。
你也可以输入HTML:
<input type="number" name="pro_price[<?php echo $row['item_id']; ?>]" />
<input type="number" name="onof[<?php echo $row['item_id']; ?>]" />
这样$ pro_price = $ _ POST [&#39; pro_price&#39;],$ onof = $ _ POST [&#39; onof&#39;]将是一个与id值相同的键,因此:
foreach($id as $id1)
{
// Pseudocode
UPDATE... SET pro_price=$pro_price[$id1],onof=$onof[$id1] WHERE id = $id1;
}
这样你就有了一个SUBMIT和多个UPDATE。