Jump to content

Updating multiple rows


baris22

Recommended Posts

Hello all,

 

I need some help. This is my database:

 

a.gif

 

This is the output of my code:

 

c.gif

 

When I submit the form it only updates the first row. It does not update the second one.

 

b.gif

 

Can you please help me.

Thanks

 


<?
include_once ("config/connect.php");
$ref=$_GET['ref'];

if (isset($_POST['ok'])) 
{
     $item_name = $_POST['item_name'];
     $worker = $_POST['worker'];	 
     $item_id = $_POST['item_id'];

     for ($i=0;$i<count($_POST['item_id']);$i++) {

     $query5 = mysql_query("UPDATE item SET item_name = '".$item_name[$i]."', worker_id = '".$worker[$i]."' WHERE item_id = '".$item_id[$i]."' ") or die(mysql_error());
     }            
}

?>


<?php
$query1 = "SELECT * FROM item WHERE order_reference_number='$ref' GROUP BY item_amount";
$portfolio = mysql_query($query1);
while($row1 = mysql_fetch_array($portfolio)) {
?>
<table width="100%">
<tr>
<td valign="top" width="266">
<?=$row1['item_amount'];?> of 
<input name="item_name[]" type="text" value="<?php echo $row1['item_name'];?>" size="30" />
<input name="item_id[]" type="hidden" value="<?=$row1['item_id'];?>" />
</td>
<td width="480">
<?php
for ($i=0; $i<$row1['item_amount']; $i++) {
?>
Choice a worker for this job

<select name="worker[]" id="">
<option value="Select">Select</option>
<?php  
$query3 = "SELECT * FROM worker";
$portfolio1 = mysql_query($query3);
while($row3 = mysql_fetch_array($portfolio1)) {
?>    
<option><?php echo $row3['worker_name'];?></option>
<?php } ?>
</select><br /><br />

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

Link to comment
https://forums.phpfreaks.com/topic/178348-updating-multiple-rows/
Share on other sites

Thanks for replies. I changed the codes and it is working now. 1 more question: How can choice a worker select box value can be remembered instead of displaying "Select" value

 

5.gif

 


<?
include_once ("config/connect.php");
$ref=$_GET['ref'];

     if (isset($_POST['ok'])) 
{
 $worker = $_POST['worker'];	 
     $item_id = $_POST['item_id'];


     for ($i=0;$i<=count($item_id);$i++) { 

     $query5 = mysql_query("UPDATE item SET worker_id = '".$worker[$i]."' WHERE item_id = '".$item_id[$i]."' ") or die(mysql_error());
     
 }     
     
}

?>



<table width="100%" border="1" cellpadding="4" cellspacing="4">
<tr>
    <td><strong>Item</strong></td>
    <td><strong>choice a worker</strong></td>
    <td><strong>chosen worker</strong></td>
  </tr>
  <tr><?php
$query99 = "SELECT * FROM item WHERE order_reference_number='$ref' ";
$portfolio = mysql_query($query99);
while($row109 = mysql_fetch_array($portfolio)) {
?>
    <td>
<?=$row109['item_name'];?>
    <input name="item_id[]" type="hidden" value="<?=$row109['item_id'];?>" />
    </td>
    <td>
    <select name="worker[]" id="">
<option value="Select">Select</option>
<?php  
$query3 = "SELECT * FROM worker";
$portfolio1 = mysql_query($query3);
while($row3 = mysql_fetch_array($portfolio1)) {
?>    
<option><?php echo $row3['worker_name'];?></option>
<?php } ?>
</select>
</td>
    <td><?=$row109['worker_id'];?></td>
  </tr><?php
}
?>
</table>

 

Thank you for your help. One last question

 


<?php
$query99 = "SELECT * FROM item WHERE order_reference_number='$ref'";
$portfolio = mysql_query($query99);
while($row109 = mysql_fetch_array($portfolio)) {
?>
<?=$row109['item_name'];?>

 

this is the code. How can I make an if statement that if  <?=$row109['item_amount'];?> is bigger than 1 display <?=$row109['item_name'];?> only once.

 

Thank you very much

hello,

 

This is the last code.

 


<?
include_once ("config/connect.php");
$ref=$_GET['ref'];

if (isset($_POST['ok'])) 
{
     $worker = $_POST['worker'];	 
     $item_id = $_POST['item_id'];


     for ($i=0;$i<=count($item_id);$i++) { 

     $query5 = mysql_query("UPDATE item SET worker_id = '".$worker[$i]."' WHERE item_id = '".$item_id[$i]."' ") or die(mysql_error());
     
 }     
     
}

?>

<form action="<?=$PHP_SELF;?>" method="post">
<table width="600" border="0" cellpadding="4" cellspacing="0" bordercolor="#CCCCCC">

  <tr>
    <td height="24" bgcolor="#999999"><strong>Item amount</strong></td>
    <td height="24" bgcolor="#999999"><strong>Item name</strong></td>
    <td height="24" bgcolor="#999999"><strong>choice a worker</strong></td>
    <td height="24" bgcolor="#999999"><strong>chosen worker</strong></td>
  </tr>
  <tr>
<?php
$query99 = "SELECT * FROM item WHERE order_reference_number='$ref'";
$portfolio = mysql_query($query99);
$i = 0;
while($row109 = mysql_fetch_array($portfolio)) {
?>
    
    <td height="32">    <?=$row109['item_amount'];?></td>
    <td height="32">    <?=$row109['item_name'];?>
<input name="item_id[]" type="hidden" value="<?=$row109['item_id'];?>" /></td>
    
    
    <td>    
    <select name="worker[]" id="">
    <option value="<?=$row109['worker_id'];?>"><?=$row109['worker_id'];?></option>
    <option value="-">-</option>

<?php  
$query3 = "SELECT * FROM worker";
$portfolio1 = mysql_query($query3);
while($row3 = mysql_fetch_array($portfolio1)) {
?>    
<option><?php echo $row3['worker_name'];?></option>
<?php } ?>
</select></td>
    <td>    <a href="g">
      <strong><?=$row109['worker_id'];?></strong>
       </a></td>
  </tr><?php
}
?>
</table>

<input type="submit" name="ok" value="Submit" onclick="return confirmPost()" />
</form>


 

This is the database:

 

1a.gif

 

This is the output of my code:

 

1b.gif

 

I want to display item_amount and item_name only once if the item_amount is bigger than 1.

 

1c.gif

 

Can somebody help me please.

Thanks

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.