Formulier aan database linken
Ik waag mij nu aan iets moeilijker. Het is een formulier verspreid over een 3 tal pagina's. Het uiteindelijke script om de gegevens weg te schrijven lijkt mij uitgevoerd te worden maar toch staat er niets in de database. Je kan een een ander eens uitproberen op www.telecomvanassche.be/formtevr.php.
Het uiteindelijke script om weg te schrijven is dit hier. Waar ga ik in de fout, ik ben al uren bezig met nonkel Google te teisteren.
Alvast bedankt als je mij mijn fouten kunt aantonen.
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
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
<?php
// open database
$username="xxxxxxxx";
$password="xxxxxxxx";
$database="xxxxxxxx";
mysql_connect("xxxxxxxxx.be.mysql",$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
//let's start our session, so we have access to stored data
session_start();
//let's create the query
$insert_query = "insert into eva_tevr(
datum,
factnr,
email,
verkoper,
vriendwin,
uitleg,
crossel,
aanbod,
conform,
verkoop,
opm_winkel,
technieker,
vriendserv,
instserv,
afspraakserv,
uitlegserv,
crosselserv,
service,
opm_serv,
buralg,
bursnel,
buroplos,
admin,
opm_admin
) values (Default,
" . $_SESSION['datum'] . ",
" . $_SESSION['factnr'] . ",
" . $_SESSION['email'] . ",
" . $_SESSION['verkoper'] . ",
" . $_SESSION['vriendwin'] . ",
" . $_SESSION['uitleg'] . ",
" . $_SESSION['crossel'] . ",
" . $_SESSION['aanbod'] . ",
" . $_SESSION['conform'] . ",
" . $_SESSION['verkoop'] . ",
" . $_SESSION['opm_winkel'] . ",
" . $_SESSION['technieker'] . ",
" . $_SESSION['vriendserv'] . ",
" . $_SESSION['instserv'] . ",
" . $_SESSION['afspraakserv'] . ",
" . $_SESSION['uitlegserv'] . ",
" . $_SESSION['crosselserv'] . ",
" . $_SESSION['service'] . ",
" . $_SESSION['opm_serv'] . ",
" . $_POST['buralg'] . ",
" . $_POST['bursnel'] . ",
" . $_POST['buroplos'] . ",
" . $_POST['admin'] . ",
" . $_POST['opm_admin'] . "
)";
//let's run the query
mysql_query($insert_query);
//database sluiten
mysql_close();
# Redirect user to success page
header("Location: http://www.telecomvanassche.be/bedankttevr.html");
?>
// open database
$username="xxxxxxxx";
$password="xxxxxxxx";
$database="xxxxxxxx";
mysql_connect("xxxxxxxxx.be.mysql",$username,$password);
@mysql_select_db($database) or die( "Unable to select database");
//let's start our session, so we have access to stored data
session_start();
//let's create the query
$insert_query = "insert into eva_tevr(
datum,
factnr,
email,
verkoper,
vriendwin,
uitleg,
crossel,
aanbod,
conform,
verkoop,
opm_winkel,
technieker,
vriendserv,
instserv,
afspraakserv,
uitlegserv,
crosselserv,
service,
opm_serv,
buralg,
bursnel,
buroplos,
admin,
opm_admin
) values (Default,
" . $_SESSION['datum'] . ",
" . $_SESSION['factnr'] . ",
" . $_SESSION['email'] . ",
" . $_SESSION['verkoper'] . ",
" . $_SESSION['vriendwin'] . ",
" . $_SESSION['uitleg'] . ",
" . $_SESSION['crossel'] . ",
" . $_SESSION['aanbod'] . ",
" . $_SESSION['conform'] . ",
" . $_SESSION['verkoop'] . ",
" . $_SESSION['opm_winkel'] . ",
" . $_SESSION['technieker'] . ",
" . $_SESSION['vriendserv'] . ",
" . $_SESSION['instserv'] . ",
" . $_SESSION['afspraakserv'] . ",
" . $_SESSION['uitlegserv'] . ",
" . $_SESSION['crosselserv'] . ",
" . $_SESSION['service'] . ",
" . $_SESSION['opm_serv'] . ",
" . $_POST['buralg'] . ",
" . $_POST['bursnel'] . ",
" . $_POST['buroplos'] . ",
" . $_POST['admin'] . ",
" . $_POST['opm_admin'] . "
)";
//let's run the query
mysql_query($insert_query);
//database sluiten
mysql_close();
# Redirect user to success page
header("Location: http://www.telecomvanassche.be/bedankttevr.html");
?>
Gewijzigd op 18/01/2015 20:06:51 door Ignace Verschaeve
Ik ga dit uitproberen. Ik hoop dat dit mij zegt waar het fout loopt.
in welke kolom wil je Default zetten?
Wat is de bedoeling daarvan?
Volgens mij moet dat stuk "Default," gewoon weg.
Ignace Verschaeve op 19/01/2015 09:22:14:
Voor zover ik begrijp zou ik uw voorbeeld 2 moeten invoegen (mits aanpassing uiteraard) in mijn script.
Ik ga dit uitproberen. Ik hoop dat dit mij zegt waar het fout loopt.
Ik ga dit uitproberen. Ik hoop dat dit mij zegt waar het fout loopt.
Of je nou iets insert (voorbeeld 2) of eruit selecteert (voorbeeld 1) of delete of update, foutafahandeling hoort er altijd in.
Lees ook vooral goed het gele commentaar in de scripts.
Ivo P op 19/01/2015 09:35:15:
values (Default,
in welke kolom wil je Default zetten?
Wat is de bedoeling daarvan?
Volgens mij moet dat stuk "Default," gewoon weg.
in welke kolom wil je Default zetten?
Wat is de bedoeling daarvan?
Volgens mij moet dat stuk "Default," gewoon weg.
Klopt maar dit is niet de reden dat mijn data niet wordt weggeschreven. Was eventjesblijven staan bij het uitproberen omdat ik dacht dat dit zo hoorde om het record ID in te vullen (auto-increment). Ik heb de uitdaging van dergelijk formmulier te maken eigenlijk aangenomen om een reden te hebben om mij in PHP te verdiepen.
verdiep je in zoiets door query's te schrijven van 3 kolommen.
Dat houdt eea wat overzichtelijker, en je zoekt niet EN naar fouten in je aanpak EN een typfout.
Maar zoals gezegd: altijd controleren of je query gelukt is (en niet botweg redirecten naar "het is gelukt"pagina's.
Nu is de query onbeveiligd, met alle risico's.
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
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
<?php
// open database
$username="xxxxxx";
$password="xxxxxx";
$database="xxxxxx";
mysql_connect("xxxxxx.be.mysql",$username,$password);
@mysql_select_db($database);
//let's start our session, so we have access to stored data
session_start();
//Fout afhandeling
//errors weergeven
ini_set('display_errors',0); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
// sql debug
define('DEBUG_MODE',false); // true == aan, false == uit
//functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
//let's create the query
$insert_query = "insert into eva_tevr(
datum,
factnr,
email,
verkoper,
vriendwin,
uitleg,
crossel,
aanbod,
conform,
verkoop,
opm_winkel,
technieker,
vriendserv,
instserv,
afspraakserv,
uitlegserv,
crosselserv,
service,
opm_serv,
buralg,
bursnel,
buroplos,
admin,
opm_admin
) values (
" . $_SESSION['datum'] . ",
" . $_SESSION['factnr'] . ",
" . $_SESSION['email'] . ",
" . $_SESSION['verkoper'] . ",
" . $_SESSION['vriendwin'] . ",
" . $_SESSION['uitleg'] . ",
" . $_SESSION['crossel'] . ",
" . $_SESSION['aanbod'] . ",
" . $_SESSION['conform'] . ",
" . $_SESSION['verkoop'] . ",
" . $_SESSION['opm_winkel'] . ",
" . $_SESSION['technieker'] . ",
" . $_SESSION['vriendserv'] . ",
" . $_SESSION['instserv'] . ",
" . $_SESSION['afspraakserv'] . ",
" . $_SESSION['uitlegserv'] . ",
" . $_SESSION['crosselserv'] . ",
" . $_SESSION['service'] . ",
" . $_SESSION['opm_serv'] . ",
" . $_POST['buralg'] . ",
" . $_POST['bursnel'] . ",
" . $_POST['buroplos'] . ",
" . $_POST['admin'] . ",
" . $_POST['opm_admin'] . "
)";
//let's run the query
mysql_query($insert_query);
// Check of query is gelukt
if (($result_insert_query = mysql_query($sql_insert_query)) === false)
{
//als de query fout is -> foutafhandeling
echo showSQLError($sql_insert_user,mysql_error(),'Fout bij het invoegen van de gebruiker.');
}
else
{
// De query is geluk! :)
echo 'Reactie is toegevoegd!';
//database sluiten
mysql_close();
# Redirect user to success page
header("Location: http://www.telecomvanassche.be/bedankttevr.html");
?>
// open database
$username="xxxxxx";
$password="xxxxxx";
$database="xxxxxx";
mysql_connect("xxxxxx.be.mysql",$username,$password);
@mysql_select_db($database);
//let's start our session, so we have access to stored data
session_start();
//Fout afhandeling
//errors weergeven
ini_set('display_errors',0); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
// sql debug
define('DEBUG_MODE',false); // true == aan, false == uit
//functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
//let's create the query
$insert_query = "insert into eva_tevr(
datum,
factnr,
email,
verkoper,
vriendwin,
uitleg,
crossel,
aanbod,
conform,
verkoop,
opm_winkel,
technieker,
vriendserv,
instserv,
afspraakserv,
uitlegserv,
crosselserv,
service,
opm_serv,
buralg,
bursnel,
buroplos,
admin,
opm_admin
) values (
" . $_SESSION['datum'] . ",
" . $_SESSION['factnr'] . ",
" . $_SESSION['email'] . ",
" . $_SESSION['verkoper'] . ",
" . $_SESSION['vriendwin'] . ",
" . $_SESSION['uitleg'] . ",
" . $_SESSION['crossel'] . ",
" . $_SESSION['aanbod'] . ",
" . $_SESSION['conform'] . ",
" . $_SESSION['verkoop'] . ",
" . $_SESSION['opm_winkel'] . ",
" . $_SESSION['technieker'] . ",
" . $_SESSION['vriendserv'] . ",
" . $_SESSION['instserv'] . ",
" . $_SESSION['afspraakserv'] . ",
" . $_SESSION['uitlegserv'] . ",
" . $_SESSION['crosselserv'] . ",
" . $_SESSION['service'] . ",
" . $_SESSION['opm_serv'] . ",
" . $_POST['buralg'] . ",
" . $_POST['bursnel'] . ",
" . $_POST['buroplos'] . ",
" . $_POST['admin'] . ",
" . $_POST['opm_admin'] . "
)";
//let's run the query
mysql_query($insert_query);
// Check of query is gelukt
if (($result_insert_query = mysql_query($sql_insert_query)) === false)
{
//als de query fout is -> foutafhandeling
echo showSQLError($sql_insert_user,mysql_error(),'Fout bij het invoegen van de gebruiker.');
}
else
{
// De query is geluk! :)
echo 'Reactie is toegevoegd!';
//database sluiten
mysql_close();
# Redirect user to success page
header("Location: http://www.telecomvanassche.be/bedankttevr.html");
?>
Toevoeging op 19/01/2015 10:19:31:
en de { op regel 102 heeft ook geen } op regel 112
Toevoeging op 19/01/2015 10:20:36:
en het is wel handig om op regel 25 de debugmode juist AAN te zetten
Kan ik op een of andere manier controleren of er wel data in de velden zit. Je ziet ik moet alles nog leren.
Als de error reporting aan staat moet je een melding krijgen over $sql_insert_query, want die bestaat niet.
En op lijn 10 is het ook niet handig om errors in die functie te onderdrukken met een @.
Ik begin met het beginformulier en met de knop verder (send) ga ik naar het volgende formulier waar ik begin met volgende PHP code (zie hieronder) en vervolgens naar het volgende formulier waar ik terug de laatst ingevulde variabelen weer toevoeg op dezelfde manier.
Daar loopt het vermoedelijk fout
op pagina formtevr1.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
// Stap 2 in formtevr1 let's start the session na de input van formtevr
session_start();
//now, let's register our session variables
session_register('datum');
session_register('factnr');
session_register('email');
session_register('verkoper');
//finally, let's store our posted values in the session variables
$_SESSION['datum'] = $_POST['datum'];
$_SESSION['factnr'] = $_POST['factnr'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['verkoper'] = $_POST['verkoper'];
?>
// Stap 2 in formtevr1 let's start the session na de input van formtevr
session_start();
//now, let's register our session variables
session_register('datum');
session_register('factnr');
session_register('email');
session_register('verkoper');
//finally, let's store our posted values in the session variables
$_SESSION['datum'] = $_POST['datum'];
$_SESSION['factnr'] = $_POST['factnr'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['verkoper'] = $_POST['verkoper'];
?>
Als php dan zo geinstalleerd is (in php.ini) dat errors niet getoond worden, dan mis je dus de melding "parse error on line X van file Y.php"
Zet dan in .htaccess de error reporting aan:
http://www.pfz.nl/wiki/troubleshooter/#stap-1-regel-een-foutmelding
Toevoeging op 19/01/2015 10:50:13:
als gij den middeleeuwschen ende verouderden functionaanroepen op den regelen 7 tot en met 10 een verwijderde ende weghaalde?
Toevoeging op 19/01/2015 10:51:43:
overigens :
$insert_query = "insert into eva_tevr(
en een stuk verderop voer je een query uit met:
mysql_query($sql_insert_query)
dat is dus niet die insert query....
Met je error reporting aan, zou je daar toch iets met undefined-var moeten krijgen....
Gewijzigd op 19/01/2015 10:52:26 door Ivo P
We komen vooruit.
Nu krijg ik de melding (waar ik niet goed aan uit geraak)
Error: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '@telenet.be,
Tashina,
0,
,
,
0,
0,
,
' at line 29
Dat zal in het stuk VALUES (.....) zijn.
Ik gok dat dit ligt aan het massaal ontbreken van '' rond je values.
Vermoedelijk kan mysql van datum en factuurnummer getallen maken, maar niet van het emailadres.
Ivo P op 19/01/2015 11:30:45:
je query loopt in de soep bij de plek waar een emailadres staat.
Dat zal in het stuk VALUES (.....) zijn.
Ik gok dat dit ligt aan het massaal ontbreken van '' rond je values.
Vermoedelijk kan mysql van datum en factuurnummer getallen maken, maar niet van het emailadres.
Dat zal in het stuk VALUES (.....) zijn.
Ik gok dat dit ligt aan het massaal ontbreken van '' rond je values.
Vermoedelijk kan mysql van datum en factuurnummer getallen maken, maar niet van het emailadres.
Ik zie wel een heleboel van dit" staan. Ik begrijp niet goed wat je bedoelt. Ik had al eens een kort testje gedaan met een andere tabel en datum en zo dat kwam er wel goed in.
values (
" . $_SESSION['datum'] . ",
" . $_SESSION['factnr'] . ",
" . $_SESSION['email'] . ",
" . $_SESSION['verkoper'] . ",
" . $_SESSION['vriendwin'] . ",
" . $_SESSION['uitleg'] . ",
" . $_SESSION['crossel'] . ",
" . $_SESSION['aanbod'] . ",
" . $_SESSION['conform'] . ",
" . $_SESSION['verkoop'] . ",
" . $_SESSION['opm_winkel'] . ",
" . $_SESSION['technieker'] . ",
" . $_SESSION['vriendserv'] . ",
" . $_SESSION['instserv'] . ",
" . $_SESSION['afspraakserv'] . ",
" . $_SESSION['uitlegserv'] . ",
" . $_SESSION['crosselserv'] . ",
" . $_SESSION['service'] . ",
" . $_SESSION['opm_serv'] . ",
" . $_POST['buralg'] . ",
" . $_POST['bursnel'] . ",
" . $_POST['buroplos'] . ",
" . $_POST['admin'] . ",
" . $_POST['opm_admin'] . "
)";
Toevoeging op 19/01/2015 11:53:23:
Sorry,
nu even Time out want ik moet gaan werken. Ik zal vermoedelijk maar woensdagavond verder kunnen "prutsen en proberen". Deze avond en morgenavond andere problemen gaan oplossen bij mensen.
'".mysql_real_escape_string($var_die_je_hebt)."'
echo showSQLError($sql_insert_user,mysql_error(),'Fout bij het invoegen van de gebruiker.');
daar introduceer jij een nieuwe var $sql_insert_user.
geef daar eens als eerste parameter de query mee.
(En zet je error reporting hoog, E_ALL, want op deze manier blijf je zoeken naar voor dat hand liggende fouten)
of zo '" . mysql_real_escape_string ($_SESSION['datum']) . "', met haakjes vooraleer ik alles verander.
Alvast bedankt