id ophalen lukt niet
zie sql_querry_ophalen_klantnr...
Bij het uitvoeren blijft deze querry 0 teruggeven waarden ik volgende foutmelding krijg als ik meer dan
1x mijn formulier probeer in te dienen : Error: Duplicate entry '0' for key 'PRIMARY'
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
//Formulier Succes
$achternaam = mysql_real_escape_string($aData['achternaam']);
$voornaam = mysql_real_escape_string($aData['voornaam']);
$geboortedatum = mysql_real_escape_string($aData['geboorte-datum']);
$straatnaam = mysql_real_escape_string($aData['straatnaam']);
$gemeente = mysql_real_escape_string($aData['gemeente']);
$postcode = mysql_real_escape_string($aData['postcode']);
$email = mysql_real_escape_string($aData['e-mail']);
$wachtwoord = mysql_real_escape_string($aData['wachtwoord']);
$sql_insert_klant = "
INSERT INTO tblklanten
(
klantnr,
achternaam,
voornaam,
geboortedatum,
adres,
postcode,
gemeente
)
VALUES
(
'',
'".$achternaam."',
'".$voornaam."',
'".$geboortedatum."',
'".$straatnaam."',
'".$postcode."',
'".$gemeente."'
)";
$sql_insert_gebruiker = "
INSERT INTO tblgebruikers
(
email,
wachtwoord
)
VALUES
(
'".$email."',
'".$wachtwoord."'
)
";
$sql_ophalen_klantnr = "
SELECT
(
klantnr
)
FROM
(
tblklanten
)
ORDER BY
(
klantnr DESC
)
LIMIT 1
";
$sql_insert_klantnr_gebruiker = "
INSERT INTO tblgebruikers
(
klantnr
)
VALUES
(
'".$klantnr."'
)
";
# Check of query invoegen klant is gelukt
if (($result_insert_klant = mysql_query($sql_insert_klant)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_insert_klant,mysql_error(),'Fout bij het invoegen van de gegevens van de klant.');
}
else
{
# Toevoegen klantnr.
$id = mysql_insert_id();
# Check of query invoegen gebruiker is gelukt
if (($result_insert_gebruiker = mysql_query($sql_insert_gebruiker)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($result_insert_gebruiker,mysql_error(),'Fout bij het invoegen van de gebruiker gegevens.');
}
elseif(($result_ophalen_klantnr = mysql_query($sql_ophalen_klantnr)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($result_ophalen_klantnr,mysql_error(),'Fout bij het ophalen van het laatste klantnr..');
}
else
{
$klantnr = mysql_fetch_assoc($result_ophalen_klantnr);
if(($result_insert_klantnr_gebruiker = mysql_query($sql_insert_klantnr_gebruiker )) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($result_insert_klantnr_gebruiker,mysql_error(),'Fout bij het invoegen van klantnr in tblgebruikers');
}
else
{
//Gebruiker toevoegen succesvol
$gelukt = '<p style="font-weight:bold;color:green">Gegevens succesvol ingediend !</p>';
}
}
}
}
?>
//Formulier Succes
$achternaam = mysql_real_escape_string($aData['achternaam']);
$voornaam = mysql_real_escape_string($aData['voornaam']);
$geboortedatum = mysql_real_escape_string($aData['geboorte-datum']);
$straatnaam = mysql_real_escape_string($aData['straatnaam']);
$gemeente = mysql_real_escape_string($aData['gemeente']);
$postcode = mysql_real_escape_string($aData['postcode']);
$email = mysql_real_escape_string($aData['e-mail']);
$wachtwoord = mysql_real_escape_string($aData['wachtwoord']);
$sql_insert_klant = "
INSERT INTO tblklanten
(
klantnr,
achternaam,
voornaam,
geboortedatum,
adres,
postcode,
gemeente
)
VALUES
(
'',
'".$achternaam."',
'".$voornaam."',
'".$geboortedatum."',
'".$straatnaam."',
'".$postcode."',
'".$gemeente."'
)";
$sql_insert_gebruiker = "
INSERT INTO tblgebruikers
(
email,
wachtwoord
)
VALUES
(
'".$email."',
'".$wachtwoord."'
)
";
$sql_ophalen_klantnr = "
SELECT
(
klantnr
)
FROM
(
tblklanten
)
ORDER BY
(
klantnr DESC
)
LIMIT 1
";
$sql_insert_klantnr_gebruiker = "
INSERT INTO tblgebruikers
(
klantnr
)
VALUES
(
'".$klantnr."'
)
";
# Check of query invoegen klant is gelukt
if (($result_insert_klant = mysql_query($sql_insert_klant)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_insert_klant,mysql_error(),'Fout bij het invoegen van de gegevens van de klant.');
}
else
{
# Toevoegen klantnr.
$id = mysql_insert_id();
# Check of query invoegen gebruiker is gelukt
if (($result_insert_gebruiker = mysql_query($sql_insert_gebruiker)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($result_insert_gebruiker,mysql_error(),'Fout bij het invoegen van de gebruiker gegevens.');
}
elseif(($result_ophalen_klantnr = mysql_query($sql_ophalen_klantnr)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($result_ophalen_klantnr,mysql_error(),'Fout bij het ophalen van het laatste klantnr..');
}
else
{
$klantnr = mysql_fetch_assoc($result_ophalen_klantnr);
if(($result_insert_klantnr_gebruiker = mysql_query($sql_insert_klantnr_gebruiker )) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($result_insert_klantnr_gebruiker,mysql_error(),'Fout bij het invoegen van klantnr in tblgebruikers');
}
else
{
//Gebruiker toevoegen succesvol
$gelukt = '<p style="font-weight:bold;color:green">Gegevens succesvol ingediend !</p>';
}
}
}
}
?>
Verder loopt er nog wel wat meer mis in je logica. Je hebt eigenlijk maar 3 query's nodig.
- Klant toevoegen
- laatste id ophalen
- Gebruiker toevoegen met KlantID
Let ook op dat je niet altijd haakjes moet gebruiken bij de select query is dat niet nodig.
Logica zou ongeveer zo moeten zijn:
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
<?php
//Formulier Succes
$achternaam = mysql_real_escape_string($aData['achternaam']);
$voornaam = mysql_real_escape_string($aData['voornaam']);
$geboortedatum = mysql_real_escape_string($aData['geboorte-datum']);
$straatnaam = mysql_real_escape_string($aData['straatnaam']);
$gemeente = mysql_real_escape_string($aData['gemeente']);
$postcode = mysql_real_escape_string($aData['postcode']);
$email = mysql_real_escape_string($aData['e-mail']);
$wachtwoord = mysql_real_escape_string($aData['wachtwoord']);
$sql_insert_klant = "
INSERT INTO tblklanten
(
klantnr,
achternaam,
voornaam,
geboortedatum,
adres,
postcode,
gemeente
)
VALUES
(
'',
'".$achternaam."',
'".$voornaam."',
'".$geboortedatum."',
'".$straatnaam."',
'".$postcode."',
'".$gemeente."'
)";
# Check of query invoegen klant is gelukt
if (($result_insert_klant = mysql_query($sql_insert_klant)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_insert_klant,mysql_error(),'Fout bij het invoegen van de gegevens van de klant.');
}
else
{
$sql_ophalen_klantnr = "
SELECT
(
klantnr
)
FROM
(
tblklanten
)
ORDER BY
(
klantnr DESC
)
LIMIT 1
";
if(($result_ophalen_klantnr = mysql_query($sql_ophalen_klantnr)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($result_ophalen_klantnr,mysql_error(),'Fout bij het ophalen van het laatste klantnr..');
}
else
{
$row = mysql_fetch_assoc($result_ophalen_klantnr);
$klantnr = $row['klantnr'];
$sql_insert_gebruiker = "
INSERT INTO tblgebruikers
(
klantnr,
email,
wachtwoord
)
VALUES
(
'".$klantnr."'
'".$email."',
'".$wachtwoord."'
)
";
if(($result_insert_gebruiker = mysql_query($sql_insert_gebruiker )) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($result_insert_gebruiker,mysql_error(),'Fout bij het invoegen van klantnr in tblgebruikers');
}
else
{
//Gebruiker toevoegen succesvol
$gelukt = '<p style="font-weight:bold;color:green">Gegevens succesvol ingediend !</p>';
}
}
}
}
?>
//Formulier Succes
$achternaam = mysql_real_escape_string($aData['achternaam']);
$voornaam = mysql_real_escape_string($aData['voornaam']);
$geboortedatum = mysql_real_escape_string($aData['geboorte-datum']);
$straatnaam = mysql_real_escape_string($aData['straatnaam']);
$gemeente = mysql_real_escape_string($aData['gemeente']);
$postcode = mysql_real_escape_string($aData['postcode']);
$email = mysql_real_escape_string($aData['e-mail']);
$wachtwoord = mysql_real_escape_string($aData['wachtwoord']);
$sql_insert_klant = "
INSERT INTO tblklanten
(
klantnr,
achternaam,
voornaam,
geboortedatum,
adres,
postcode,
gemeente
)
VALUES
(
'',
'".$achternaam."',
'".$voornaam."',
'".$geboortedatum."',
'".$straatnaam."',
'".$postcode."',
'".$gemeente."'
)";
# Check of query invoegen klant is gelukt
if (($result_insert_klant = mysql_query($sql_insert_klant)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql_insert_klant,mysql_error(),'Fout bij het invoegen van de gegevens van de klant.');
}
else
{
$sql_ophalen_klantnr = "
SELECT
(
klantnr
)
FROM
(
tblklanten
)
ORDER BY
(
klantnr DESC
)
LIMIT 1
";
if(($result_ophalen_klantnr = mysql_query($sql_ophalen_klantnr)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($result_ophalen_klantnr,mysql_error(),'Fout bij het ophalen van het laatste klantnr..');
}
else
{
$row = mysql_fetch_assoc($result_ophalen_klantnr);
$klantnr = $row['klantnr'];
$sql_insert_gebruiker = "
INSERT INTO tblgebruikers
(
klantnr,
email,
wachtwoord
)
VALUES
(
'".$klantnr."'
'".$email."',
'".$wachtwoord."'
)
";
if(($result_insert_gebruiker = mysql_query($sql_insert_gebruiker )) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($result_insert_gebruiker,mysql_error(),'Fout bij het invoegen van klantnr in tblgebruikers');
}
else
{
//Gebruiker toevoegen succesvol
$gelukt = '<p style="font-weight:bold;color:green">Gegevens succesvol ingediend !</p>';
}
}
}
}
?>
Gewijzigd op 20/11/2012 18:48:22 door Jasper DS
Sowieso is regel 4 t/m 11 niet nodig; het is kopieren van variabelen en mysql_real_escape_string gebruik je in een query.
Obelix, komt uit een formulier. Heb zijn code op school gezien. Hij heeft het in een array gestoken voor zijn foutafhandeling. Ik zal morgen eens met hem kijken of dat niet efficiënter kan.
Daarnaast is de foutmelding duidelijk genoeg, want je doet 2 maal een insert.
Je kan natuurlijk redenen hebben om die 2 tabellen te hebben, maar dan is 2e insert heel eenvoudig op te lossen:
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$sql_insert_gebruiker = "
INSERT INTO tbl_gebruikers
(klantnr, email, wachtwoord)
VALUES
(LAST_INSERT_ID(),'".$email."','".$wachtwoord."')";
?>
$sql_insert_gebruiker = "
INSERT INTO tbl_gebruikers
(klantnr, email, wachtwoord)
VALUES
(LAST_INSERT_ID(),'".$email."','".$wachtwoord."')";
?>
Haal wel de auto increment weg in de tbl_gebruikers
Quote:
Haal wel de auto increment weg in de tbl_gebruikers
De gebruiker moet nog steeds een id hebben niet?
In ieder geval blijft dan mijn eerdere query nog steeds valid.
Het doel is vn het laatste klantnr (id) uit tblklanten 'over te zetten' naar klantnr in tblgebruikers ..
Werkt de fucntie LAST_INSERT_ID dan ? Aangezien het om 2 verschillende tabellen gaat ?
LAST_INSERT_ID() werkt per sessie(connectie).
In principe doet mysql_insert_id() gewoon mysql_query("SELECT LAST_INSERT_ID()")
Zou je me wel even kunnen uitleggen wat deze functie LAST_INSERT_ID juist te werk gaat ..
Want ik snap niet hoe hij het klantnr ophaalt uit de andere tabel vandaar mijn verwarring in de reactie hierboven ...
Toevoeging op 20/11/2012 19:38:23:
Ja ok ik heb hem door :)
Bedankt nogmaals :)
LAST_INSERT_ID() (en dus ook mysql_insert_id()) geeft het id van een laatste succesvolle insert in een tabel waarvan de primary key een auto_increment kolom is. Welke tabel het is maakt niet uit.