Laatste ID+1
Ik zit al een paar dagen te ploeteren op mijn klanten pagina. Ik wil een klant invoeren met de laatste ID. Deze laatste ID wil ik weergegeven in mijn ID veld. Dit gaat wel. Maar als ik een klant toevoeg krijg ik een duplicate error. Maar als ik mijn pagina opnieuw opent dan laat hij wel de laatste ID+1 zien. Maar dit doet die echter niet goed bij mijn Insert.
Hieronder zie je mijn code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
$query_hoogste = "SELECT kl_klantennr FROM klanten ORDER BY kl_klantennr DESC";
$hoogste = mysql_query($query_hoogste, $sch) or die(mysql_error());
$row_hoogste = mysql_fetch_assoc($hoogste);
$totalRows_hoogste = mysql_num_rows($hoogste);
if($_POST['submit1'])
{
if($_POST['bedrijfsnaam'] == "" || $_POST['voorletter'] == "" || $_POST['achternaam'] == ""
|| $_POST['straatnaam'] == "" || $_POST['huisnummer'] == "" || $_POST['postcode'] == ""
|| $_POST['woonplaats'] == "")
{
echo "is niet ingevoerd!";
echo "<a href='javascript:history.back()'>Ga terug en corrigeer</a>";
}
else
{
$id = $_POST['id'];
$bedrijfsnaam = htmlspecialchars(addslashes($_POST['bedrijfsnaam']), ENT_QUOTES);
$bedrijfsnaam = ucfirst ($bedrijfsnaam);
$aanhef = htmlspecialchars(addslashes($_POST['aanhef']), ENT_QUOTES);
$voorletter = htmlspecialchars(addslashes($_POST['voorletter']), ENT_QUOTES);
$voorletter = strtoupper($voorletter);
$tussenvoegsel = htmlspecialchars(addslashes($_POST['tussenvoegsel']), ENT_QUOTES);
$achternaam = htmlspecialchars(addslashes($_POST['achternaam']), ENT_QUOTES);
$achternaam = ucfirst($achternaam);
$straatnaam = htmlspecialchars(addslashes($_POST['straatnaam']), ENT_QUOTES);
$straatnaam = ucfirst($straatnaam);
$huisnummer = htmlspecialchars(addslashes($_POST['huisnummer']), ENT_QUOTES);
$postcode = htmlspecialchars(addslashes($_POST['postcode']), ENT_QUOTES);
$postcode = strtoupper($postcode);
$woonplaats = htmlspecialchars(addslashes($_POST['woonplaats']), ENT_QUOTES);
$woonplaats = ucfirst($woonplaats);
$telefoonthuis = htmlspecialchars(addslashes($_POST['telefoonthuis']), ENT_QUOTES);
$telefoonwerk = htmlspecialchars(addslashes($_POST['telefoonwerk']), ENT_QUOTES);
$mobiel = htmlspecialchars(addslashes($_POST['mobiel']), ENT_QUOTES);
$fax = htmlspecialchars(addslashes($_POST['fax']), ENT_QUOTES);
$email = htmlspecialchars(addslashes($_POST['email']), ENT_QUOTES);
$nieuwsbrief = htmlspecialchars(addslashes($_POST['nieuwsbrief']), ENT_QUOTES);
$opmerkingen = htmlspecialchars(addslashes($_POST['opmerkingen']), ENT_QUOTES);
$sql_insert = "INSERT INTO klanten (kl_klantennr, kl_bedrijfsnaam, kl_aanhef, kl_voorletters, kl_tussenvoegsel, kl_achternaam, kl_straatnaam, kl_huisnummer,kl_postcode, kl_woonplaats, kl_telefoonnrthuis, kl_telefoonnrwerk, kl_mobielnr, kl_faxnr, kl_email, kl_nieuwsbrief, kl_opmerking) VALUES ('$id','$bedrijfsnaam','$aanhef','$voorletter','$tussenvoegsel','$achternaam','$straatnaam','$huisnummer','$postcode','$woonplaats','$telefoonthuis','$telefoonwerk','$mobiel','$fax','$email','$nieuwsbrief','$opmerkingen')";
$resultaat_insert = mysql_query($sql_insert) or die(mysql_error());
}
?>
$query_hoogste = "SELECT kl_klantennr FROM klanten ORDER BY kl_klantennr DESC";
$hoogste = mysql_query($query_hoogste, $sch) or die(mysql_error());
$row_hoogste = mysql_fetch_assoc($hoogste);
$totalRows_hoogste = mysql_num_rows($hoogste);
if($_POST['submit1'])
{
if($_POST['bedrijfsnaam'] == "" || $_POST['voorletter'] == "" || $_POST['achternaam'] == ""
|| $_POST['straatnaam'] == "" || $_POST['huisnummer'] == "" || $_POST['postcode'] == ""
|| $_POST['woonplaats'] == "")
{
echo "is niet ingevoerd!";
echo "<a href='javascript:history.back()'>Ga terug en corrigeer</a>";
}
else
{
$id = $_POST['id'];
$bedrijfsnaam = htmlspecialchars(addslashes($_POST['bedrijfsnaam']), ENT_QUOTES);
$bedrijfsnaam = ucfirst ($bedrijfsnaam);
$aanhef = htmlspecialchars(addslashes($_POST['aanhef']), ENT_QUOTES);
$voorletter = htmlspecialchars(addslashes($_POST['voorletter']), ENT_QUOTES);
$voorletter = strtoupper($voorletter);
$tussenvoegsel = htmlspecialchars(addslashes($_POST['tussenvoegsel']), ENT_QUOTES);
$achternaam = htmlspecialchars(addslashes($_POST['achternaam']), ENT_QUOTES);
$achternaam = ucfirst($achternaam);
$straatnaam = htmlspecialchars(addslashes($_POST['straatnaam']), ENT_QUOTES);
$straatnaam = ucfirst($straatnaam);
$huisnummer = htmlspecialchars(addslashes($_POST['huisnummer']), ENT_QUOTES);
$postcode = htmlspecialchars(addslashes($_POST['postcode']), ENT_QUOTES);
$postcode = strtoupper($postcode);
$woonplaats = htmlspecialchars(addslashes($_POST['woonplaats']), ENT_QUOTES);
$woonplaats = ucfirst($woonplaats);
$telefoonthuis = htmlspecialchars(addslashes($_POST['telefoonthuis']), ENT_QUOTES);
$telefoonwerk = htmlspecialchars(addslashes($_POST['telefoonwerk']), ENT_QUOTES);
$mobiel = htmlspecialchars(addslashes($_POST['mobiel']), ENT_QUOTES);
$fax = htmlspecialchars(addslashes($_POST['fax']), ENT_QUOTES);
$email = htmlspecialchars(addslashes($_POST['email']), ENT_QUOTES);
$nieuwsbrief = htmlspecialchars(addslashes($_POST['nieuwsbrief']), ENT_QUOTES);
$opmerkingen = htmlspecialchars(addslashes($_POST['opmerkingen']), ENT_QUOTES);
$sql_insert = "INSERT INTO klanten (kl_klantennr, kl_bedrijfsnaam, kl_aanhef, kl_voorletters, kl_tussenvoegsel, kl_achternaam, kl_straatnaam, kl_huisnummer,kl_postcode, kl_woonplaats, kl_telefoonnrthuis, kl_telefoonnrwerk, kl_mobielnr, kl_faxnr, kl_email, kl_nieuwsbrief, kl_opmerking) VALUES ('$id','$bedrijfsnaam','$aanhef','$voorletter','$tussenvoegsel','$achternaam','$straatnaam','$huisnummer','$postcode','$woonplaats','$telefoonthuis','$telefoonwerk','$mobiel','$fax','$email','$nieuwsbrief','$opmerkingen')";
$resultaat_insert = mysql_query($sql_insert) or die(mysql_error());
}
?>
Wat doe ik verkeerd?
Gewijzigd op 20/11/2005 13:53:00 door Marcel
Kan je dat klantID niet beter aan de database zelf overlaten? Dus auto_incredlement? Of begrijp ik je fout?
`id` int(11) NOT NULL auto_increment,
`ip` varchar(20) collate latin1_general_cs NOT NULL default '',
`aantal` int(3) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs AUTO_INCREMENT=3 ;
dit is de mysql code van een simpel bezoekers tellertje, let vooral op de regel:
AUTO_INCREMENT=3 ;(de drie omdat er 3 records in de database zitten)
CREATE TABLE `klanten` (
`kl_klantennr` int(8) NOT NULL auto_increment,
`kl_bedrijfsnaam` varchar(40) default NULL,
`kl_aanhef` varchar(10) default NULL,
`kl_voorletters` varchar(10) default NULL,
`kl_tussenvoegsel` varchar(10) default NULL,
`kl_achternaam` varchar(40) default NULL,
`kl_straatnaam` varchar(40) default NULL,
`kl_huisnummer` int(5) default NULL,
`kl_postcode` varchar(6) default NULL,
`kl_woonplaats` varchar(40) default NULL,
`kl_telefoonnrthuis` varchar(10) default NULL,
`kl_telefoonnrwerk` varchar(10) default NULL,
`kl_mobielnr` varchar(10) default NULL,
`kl_faxnr` varchar(10) default NULL,
`kl_email` varchar(40) default NULL,
`kl_nieuwsbrief` tinyint(1) default NULL,
`kl_opmerking` longtext,
PRIMARY KEY (`kl_klantennr`),
UNIQUE KEY `IDX_Klanten1` (`kl_klantennr`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
BTW de input veld waar de laatste nummer van de ID weergegeven moet worden heb ik dit van gemaakt:
<input name="id" type="text" id="id" style="background-color:#D0D0D0; border:1px solid;" value="" size="5" />
je veld kl_klantnr is een auto_increment veld. Als je die bij je insert helemaal weglaat, doet MySQL het automatisch voor je. Hij moet in je formulier ook helemaal niet als een veld voorkomen. Wat Arjen dus al zei, rustig aan je database overlaten.