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";);
?>
Misschien is de pagina leeg omdat de query gelukt is, en dan volgt er alleen nog enkel PHP-commentaar voor nu.

In geval van blanko pagins's: Plaats bij elke if-else statement een 'echo' neer met een stukje tekst. Uiteindelijk kan je dan aan de hand hiervan zien welke route er wordt afgelegd binnen de statements, en dan kan je de fout makkelijk lokaliseren.
Wordt wel weggeschreven maar zonder de eerste velden al deze $_Session variabelen.

Ik lees ergens dat session_start(); voor elke html code moet staan. Ik vraag me af of dit eigenlijk moet op elke pagina/formulier die aangesproken wordt.

Het is zeer eigenaardige dat dit een aantal keren gelukt is via firefox maar nu ook niet meer. Kijk ik probeer nu 2 maal naeen en de eerste is leeg op de laatste velden uit $Post na. De 2e lukt dan wel.
Ik heb al een mail gestuurd naar de provider. Misschien kan die mij antwoorden.
Ignace Verschaeve op 21/01/2015 18:04:41

Ik lees ergens dat session_start(); voor elke html code moet staan. Ik vraag me af of dit eigenlijk moet op elke pagina/formulier die aangesproken wordt.

Ja, maar je kan deze ook in een globale config-file die overal geincludeerd wordt, plaatsen.
Dat zal ik dan ook moeten leren maar ik weet niet of dit nuttig is om dit te doen voor die in totaal 4 HTML pagina's. Waarvan eigenlijk maar op het einde de database aangesproken wordt.
Ignace Verschaeve op 21/01/2015 18:04:41
Ik lees ergens dat session_start(); voor elke html code moet staan. Ik vraag me af of dit eigenlijk moet op elke pagina/formulier die aangesproken wordt.


Als je niet op elke pagina session_start gebruikt, kun je (op die pagina) ook geen gegevens "opslaan" in sessie-variabelen.
Ondertussen session_start op elke pagina gezet. Maar toch nog altijd geen resultaat zoals het hoort.
Deze avond probeer ik dit eens:
http://stackoverflow.com/questions/3476538/php-sessions-timing-out-too-quickly
Zien wat het geeft.

Hoe kan ik eventueel controleren als de data wel overgedragen wordt van het ene formulier naar het andere om uiteindelijk verstuurd te worden naar de database? Als is het maar tijdelijk zodat ik het verloop kan zien.
Dit moet alles uit je sessie laten zien t.b.v. debug en testdoeleinden.

<?php
echo "<pre>".print_r($_SESSION,true)."</pre>";
?>
Wilt er iemand het formulier nu eens proberen:
www.telecomvanassche.be/formtevr.php
Ik heb op de server van one.com de versie PHP 5.6 in gebruik genomen ipv versie 5.3 en foutmelding aan.

Zet in elk van de opmerkingsvelden maar met welke browser je dit gedaan hebt en het uur.
email adres zet je maar [email protected]

Blijkbaar werkt het hier bij mij nu wel. Laat ons hopen.
Chrome spartelt blijkbaar nog tegen, die stuurt het niet goed door.
En vanaf een Ipad ook niet
Ik word er hopeloos van. Pagina's wat omgetuned en nu krijg ik volgende melding en weet ik niet meer wat ik moet doen.
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /customers/4/f/3/telecomvanassche.be/httpd.www/formtevr2.php:2) in /customers/4/f/3/telecomvanassche.be/httpd.www/formtevr2.php on line 5 Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /customers/4/f/3/telecomvanassche.be/httpd.www/formtevr2.php:2) in /customers/4/f/3/telecomvanassche.be/httpd.www/formtevr2.php on line 5

de code vanaf lijn 5

<?php

// start the session
session_start();


// store our posted values in the session variables
$_SESSION['factnr'] = $_POST['factnr'];
$_SESSION['email'] = $_POST['email'];

?>

Dit zijn de 2 waarden die ik uit formulier 1 wil meenemen.
En gereed invullen in formulier 2 kwestie dat de klant zijn gegevens geen 2 maal moet invullen.

dit komt dan in het invulveld van het formulier 2 te staan:
<?php echo $session[email]?>

Reageren