Formulier aan database linken
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.
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.
Gewijzigd op 21/01/2015 18:56:50 door Ignace Verschaeve
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.
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.
Gewijzigd op 22/01/2015 08:46:27 door Ignace Verschaeve
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
Gewijzigd op 22/01/2015 20:11:29 door Ignace Verschaeve
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
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
// start the session
session_start();
// store our posted values in the session variables
$_SESSION['factnr'] = $_POST['factnr'];
$_SESSION['email'] = $_POST['email'];
?>
// 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:
Hier mag geen output of witruimte van HTML staan, zelfs geen andere aanroep van session_start() ook al worden deze in een daar geincludeerd bestand gebruikt.
Verder is het geen $session, maar $_SESSION, en moeten strings zoals 'email' tussen single-quotes.
Gewijzigd op 27/01/2015 08:49:14 door - Ariën -
Net zoals het formulier opgedeeld is in meerdere pagina's kun je dit karwei het beste opsplitsen in een aantal deelproblemen.
Allereerst de observatie dat de code wel werkt in browser A en niet in browser B. De enige reden die ik hiervoor kan bedenken is (inderdaad) dat het uiteindelijke HTML-document op een of andere reden niet goed geinterpreteerd wordt door een browser. Dat gebeurt denk ik alleen als er iets scheef zit in de HTML-code.
Stap 1: zorg voor kloppende HTML-documenten.
Vervolgens: er zijn op een of andere manier problemen met sessies. Als je zorgt dat session_start() wordt aangeroepen op elke pagina, nog voordat je begint met het afdrukken van je HTML-document (het versturen van output) dan zou dit geen problemen moeten opleveren.
Het gebruik van sessies is in principe een vaste instelling van je (formulier)pagina's. Net zoals het gebruik van je database (we gaan er gemakshalve even vanuit dat je deze overal nodig hebt en niet alleen bij het verwerken van de laatste pagina), eventuele debug-instellingen voor bij de ontwikkeling et cetera.
Om te voorkomen dat je op een van de pagina's een instelling vergeet of wellicht net iets anders instelt zou ik ook zeker de suggestie van Aar overnemen, zodat op alle pagina's dezelfde condities (instellingen) gelden.
Stap 2: bundel al je instellingen in een apart configuratie-bestand, en laad deze instellingen in nog voordat je je HTML-document begint.
Dit zorgt ook voor meer overzicht: je "pagina"-code wordt schoner en als er ergens een foutje zit in configuratie dan hoef je dat maar op 1 plek te controleren, in plaats van X plekken.
Tot slot de structuur van je applicatie. Deze is in grote lijnen hetzelfde:
1. toon formulier #1, eventueel met terugkoppeling
--> verstuur
2. verwerk formulier #1, indien correct, ga verder naar 3, anders terug naar 1
3. toon formulier #2, eventueel met terugkoppeling
--> verstuur
4. verwerk formulier #2, indien correct, ga verder naar 5, anders terug naar 3
-- et cetera --
X. toon formulier #n, eventueel met terugkoppeling
--> verstuur
Y. verwerk formulier #n, indien correct... misschien wil je dan een gebruiker nog de mogelijkheid geven om al zijn/haar ingevulde gegevens nogmaals te tonen (te laten bevestigen) voor het uiteindelijk versturen / op te slaan? Daarnaast wil je een gebruiker misschien tussentijds de mogelijkheid geven om vrij te navigeren tussen de pagina's die reeds zijn ingevuld?
Wat je ook nog zou kunnen doen is alles op 1 pagina zetten, en de verschillende formulieren tonen/verbergen met tabs. Je kunt het formulier op tig manier implementeren, daarbij is het wel het beste om eerst een route te kiezen.
Stap 3: werk (in gedachten) de "flow" van de formulierenreeks uit en bedenk hierbij wat een gebruiker allemaal kan/mag. Krijgt de gebruiker bjivoorbeeld na afloop ook nog een mailtje met de ingevulde gegevens? Worden de gegevens ook opgeslagen (die keuze heb je al min of meer gemaakt) etc.
Beschouw het uitdenken van je code (voordat je er aan begint) als het volledig plannen van een reis. Dit is onderweg misschien minder avontuurlijk, maar een stuk comfortabeler :).
EDIT: de stappen hoeven niet noodzakelijkerwijs in die volgorde doorlopen te worden.
Gewijzigd op 27/01/2015 12:31:06 door Thomas van den Heuvel
1)Welkomstpagina met 3 mogelijkheden/
formulier winkel, formulier techniek, formulier administratie
Normaal gaan ze eerst naar formulier winkel en dan desgevallend naar techniek en/of administratie.
2)Formulier 1 winkel invullen laten verwerken door PHP script send.php naar database/tabel 1
vervolgens doorgestuurd naar
3) dankpagina waar er terug de keuze is om of naar formulier techniek of formulier administratie. het is wel de bedoeling dat het ingegeven mailadres en factuurnummer meegenomen worden uit formulier 1 (vandaar de session variabele) en automatisch ingevuld wordt op dit formulier.
Terug verwerking door een PHP script naar database / tabel 2
4)Naar dankpagina 2 waar terug de mogelijkheid bestaat om naar formulier administratie te gaan of uit te loggen en vooral weer met meename van mailadres en factuurnummer.
5) verwerking naar database / tabel 3
6) uiteindelijke bedankingspagina en slot.
Vraag: waar start ik de sessie van de 2 variabelen die ik wil meenemen.
En is deze syntax juist:
Een mail hoeft de gebruiker niet te krijgen enkel de antwoorden komen in 3 tabellen.
Ignace Verschaeve op 27/01/2015 20:08:43:
Vraag: waar start ik de sessie van de 2 variabelen die ik wil meenemen.
En is deze syntax juist:
En is deze syntax juist:
Vanwaar die punten? En verder is het $_SESSION.
PHP-regels eindigen we altijd met een punt-komma.
Ondertussen begint het op een werkbaar formulier te lijken.
Waarvoor mijn dank.
Veel geleerd ondertussen, al zal ik wel nooit een specialist worden.
Aan allen bedankt. Mocht er iemand geinteresseerd zijn in de code, laat het weten. Ik stel ze graag ter beschikking.