Reputation: 10781
I have a PHP page that displays the results of a mysql query. each returned record is assigned a check box with the a value equal to the Row ID column.
the mysql statement in place inserts the selected rows into a new table.
I would like to add a second mysql query that updates the status of another table where the selected ID's match. the query is below:
UPDATE despgoods_alldetails,loaddetails SET despgoods_alldetails.locstatus ='LoadCreated' WHERE despgoods_alldetails.despgoodsid = $val
The page PHP Code that works currently is( I am aware of some incorrect code):
> <?php
> mysql_connect("localhost", "hulamin_hulamin", "Hulamin2011")or die("cannot connect");
> mysql_select_db("hulamin_loc")or die("cannot select DB");
> $sql="SELECT `despgoodsid`,`crtd dept`,`customer`,`loc cust rel`,`case no`,`gross mass`,`case width`,`case length` from
> despgoods_alldetails where transporttypename= 'localpmb' and
> locstatus='unplanned' and customer <> 'customer'";
> $result=mysql_query($sql);
> $count=mysql_num_rows($result); putenv("TZ=Africa/Johannesburg"); ?> <table border=0>
> <tr>
> <td>
> <form name="form1" method="post">
> <table border=0
> <tr>
> <th> </th>
> <th width=150>Dispatch Area</th>
> <th width=150>Customer</th>
> <th width=150><center>Release Number</th>
> <th width=130><center>Case Number</th>
> <th width=80><center>Weight</th>
> <th width=80><center>Width</th>
> <th width=80><center>Length</th>
> </tr> <?php
> while($rows=mysql_fetch_array($result)){ ?>
> <tr>
> <td><input type="checkbox" name=check[] value="<?php echo $rows['despgoodsid']; ?>"></td>
> <td><?php echo $rows['crtd dept']; ?></td>
> <td><?php echo $rows['customer']; ?></td>
> <td><center><?php echo $rows['loc cust rel']; ?></td>
> <td><center><?php echo $rows['case no']; ?></td>
> <td><center><?php echo $rows['gross mass']; ?></td>
> <td><center><?php echo $rows['case width']; ?></td>
> <td><center><?php echo $rows['case length']; ?></td>
>
> </tr>
>
> <?php
> } ?>
> <tr>
> <td colspan=3><input name="Next" type="submit" id="Next" value="Next"></td>
> </tr>
> <?php
>
>
>
> $check=$_POST['check'];
>
> if($_REQUEST['Next']=='Next'){ {
> $sql="INSERT INTO loaddetails (despgoodsid,dispatcharea,Customer, casenumber, weight, loadstatus)
> SELECT `despgoodsid`,`crtd dept`,Customer,`case no`,`gross mass`,'loadplanned'
> FROM despgoods_alldetails WHERE `despgoodsid` = '$val'";
>
> foreach($check as $key=>$value)
> {
> $sql="INSERT INTO loaddetails (despgoodsid,dispatcharea,Customer, casenumber, weight, loadstatus)
> SELECT `despgoodsid`,`crtd dept`,Customer,`case no`,`gross mass`,'loadplanned'
> FROM despgoods_alldetails WHERE `despgoodsid` = '$value'";
> $final=mysql_query($sql);
> if($final)
> {
> echo "<meta http-equiv=\"refresh\" content=\"0;URL=http://www.hulaminloc.co.za/planningplatform/planlocalpmbstep2.php\">";
> } }
> }
> }
> mysql_close(); ?> </table> </form> </td> </tr> </table>
How can I add my update statement to run in addition to the select statement for each selected row?
Any help is appreciated.
Thanks and Regards, Ryan Smith
Upvotes: 0
Views: 313
Reputation: 10781
I though I would post the complete working code here. Big up to @mishu for all the help and patience.
<?php
mysql_connect("localhost", "user", "password")or die("cannot connect");
mysql_select_db("database")or die("cannot select DB");
$sql="SELECT `despgoodsid`,`crtd dept`,`customer`,`loc cust rel`,`case no`,`gross mass`,`case width`,`case length` from despgoods_alldetails where transporttypename= 'localpmb' and locstatus='unplanned' and customer <> 'customer'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
putenv("TZ=Africa/Johannesburg");
?>
<table border=0>
<tr>
<td>
<form name="form1" method="post">
<table border=0
<tr>
<th> </th>
<th width=150>Dispatch Area</th>
<th width=150>Customer</th>
<th width=150><center>Release Number</th>
<th width=130><center>Case Number</th>
<th width=80><center>Weight</th>
<th width=80><center>Width</th>
<th width=80><center>Length</th>
</tr>
<?php
while($rows=mysql_fetch_array($result)){
?>
<tr>
<td><input type="checkbox" name=check[] value="<?php echo $rows['despgoodsid']; ?>"></td>
<td><?php echo $rows['crtd dept']; ?></td>
<td><?php echo $rows['customer']; ?></td>
<td><center><?php echo $rows['loc cust rel']; ?></td>
<td><center><?php echo $rows['case no']; ?></td>
<td><center><?php echo $rows['gross mass']; ?></td>
<td><center><?php echo $rows['case width']; ?></td>
<td><center><?php echo $rows['case length']; ?></td>
</tr>
<?php
}
?>
<tr>
<td colspan=3><input name="Next" type="submit" id="Next" value="Next"></td>
</tr>
<?php
$check=$_POST['check'];
if($_REQUEST['Next']=='Next'){
{
$maxloadid = '
select
max(loadid) +1
from
loaddetails
';
$resultmaxloadid = mysql_query($maxloadid); // run the query
// there was an error - output the message
if (!$resultmaxloadid)
{
echo 'there was an error in your query';
echo mysql_error();
die;
}
$loadid = mysql_result($resultmaxloadid, 0);
foreach($check as $key=>$value) //
{
// get the details for one of the selected values
$query = '
SELECT
`despgoodsid`,
`crtd dept`,
`Customer`,
`case no`,
`gross mass`
FROM
despgoods_alldetails
WHERE
`despgoodsid` = "'. mysql_real_escape_string($value) . '"
';
$result = mysql_query($query); // run the query
// there was an error - output the message
if (!$result)
{
echo 'there was an error in your query';
echo mysql_error();
die;
}
// we got here, everything is fine
if (!mysql_num_rows($result)) // the above query did not fetch any records, so there's a problem
{
continue; // skip this record.. "continue" will ignore the rest of the foreach loop and go to the next step
}
$details = mysql_fetch_assoc($result);
// inset the values
$query = '
INSERT INTO
loaddetails
SET
despgoodsid = "'.$details['despgoodsid'].'",
dispatcharea= "'.$details['crtd dept'].'",
Customer = "'.$details['Customer'].'",
casenumber = "'.$details['case no'].'",
weight = "'.$details['gross mass'].'",
loadstatus= "loadplanned",
loadid = "'.$loadid.'"
';
$result = mysql_query($query); // run the query
// there was an error - output the message
if (!$result)
{
echo 'there was an error in your query';
echo mysql_error();
die;
}
// update the status
$query = '
UPDATE
despgoods_alldetails
SET
locstatus ="LoadCreated"
WHERE
despgoodsid = "'.mysql_real_escape_string($value) . '"
';
$result = mysql_query($query); // run the query
// there was an error - output the message
if (!$result)
{
echo 'there was an error in your query';
echo mysql_error();
die;
}
} // end of foreach statement
if($final)
{
echo "<meta http-equiv=\"refresh\" content=\"0;URL=http://www.hulaminloc.co.za/planningplatform/index.phpx`\">";
}
}
}
mysql_close();
?>
</table>
</form>
</td>
</tr>
</table>
Thanks again to @Mishu and all the other contributors on the site.
Upvotes: 0
Reputation: 5397
you could create a trigger that would fire when data is saved in the secondary table; check mysql manual for triggers if you think this might be what you need
Upvotes: 1