I'm modifying some PHP code I found in MySQL PHP Shopping Cart to work
with a Books database.
Basically the part add publisher (addpub.php)
1 - obtains the highest publisher_id already in the table publisher
(fields publisher_id, publisher, description)
2 - increments it to get the next value
3 - sets up the form for you to enter the new publisher name and
description.
4 - posts the data and clears the form everytime you hit the
"create" button
The problem is that that it doesn't increment the publisher_id for a
second set of values, so you can end up with two identical
publisher_id's.
My guess is that the MySQL database is buffering the data insertion
command and the value being read is the old maximum publisher_id, but
this is updated by the time you do the second insertion, so for the
third insertions, it is incremented.
Is this correct?
If so, how do I fix it?
My guess might be that I should close the connection after each post.
Code is below.
owl:terryc> cat addpub.php
<?php
require("../config.ini");
// database connection
mysql_connect("$host","$user","$pass");
// database selection
mysql_select_db("$database");
echo "<html><body bgcolor=\"#FFFFCC\">";
// selects the max id from products and adds 1 to it to make new id
$result = mysql_query("select MAX(publisher_id) from publisher");
echo "$result, <br>";
/* some error checking if its the first item entered. We don't like
products with an ID of "0" */
$num_rows = @mysql_num_rows($result) or print("");
// get the max id to determine the next one
$s = mysql_fetch_row($result);
// test if its the table is empty, if it is, put a nice starting number
in, like 10001
if(empty($s)) {
$tsku = "10001";
}
// otherwise just increment the high number
else {
$tsku = $s[0] + 1;
}
// display the form
echo "<table border=0><form method=post action=\"addpub.php\">
<tr><td>Publisher ID:</td><td>$tsku<input type=hidden
name=\"publisher_id\" value=\"$tsku\"></td></tr>";
?>
<tr><td>Publisher:</td><td><input name="publisher"
size=75></td></tr>
<tr><td>Description:</td><td><textarea cols=50 rows=10
name="description" wrap=virtual>
</textarea></td></tr>
<tr><td><input type=submit name=page
value="Create"></td></form></tr></table>
<?
// page that inserts the values into the database
if($page == "Create") {
mysql_query("insert into publisher
values('$publisher_id','$publisher','$description')");
echo "Your publisher #$tsku has been created.";
}
?>
owl:terryc>
--
Terry Collins {:-)}}} Ph(02) 4627 2186 Fax(02) 4628 7861
email: [EMAIL PROTECTED] www: http://www.woa.com.au
WOA Computer Services <lan/wan, linux/unix, novell>
"People without trees are like fish without clean water"
--
SLUG - Sydney Linux User Group Mailing List - http://slug.org.au/
More Info: http://slug.org.au/lists/listinfo/slug