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.

<?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";);
?>
Met haakjes, mysql_real_escape_string() is een functie.
Hoera, we zijn een stap verder. Alhoewel? De data wordt er 2 keer ingeschreven. Nu nog uitvinden waarom dit gebeurt. En ik heb nog enkele lege velden. De naam van 2 velden bleken niet overeen te stemmen. Maar we zijn op de goede weg. Gelukkig had die klant afgebeld voor deze avond zodat ik nog wat kan doorwerken.
Uiteindelijke code.
<?php
// open database

$username="xxxx";
$password="xxxx";
$database="xxxx";

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();

//We zetten dit volledig bovenaan

//errors weergeven
ini_set('display_errors',0); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);

// sql debug
define('DEBUG_MODE',true); // 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 (
'" . mysql_real_escape_string($_SESSION['datum']) . "',
'" . mysql_real_escape_string($_SESSION['factnr']) . "',
'" . mysql_real_escape_string($_SESSION['email']) . "',
'" . mysql_real_escape_string($_SESSION['verkoper']) . "',
'" . mysql_real_escape_string($_SESSION['vriendwin']) . "',
'" . mysql_real_escape_string($_SESSION['uitleg']) . "',
'" . mysql_real_escape_string($_SESSION['crossel']) . "',
'" . mysql_real_escape_string($_SESSION['aanbod']) . "',
'" . mysql_real_escape_string($_SESSION['conform']) . "',
'" . mysql_real_escape_string($_SESSION['verkoop']) . "',
'" . mysql_real_escape_string($_SESSION['opm_winkel']) . "',
'" . mysql_real_escape_string($_SESSION['technieker']) . "',
'" . mysql_real_escape_string($_SESSION['vriendserv']) . "',
'" . mysql_real_escape_string($_SESSION['instserv']) . "',
'" . mysql_real_escape_string($_SESSION['afspraakserv']) . "',
'" . mysql_real_escape_string($_SESSION['uitlegserv']) . "',
'" . mysql_real_escape_string($_SESSION['crosselserv']) . "',
'" . mysql_real_escape_string($_SESSION['service']) . "',
'" . mysql_real_escape_string($_SESSION['opm_serv']) . "',
'" . mysql_real_escape_string($_POST['buralg']) . "',
'" . mysql_real_escape_string($_POST['bursnel']) . "',
'" . mysql_real_escape_string($_POST['buroplos']) . "',
'" . mysql_real_escape_string($_POST['admin']) . "',
'" . mysql_real_escape_string($_POST['opm_admin']) . "'
)";

//let's run the query
mysql_query($insert_query);

// Check of query is gelukt
if (($result_insert_query = mysql_query($insert_query)) === false)
{
//als de query fout is -> foutafhandeling
echo showSQLError($insert_query,mysql_error(),'Fout bij het invoegen van de gebruiker.');
}
else
{
// De query is gelukt! :)

echo 'Reactie is toegevoegd!';
}
//database sluiten
mysql_close();

# Redirect user to success page

header("Location: http://www.telecomvanassche.be/bedankttevr.html";);

?>
Op lijn 93 en 96 wordt het uitgevoerd. Gezien je op lijn 96 al foutafhandeling hebt kan je de foutafhandelingsloze regel op lijn 93 wel verwijderen.

Verder kan je niet ieyts echo'en terwijl je direct wordt doorgestuurd. Dus die echo kan weg, of die redirect op einde.
Bedankt.
Zoals je zegt regel 93 uitgeschakeld en regel 105 en nu werkt het zoals het hoort.
Ik zal wel nooit de hersenen hebben om dit allemaal te leren. Ik heb wel enorm bijgeleerd. Als ik op pensioen ben ( nog een 3-tal jaar)zal ik proberen mij toch nog wat te verdiepen.
Jullie hebben mij enorm geholpen om de stukjes in elkaar te puzzelen.

[size=xsmall]Toevoeging op 20/01/2015 19:22:56:[/size]

de zorgen zijn nog niet voorbij. Nu blijkt dat het ganse formulier alleen maar correct wordt doorgegeven als het via firefox gebeurt. Via Internet explorer alleen maar de laatste $Post variabelen. Iemand een oplossing? Ik dacht dat php browser onafhankelijk draaide op de server. Nu nog chrome uitproberen.

[size=xsmall]Toevoeging op 20/01/2015 19:26:34:[/size]

Via Chrome zelfde probleem. :(
Is het formulier wel valid html?
Normaal gezien wel. Maar volgens dat ik nu wat rondgekeken heb zou het kunnen dat de lokale computer niet dezelfde tijd heeft als wat de server geeft. En is IE en Chrome daar strikter in dan firefox.Ik heb gemerkt dat de tijd 1 uur achterloopt. Hier in belgie en Nederland is het bvb 19 u maar als ik de tijd opvraag zie dat er 18 u staat. Dus zoek ik nu de code om de tijd gelijk te zetten met de lokale tijd.
Ik zie niet in wat de tijd te maken heeft met een POST-request.

Kijk eens met print_r($_POST) wat er in je POST-request zit, en waar deze met beide browsers verschilt. Ik gok op een fout in je formulier.
Gebruik je een readonly veld toevallig?
Ignace Verschaeve op 20/01/2015 19:45:16

Ik heb gemerkt dat de tijd 1 uur achterloopt.


Heeft niks met een formulier te maken.
Maar kijk eens naar date_default_timezone_set().
Heeft niets te maken met SPost want dit komt goed mee. Heeft alles te maken met $Session omdat ik de diverse input vanaf formulier 1 naar formulier 2 naar formulier 3 meeneem naar uiteindelijk het laatste formulier. Volgens verschillende sites heeft IE daar een probleem als de server tijd niet gelijk loopt met de tijd van de computer van de gebruiker.
session_start(); moet ALTIJD boven ELK ANDER element staan. En als ik het goed heb ook boven de Connectie.

Start je tevens op de andere pagina's de sessie wel en sla je de gegevens juist op in de sessies na het versturen?

Reageren