只需单击它们即可更新表行

时间:2016-02-25 11:08:15

标签: php mysql post

我创建了一个编辑页面,通过运行while循环显示以前添加的数据。

这些数据采用表格格式和输入字段。现在,我想给每条记录提供更新查询。重置数据后,我在SQL中的每一行都获得相同的值。

任何人都可以为我提供获取每行更新的解决方案。

image

这是我的代码

    <form action="edit_item.php" method="post">
             <h3> Add New Item</h3>

            <div class="vali-form">
           <input type="hidden" name="i_id" value="<?php echo $i_id; ?>" placeholder="Enter item no." required="">
            <div class="col-md-6 form-group1 form-last">
              <label class="control-label">Item No.</label>
              <input type="text" name="i_no" value="<?php echo $i_no ?>" placeholder="Enter item no." required="" readonly>
            </div>



            <div class="col-md-6 form-group1 form-last">
              <label class="control-label">Item Name.</label>
              <input type="text" name="i_name" value="<?php echo $i_name ?>" placeholder="Enter item name" required="">
            </div>
           <div class="clearfix"> </div>
           </div>
          <div class="col-md-12 form-group1 form-last">
         <div class="table-responsive">

   <table  ID="tblPets" class="table table-striped table-bordered table-hover">  

  <thead>  

        <tr>  

            <th><center>Row material Name</center></th> 
            <th><center>Description</center></th> 

            <th><center>Qty.</center></th> 

            <th><center>Rate</center></th> 

            <th><center><INPUT TYPE="Button" onClick="addRow('tblPets')" VALUE="Add Row"></center></th>  



        </tr>  
        </thead>
         <?php while($row1=mysqli_fetch_array($run1))//while look to fetch the result and store in a array $row.  
        {  
        $r_id=$row1[0];
        $r_item_id=$row1[2];
        $r_name=$row1[3];
        $r_qty=$row1[4];
        $r_rate=$row1[5];

        ?>
         <tbody>

        <tr>  

            <th><INPUT TYPE="text" NAME="r_name[]" value="<?php echo $r_name ?>" PLACEHOLDER="Name"></th> 
            <th><INPUT TYPE="text" NAME="r_desc[]" value="" PLACEHOLDER="description" ></th> 

            <th><INPUT TYPE="text" NAME="r_qty[]" value="<?php echo $r_qty ?>" PLACEHOLDER="QTY" ONINPUT="calculate()" ></th> 

            <th><INPUT TYPE="text" NAME="r_RATE[]" value="<?php echo $r_rate ?>" PLACEHOLDER="rate" ONINPUT="calculate()"></th> 
            <th></th>  

        </tr>
        </tbody>
        <?php } ?>
                               </table>


  </div></div>


            <div class="vali-form">

            <div class="col-md-6 form-group1 form-last">
              <label class="control-label">Qty.</label>
              <input type="text" name="i_qty" value="<?php echo $i_qty ?>" placeholder="Enter Qty" required="">
            </div>


            <div class="col-md-6 form-group1 form-last">
              <label class="control-label">Rate.</label>
              <input type="text" name="i_rate" value="<?php echo $i_rate ?>" placeholder="Enter rate" required="">
            </div>
            <div class="clearfix"> </div>
            </div>

            <div class="col-md-12 form-group">
              <button type="submit" name="Reset" class="btn btn-primary">Reset</button>
            </div>
          <div class="clearfix"> </div>
          </div>

        </form>

这里是更新的mysql查询

    if(isset($_POST['Reset'])){
$item_id=$_POST['i_id'];
$item_no=$_POST['i_no'];
$item_name=$_POST['i_name'];
$item_qty=$_POST['i_qty'];
$item_rate=$_POST['i_rate'];

$update_item="UPDATE tbl_item_mstr SET itm_name='$item_name', itm_qty='$item_qty', itm_rate='$item_rate' WHERE itm_id='$item_id' ";

$q1=mysqli_query($dbcon,$update_item); 


if($q1)
{
 //header('Location: ../item_master.php');
}
if (!empty($_POST['r_name']) && !empty($_POST['r_qty']) && !empty($_POST['r_RATE']) && is_array($_POST['r_name']) && is_array($_POST['r_qty']) && is_array($_POST['r_RATE']) && count($_POST['r_name']) === count($_POST['r_qty']))  {



    $user = $_SESSION['email'];
    $name_array = $_POST['r_name'];
    $qty_array = $_POST['r_qty'];
    $rate_array = $_POST['r_RATE'];
    for ($i = 0; $i < count($name_array); $i++) {

        $name = mysql_real_escape_string($name_array[$i]);
        $qty = mysql_real_escape_string($qty_array[$i]);
        $rate = mysql_real_escape_string($rate_array[$i]);

        $update_item="UPDATE tbl_row_material SET rm_user_id='$user', rm_name='$name', rm_qty='$qty', rm_rate='$rate' WHERE rm_item_id='$item_no' ";
        $r=mysqli_query($dbcon,$update_item);

         if(mysqli_query($dbcon,$update_item))  
    {  

     header('Location: ../item_master.php');

    } 
    }
    }

3 个答案:

答案 0 :(得分:1)

你可以尝试在每个字段中传递记录ID,如

<input type="text" name="first<?php echo $id?>"> 

像这样,然后根据其名称中的id更新每个字段。

如果这有用,请尝试告诉我。

答案 1 :(得分:0)

您的HTML结构旨在添加新的表行,但您的SQL查询使用UPDATE语句。

在你的表单中只有一个产品ID和一些属性(“行材料”):你传递 - 正确地,我想 - 只有产品id到php代码,但这样,执行查询

UPDATE tbl_row_material SET (...) WHERE rm_item_id='$item_no'

您在每个循环中更新所有行rm_item_id='$item_no'或 - 如果rm_item_id的值不存在于数据库中 - 您什么都不更新。

您必须使用INSERT查询:

INSERT INTO tbl_row_material
            (rm_user_id, rm_name, rm_qty, rm_rate, rm_item_id)
     VALUES ('$user', '$name', '$qty', '$rate', '$item_no');

上面的查询只是一个示例(我不知道您的表格结构):如果rm_item_id是材料ID,请将其字段名称替换为相应的字段名称(项目ID)。

如果您的目的是更新现有行,则必须使用带有“行材料”ID的UPDATE查询,而不是产品ID。

答案 2 :(得分:0)

我找到了同时更新多行的解决方案

    <?php while($row1=mysqli_fetch_array($run1))//while look to fetch the result and store in a array $row.  
        {  
        $r_id=$row1[0];
        $r_item_id=$row1[2];
        $r_name=$row1[3];
        $r_qty=$row1[4];
        $r_rate=$row1[5];

        ?>
         <tbody>

        <tr>  
  <INPUT TYPE="hidden" NAME="r_id[]" value="<?php echo $r_id ?>" PLACEHOLDER="Name" >
            <th><INPUT TYPE="text" NAME="r_name[]" value="<?php echo $r_name ?>" PLACEHOLDER="Name"></th> 
            <th><INPUT TYPE="text" NAME="r_desc[]" value="" PLACEHOLDER="description"></th> 

            <th><INPUT TYPE="text" NAME="r_qty[]" value="<?php echo $r_qty ?>" PLACEHOLDER="QTY" ONINPUT="calculate()"></th> 

            <th><INPUT TYPE="text" NAME="r_RATE[]" value="<?php echo $r_rate ?>" PLACEHOLDER="rate" ONINPUT="calculate()"></th> 
            <th></th>  

        </tr>
        </tbody>
        <?php } ?>

这里的SQL查询

    $idCount = count($_POST["r_id"]);
for($i=0;$i<$idCount;$i++) {
$r=mysqli_query($dbcon,"UPDATE tbl_row_material set rm_user_id='" . $_SESSION['email'][$i] . "', rm_name='" . $_POST['r_name'][$i] . "', rm_qty='" . $_POST['r_qty'][$i] . "', rm_rate='" . $_POST['r_RATE'][$i] . "' WHERE rm_item_id='" . $_POST['i_no']. "' AND rm_id='". $_POST['r_id'][$i]."'");
echo $r;
}
if($r){
header('Location: ../item_master.php');
}