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

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • 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.