2016-02-25 3 views
1

Я создал страницу редактирования, которая показывает ранее добавленные данные, запустив цикл 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'); 

    } 
    } 
    } 
+0

может сказать, что ошибки вы получаете –

+0

если и видеть картину, которую я ХВ отправил в настоящее время его показывает две строки таблицы. Когда я обновляю оба из них, он будет получать одинаковое значение для обеих строк, поскольку я фактически дал разные обновления для каждого –

+0

'$ item_no' не определен. – fusion3k

ответ

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'); 
} 
1

и может попытаться прохождения Индентификационного с каждым полем, как

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

как это, а затем обновлять каждое поле по отношению к id в его имени.

Попробуйте и дайте мне знать, если это было полезно.

+0

, но я дал массив, чтобы называть атрибут.dose ваша вещь работает для цикла ? –

+0

Я попытался отправить идентификатор со всем текстовым полем с соответствующими идентификаторами. это было единственное лучшее решение, которое я нашел в моем случае. Вы можете попробовать и реализовать его сейчас и в будущем, если вы найдете более лучшее решение, а затем измените его с помощью этого решения. :) – nerdyDev

+0

вы можете изменить мой код и сообщение. becuse, я не понимаю, как это будет работать –

0

Ваша структура HTML предназначена для добавления новых строк таблицы, но ваш SQL-запрос использует оператор UPDATE.

В вашей форме есть только один идентификатор продукта и некоторые атрибуты («строка материал»): вы передаете - правильно, я полагаю, - только идентификатор продукта для 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 материальна идентификатор, замените его имя поля с соответствующее имя поля (идентификатор объекта).

Если вы намерены обновлять существующие строки, вам необходимо использовать запрос UPDATE с идентификатором «row material», а не идентификатором продукта.

Смежные вопросы