happysunny
asked on
updating multiple rows with one form
Hello all,
I am trying to show multiple items from a database, with the option to change the prices. However, I'm unsure how to update. Can you please help? Here is a snippet of my code:
Thank you in advance.
I am trying to show multiple items from a database, with the option to change the prices. However, I'm unsure how to update. Can you please help? Here is a snippet of my code:
<?php
include ("databaseinfo.php")
//count number of records
$result = mysql_query("SELECT * FROM tableitems WHERE Item='$item' AND Date >= '$from_date' AND Date <= '$to_date'") or die(mysql_error());
$num_rows = mysql_num_rows($result);
if(mysql_num_rows($result) == 0) {
echo "<center>No results were found.</center>";
}
//number you want to display per page
$page_rows=50;
//This tells us the page number of last page
$last=ceil($num_rows/$page_rows);
//determine results
//This checks to see if there's a page number. If not, it will set it to page 1.
if(isset($_GET['pagenum'])) {
$pagenum=$_GET['pagenum'];
}
else{
$pagenum=1;
}
$pagenum=(int)$pagenum;
if ($pagenum>$last)
{
$pagenum=$last;
}
if ($pagenum<1)
{
$pagenum=1;
}
$offset=($pagenum - 1) * $page_rows;
echo "<center>";
echo "<b>";
echo "Prices from: ";
echo $from_date;
echo " to ";
echo $to_date;
echo "</b>";
echo "</center>";
echo "<br>";
echo "<table align=center cellpadding=\"10\" width=\"400\" border=\"1\">";
echo "<tbody>";
echo "<form action=\"update.php\" method=\"post\" name=\"form\">";
$i=1;
$result = mysql_query("SELECT * FROM tableitems WHERE
Item='$item' AND Date >= '$from_date' AND Date <= '$to_date' ORDER BY
ItemNum LIMIT $offset, $page_rows") or die(mysql_error());
while($row = mysql_fetch_array($result))
{
$date=$row['Date'];
$date=htmlspecialchars($date);
$date_sq=mysql_real_escape_string($date);
$date8_sq=substr($date_sq, 0, -9);
$date_sq=date('m-d-Y', strtotime($date8_sq));
$date9_sq=date('Y-m-d', strtotime($date8_sq));
$price=$row['Price'];
$price=htmlspecialchars($price);
$price_sq=mysql_real_escape_string($price);
$num=$row['ItemNum'];
$num=htmlspecialchars($num);
$num_sq=mysql_real_escape_string($num);
echo "<tr><td>";
echo "<center>";
echo $item;
echo "</center>";
echo "</td><td>";
echo "<center>";
echo $date_sq;
echo "</a>";
echo "</center>";
echo "</td><td>";
echo "<center>";
echo "<input type=\"text\" name=\"price[]\" value='$price_sq'>";
echo "</center>";
echo "</td></tr>";
$i++;
}
echo "</tbody></table>";
if ($none!=1)
{
echo " Page ";
}
for ($i=1; $i<=$last; $i++)
{
if (($i=="1") && ($i==$pagenum))
{
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1&f=$from_date&t=
$to_date&i=$item'>";
echo $i;
echo "</a>";
}
elseif (($i=="1") && ($i!=$pagenum))
{
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1&f=$from_date&t=
$to_date&i=$item'>";
echo $i;
echo "</a>";
}
elseif (($i>1) && ($i!=$last) && ($i==$pagenum))
{
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$pagenum&f=$from_date&t=
$to_date&i=$item'>";
echo $i;
echo "</a>";
}
elseif (($i>1) && ($i!=$last) && ($i!=$pagenum))
{
$next = $pagenum+1;
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$i&f=$from_date&t=
$to_date&i=$item'>";
echo $i;
echo "</a>";
}
elseif (($i==$last) && ($i==$pagenum))
{
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last&f=$from_date&t=
$to_date&i=$item'>";
echo $i;
echo "</a>";
}
elseif (($i==$last) && ($i!=$pagenum))
{
echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last&f=$from_date&t=
$to_date&i=$item'>";
echo $i;
echo "</a>";
}
echo "<table align=center>";
echo "<tbody>";
echo "<tr>";
echo "<td>";
echo "<center>";
echo "<input type=\"submit\" name=\"submit\" value=\"Submit\"></center>";
echo "</td>";
echo "</tr>";
echo "</form>";
echo "</tbody>";
echo "</table>";
echo "</center>";
?>
<?php
//update.php
include ("databaseinfo.php");
if(isset($_POST['submit']))
{
for($i=0;$i<$num_rows;$i++){
$result = mysql_query("UPDATE tableitems SET Price='$price[$i]' WHERE ItemNum='$num_sq'") or die(mysql_error());
}
}
?>
Thank you in advance.
ASKER
Yes, thank you. I forgot that. When I add: $price=$_POST['price']; echo $price; on the next page, I get the correct amount. But wouldn't I need that to be an array? And how would I get this to work?
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
A ha! That makes sense :) Thank you!
The update.php code doesn't know about the settings of variables from the first section. Pass the information using $_POST variables.
You need to pass the number of items and we will need to do something about the variable names. But first, see if you can get it to pass the number of variables.