Jump to content

Updating multiple database records at once


manvaril

Recommended Posts

This is the form that I'm using and it populates just fine but when you make the changes I can't figure out how to get it to update each record in my database.

<table width="100%" cellspacing="1" cellpadding="2" border="0">
<form action="<?php echo $_SERVER["PHP_SELF"] . "?update=1"; ?>" method="post">
<tr>
<td><b>Category Name</b></td>
<td><b>Category Description</b></td>
<td><b>Order</b></td>
<td align="right"><input type="submit" value="Update"></td>
</tr>
<?php
read_cat_list($cat);
for ($i = 0; $i < $cat["count"]; $i++) {
	echo "<tr>\n";
	echo "<td width=\"30%\" valign=\"top\"><input type=\"text\" name=\"cat_name_" . safe_string($cat[$i]["cat_id"]) . "\" size=\"30\" maxlength=\"250\" value=\"" . safe_string($cat[$i]["cat_name"]) . "\"></td>\n";
	echo "<td width=\"36%\" valign=\"top\"><textarea name=\"cat_desc_" . safe_string($cat[$i]["cat_id"]) . "\" rows=\"2\" cols=\"30\">" . safe_string($cat[$i]["cat_desc"]) . "</textarea></td>\n";
	echo "<td width=\"10%\" valign=\"top\"><input type=\"text\" name=\"cat_order_" . safe_string($cat[$i]["cat_id"]) . "\" size=\"3\" maxlength=\"3\" value=\"" . safe_string($cat[$i]["cat_order"]) . "\"></td>\n";
	echo "<td width=\"24%\" valign=\"top\">[ <a href=\"#\" onmouseover=\"window.status = 'Delete " . safe_string($cat[$i]["cat_name"]) . "'; return true;\" onmouseout=\"window.status = ''; return true;\" onclick=\"javascript:del_cat(" . $cat[$i]["cat_id"] . ", '" . safe_string($cat[$i]["cat_name"]) . "'); return false;\">Delete</a> ]</td>\n";
	echo "</tr>\n";
}
?>
<tr>
<td colspan="4" align="right"><input type="submit" value="Update"></td>
</tr>
</form>
</table>

the safe_string function just cleans up the output/input from the database, This next block is my form processor for this form.

<?php
function update_cats($vars) {
		$err = "";

		#if ($SESSION["level"] != ADMIN) {
		#		$err = ERR_NOT_ENOUGH_ACCESS;
		#} else {
				$temp = array_keys($vars);

				for ($i = 0; $i < count($temp); $i++) {
						if (substr($temp[$i], 0, 9) == "cat_name_") {
								if ($vars[$temp[$i]] == "") {
										$err = "Category names cannot be blank.";
										break;
								} else {
										$name_query["cat_name"] .= substr($temp[$i], 9) . ", ";
								}
						}
				}
				for ($i = 0; $i < count($temp); $i++) {
						if (substr($temp[$i], 0, 9) == "cat_desc_") {
								$desc_query["cat_desc"] .= substr($temp[$i], 9) . ", ";
						}
				}
				for ($i = 0; $i < count($temp); $i++) {
						if (substr($temp[$i], 0, 10) == "cat_order_") {
								if ($vars[$temp[$i]] == "") {
										$err = "Category orders cannot be blank.";
										break;
								} else {
										$order_query["cat_order"] .= substr($temp[$i], 10) . ", ";
								}
						}
				}
		#}

		if (!$err) {
				if ($name_query["cat_name"]) {
						$update_name_query  = "update category";
						$update_name_query .= "   set cat_name = '" . $name_query["cat_name"] . "'";
						$update_name_query .= " where cat_id in (" . substr($name_query["cat_name"], 0, -2) . ")";

						update_db($update_name_query);
				}

				if ($desc_query["cat_desc"]) {
						$update_desc_query  = "update category";
						$update_desc_query .= "   set cat_desc = '" . $name_query["cat_desc"] . "'";
						$update_desc_query .= " where cat_id in (" . substr($desc_query["cat_desc"], 0, -2) . ")";

						update_db($update_desc_query);
				}

				if ($order_query["cat_order"]) {
						$update_order_query  = "update category";
						$update_order_query .= "   set cat_order = '" . $name_query["cat_order"] . "'";
						$update_order_query .= " where cat_id in (" . substr($order_query["cat_order"], 0, -2) . ")";

						update_db($update_order_query);
				}
		}

		return $err;
}
?>

update_db is my database caller, if you need any of the functions that I use that are not here please post back and tell me.

 

now when I process the form all my fields change to this:

 

cat_name: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,

cat_desc:

cat_id: 0

 

for all the records in the database table, I'm just trying to update each record with the values it needs

 

Here is my database table with the data.

CREATE TABLE `category` (
  `cat_id` int(11) NOT NULL AUTO_INCREMENT,
  `cat_name` varchar(255) NOT NULL,
  `cat_desc` text NOT NULL,
  `cat_order` int(11) NOT NULL,
  PRIMARY KEY (`cat_id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=16 ;

--
-- Dumping data for table `category`
--

INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(1, 'Hand Tossed Pizza', '', 1);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(2, 'Hand Tossed Specialty Pizzas', '', 2);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(3, 'Chicago Style Deep Dish', '', 3);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(4, 'Specialty Chicago Style Deep Dish', '', 4);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(5, 'Chicken Wings & Tenderloins', '', 5);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(6, 'Hot Sides', '', 6);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(7, 'Hot Sandwiches', '', 7);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(8, 'Cold Sandwiches', '', ;
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(9, 'Pastas', '', 9);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(10, 'Fresh Salads', '', 10);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(11, 'Fresh Breads', '', 11);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(12, 'Soups', '', 12);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(13, 'Kids Menu', '', 13);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(14, 'Drinks', '', 14);
INSERT INTO `category` (`cat_id`, `cat_name`, `cat_desc`, `cat_order`) VALUES(15, 'Desserts', '', 15);

 

Hope I have provided plenty of info on what I got and what I need for it todo

 

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.