如何使用PHP更新按钮更新多个mysql字段

时间:2016-03-21 06:20:05

标签: php html mysql

我的数据库中有一个包含几个字段的表。我正在使用此表单从此表中选择数据:

<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更新表。怎么做?我的网页截图如下。

Screen Shot

当我点击更新按钮时,应更新上述行。请参阅图像以获取清晰的信息。

3 个答案:

答案 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中删除。相反,应使用MySQLiPDO_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。