Formulier aan database linken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Ignace Verschaeve

Ignace Verschaeve

18/01/2015 20:06:00
Quote Anchor link
Tot nu toe was het mij gelukt om een simpel formulier op te slaan in een MYsql database.
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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");
?>
Gewijzigd op 18/01/2015 20:06:51 door Ignace Verschaeve
 
PHP hulp

PHP hulp

16/11/2024 17:32:14
 
- Ariën  -
Beheerder

- Ariën -

18/01/2015 20:56:55
 
Ignace Verschaeve

Ignace Verschaeve

19/01/2015 09:22:14
Quote Anchor link
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.
 
Ivo P

Ivo P

19/01/2015 09:35:15
Quote Anchor link
values (Default,

in welke kolom wil je Default zetten?
Wat is de bedoeling daarvan?

Volgens mij moet dat stuk "Default," gewoon weg.
 
- Ariën  -
Beheerder

- Ariën -

19/01/2015 09:38:30
Quote Anchor link
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.

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.
 
Ignace Verschaeve

Ignace Verschaeve

19/01/2015 09:50:29
Quote Anchor link
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.


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.
 
Ivo P

Ivo P

19/01/2015 09:54:10
Quote Anchor link
tip:

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.
 
- SanThe -

- SanThe -

19/01/2015 10:03:49
Quote Anchor link
Denk ook eens aan veiligheid.
Nu is de query onbeveiligd, met alle risico's.
 
Ignace Verschaeve

Ignace Verschaeve

19/01/2015 10:17:30
Quote Anchor link
Heb geprobeerd die foutafhandeling erin te zetten. Vermoedelijk (zeer zeker) een fout gemaakt want nu is het resultaat de grote leegte, een maagdelijk wit scherm. Mannen/vrouwen gezocht die mij mijn fouten wijzen. Dit is het resultaat
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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");
?>
 
Ivo P

Ivo P

19/01/2015 10:18:33
Quote Anchor link
je function mist de afsluitende } op regel 38

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
 
Ignace Verschaeve

Ignace Verschaeve

19/01/2015 10:31:09
Quote Anchor link
Foutjes aangepast. Nu zegt die mij wel dat er een fout is maar nu weet ik nog altijd niet wat de fout veroorzaakt, of waar.
Kan ik op een of andere manier controleren of er wel data in de velden zit. Je ziet ik moet alles nog leren.
 
- SanThe -

- SanThe -

19/01/2015 10:34:11
Quote Anchor link
Als de error reporting aan staat moet je een melding krijgen over $sql_insert_query, want die bestaat niet.
 
- Ariën  -
Beheerder

- Ariën -

19/01/2015 10:39:14
Quote Anchor link
En op lijn 10 is het ook niet handig om errors in die functie te onderdrukken met een @.
 
Ignace Verschaeve

Ignace Verschaeve

19/01/2015 10:45:34
Quote Anchor link
Prima. Nu weet ik dat de query empty is. Dus loopt het fout met dat session gedoe.
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)
PHP script in nieuw venster Selecteer het PHP script
1
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'];
 
?>
 
Ivo P

Ivo P

19/01/2015 10:48:27
Quote Anchor link
als er een parse error optreedt (de php is gewoon fout en kan niet uitgevoerd worden), dan kan ook de error-reporting niet door php ingeschakeld worden.

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
 
Ignace Verschaeve

Ignace Verschaeve

19/01/2015 11:09:37
Quote Anchor link
De opmerkingen aangepast.
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
 
Ivo P

Ivo P

19/01/2015 11:30:45
Quote Anchor link
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.
 
Ignace Verschaeve

Ignace Verschaeve

19/01/2015 11:50:36
Quote Anchor link
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.


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.
 
- SanThe -

- SanThe -

19/01/2015 12:25:39
Quote Anchor link
Maak van al die regels eens dit:

'".mysql_real_escape_string($var_die_je_hebt)."'
 
Ivo P

Ivo P

19/01/2015 12:54:19
Quote Anchor link
je zou de query zien, als je die meegaf aan de foutmeldingsfunctie:

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)
 
Ignace Verschaeve

Ignace Verschaeve

19/01/2015 17:43:57
Quote Anchor link
Is de syntax zo: '" . mysql_real_escape_string $_SESSION['datum'] . "',
of zo '" . mysql_real_escape_string ($_SESSION['datum']) . "', met haakjes vooraleer ik alles verander.

Alvast bedankt
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.