RE: [PHP-DB] Duplicate keys...

2003-01-16 Thread NIPP, SCOTT V (SBCSI)
Thanks once again.  I finally figured this out late yesterday.  I
have no idea as to why whoever wrote this calendar to begin with did it this
way.  On suggestion I have for anyone looking at a calendar system to use or
modify is to absolutely NOT use phpCommunityCalendar.  This is a very poorly
coded piece of software, and if I as a relative PHP newbie know this, it is
really bad.

-Original Message-
From: John W. Holmes [mailto:[EMAIL PROTECTED]]
Sent: Wednesday, January 15, 2003 10:07 PM
To: NIPP, SCOTT V (SBCSI); [EMAIL PROTECTED]
Subject: RE: [PHP-DB] Duplicate keys...


   OK, I cannot figure out why I keep getting errors about
Duplicate
 entry for key 1.  Someone please come to my rescue here as this is
truly
 kicking my but.

You have a key or unique column in your table that you're trying to
insert a duplicate value into.
 
 if ($dateDiff == 2) {
   mysql($DBName,INSERT INTO phpCalendar_Details VALUES (
   '$said','Comp day for weekend
 On-Call','','','','','','','','','',2,'$CalendarDetailsID')) or
 die(mysql_error());
 
   mysql($DBName,UPDATE Balances SET CompEarned=CompEarned+8,
 CompTaken=CompTaken+8 WHERE said='$said') or die(mysql_error());
   $result = mysql($DBName,SELECT LAST_INSERT_ID() FROM
 phpCalendar_Details) or die(mysql_error());
   while ($row = mysql_fetch_row($result)) {
   $CalendarDetailsID = $row[0];
   }
   mysql($DBName,INSERT INTO Log VALUES(
   '$entryid','$said','Comp',DATE_ADD('$StopDate',INTERVAL 1
 DAY),'Y','','Awarded for weekend On-Call','8','$CalendarDetailsID'))
or
 die(mysql_error());
 
   mysql($DBName,INSERT INTO phpCalendar_Daily VALUES(
   DATE_ADD('$StopDate',INTERVAL 1
DAY),'',1,2,'$CalendarDetailsID'))
 or die(mysql_error());
 }
 
 if ($dateDiff  0) {
 commonHeader($glbl_SiteTitle);
 echo centerfont color=\red\bYour END DATE COMES BEFORE YOUR
START
 DATE. Please complete the form below./b/font/centerp\n\n;
 
 } elseif ($Stop != 1) {
 
 if ($CalendarDetailsID) {
   $CalendarDetailsID = $CalendarDetailsID + 1;
 } else {
   $result = mysql($DBName,SELECT LAST_INSERT_ID() FROM
 phpCalendar_Details) or die(mysql_error());
   while ($row = mysql_fetch_row($result)) {
   $CalendarDetailsID = $row[0];
   }
 }
 
 mysql($DBName,INSERT INTO phpCalendar_Details VALUES (
 '$said','On-Call for $StartDate to
 $StopDate','','','','','','','','','',1,'$CalendarDetailsID')) or
 die(mysql_error());
 
 mysql($DBName,INSERT INTO phpCalendar_Daily VALUES(
 '$StartDate','$StopDate','1','1','$CalendarDetailsID')) or
 die(mysql_error());
 
   This is the only place in the script that is attempting to enter
 data into the CalendarDetailsID field.  This is the auto_increment
field
 that is having problems, I think.  The other strange part of this is
that
 thedata in the auto_increment field has two separate ranges (10 - 40
with
 gaps, and 70 - 78 with gaps).  I have been doing a lot of adding and
 removing of data to test during development, but I thought an
 auto_increment
 field would still track and deal with this correctly.

If you're trying to insert a number into an auto_increment field that's
already there, you'll get this error. You should always insert a NULL
value into an auto_increment column so MySQL will handle giving it the
number itself.

Also, don't worry about the gaps. They are irrelevant. If the gaps
matter to your program, then you are coding incorrectly. The
auto_increment column is there _only_ to provide a unique identifier for
each row and nothing else. 

---John W. Holmes...

PHP Architect - A monthly magazine for PHP Professionals. Get your copy
today. http://www.phparch.com/


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




[PHP-DB] Duplicate keys...

2003-01-15 Thread NIPP, SCOTT V (SBCSI)
OK, I cannot figure out why I keep getting errors about Duplicate
entry for key 1.  Someone please come to my rescue here as this is truly
kicking my but.

if ($dateDiff == 2) {
mysql($DBName,INSERT INTO phpCalendar_Details VALUES (
'$said','Comp day for weekend
On-Call','','','','','','','','','',2,'$CalendarDetailsID')) or
die(mysql_error());

mysql($DBName,UPDATE Balances SET CompEarned=CompEarned+8,
CompTaken=CompTaken+8 WHERE said='$said') or die(mysql_error());
$result = mysql($DBName,SELECT LAST_INSERT_ID() FROM
phpCalendar_Details) or die(mysql_error());
while ($row = mysql_fetch_row($result)) {
$CalendarDetailsID = $row[0];
}
mysql($DBName,INSERT INTO Log VALUES(
'$entryid','$said','Comp',DATE_ADD('$StopDate',INTERVAL 1
DAY),'Y','','Awarded for weekend On-Call','8','$CalendarDetailsID')) or
die(mysql_error());

mysql($DBName,INSERT INTO phpCalendar_Daily VALUES(
DATE_ADD('$StopDate',INTERVAL 1 DAY),'',1,2,'$CalendarDetailsID'))
or die(mysql_error());
}

if ($dateDiff  0) {
commonHeader($glbl_SiteTitle);
echo centerfont color=\red\bYour END DATE COMES BEFORE YOUR START
DATE. Please complete the form below./b/font/centerp\n\n;

} elseif ($Stop != 1) {

if ($CalendarDetailsID) {
$CalendarDetailsID = $CalendarDetailsID + 1;
} else {
$result = mysql($DBName,SELECT LAST_INSERT_ID() FROM
phpCalendar_Details) or die(mysql_error());
while ($row = mysql_fetch_row($result)) {
$CalendarDetailsID = $row[0];
}
}

mysql($DBName,INSERT INTO phpCalendar_Details VALUES (
'$said','On-Call for $StartDate to
$StopDate','','','','','','','','','',1,'$CalendarDetailsID')) or
die(mysql_error());

mysql($DBName,INSERT INTO phpCalendar_Daily VALUES(
'$StartDate','$StopDate','1','1','$CalendarDetailsID')) or
die(mysql_error());

This is the only place in the script that is attempting to enter
data into the CalendarDetailsID field.  This is the auto_increment field
that is having problems, I think.  The other strange part of this is that
thedata in the auto_increment field has two separate ranges (10 - 40 with
gaps, and 70 - 78 with gaps).  I have been doing a lot of adding and
removing of data to test during development, but I thought an auto_increment
field would still track and deal with this correctly.
Thank again for the help.

Scott Nipp
Phone:  (214) 858-1289
E-mail:  [EMAIL PROTECTED]
Web:  http:\\ldsa.sbcld.sbc.com



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




RE: [PHP-DB] Duplicate keys...

2003-01-15 Thread John W. Holmes
   OK, I cannot figure out why I keep getting errors about
Duplicate
 entry for key 1.  Someone please come to my rescue here as this is
truly
 kicking my but.

You have a key or unique column in your table that you're trying to
insert a duplicate value into.
 
 if ($dateDiff == 2) {
   mysql($DBName,INSERT INTO phpCalendar_Details VALUES (
   '$said','Comp day for weekend
 On-Call','','','','','','','','','',2,'$CalendarDetailsID')) or
 die(mysql_error());
 
   mysql($DBName,UPDATE Balances SET CompEarned=CompEarned+8,
 CompTaken=CompTaken+8 WHERE said='$said') or die(mysql_error());
   $result = mysql($DBName,SELECT LAST_INSERT_ID() FROM
 phpCalendar_Details) or die(mysql_error());
   while ($row = mysql_fetch_row($result)) {
   $CalendarDetailsID = $row[0];
   }
   mysql($DBName,INSERT INTO Log VALUES(
   '$entryid','$said','Comp',DATE_ADD('$StopDate',INTERVAL 1
 DAY),'Y','','Awarded for weekend On-Call','8','$CalendarDetailsID'))
or
 die(mysql_error());
 
   mysql($DBName,INSERT INTO phpCalendar_Daily VALUES(
   DATE_ADD('$StopDate',INTERVAL 1
DAY),'',1,2,'$CalendarDetailsID'))
 or die(mysql_error());
 }
 
 if ($dateDiff  0) {
 commonHeader($glbl_SiteTitle);
 echo centerfont color=\red\bYour END DATE COMES BEFORE YOUR
START
 DATE. Please complete the form below./b/font/centerp\n\n;
 
 } elseif ($Stop != 1) {
 
 if ($CalendarDetailsID) {
   $CalendarDetailsID = $CalendarDetailsID + 1;
 } else {
   $result = mysql($DBName,SELECT LAST_INSERT_ID() FROM
 phpCalendar_Details) or die(mysql_error());
   while ($row = mysql_fetch_row($result)) {
   $CalendarDetailsID = $row[0];
   }
 }
 
 mysql($DBName,INSERT INTO phpCalendar_Details VALUES (
 '$said','On-Call for $StartDate to
 $StopDate','','','','','','','','','',1,'$CalendarDetailsID')) or
 die(mysql_error());
 
 mysql($DBName,INSERT INTO phpCalendar_Daily VALUES(
 '$StartDate','$StopDate','1','1','$CalendarDetailsID')) or
 die(mysql_error());
 
   This is the only place in the script that is attempting to enter
 data into the CalendarDetailsID field.  This is the auto_increment
field
 that is having problems, I think.  The other strange part of this is
that
 thedata in the auto_increment field has two separate ranges (10 - 40
with
 gaps, and 70 - 78 with gaps).  I have been doing a lot of adding and
 removing of data to test during development, but I thought an
 auto_increment
 field would still track and deal with this correctly.

If you're trying to insert a number into an auto_increment field that's
already there, you'll get this error. You should always insert a NULL
value into an auto_increment column so MySQL will handle giving it the
number itself.

Also, don't worry about the gaps. They are irrelevant. If the gaps
matter to your program, then you are coding incorrectly. The
auto_increment column is there _only_ to provide a unique identifier for
each row and nothing else. 

---John W. Holmes...

PHP Architect - A monthly magazine for PHP Professionals. Get your copy
today. http://www.phparch.com/



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php