Formulier aan database linken

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3

- Ariën  -
Beheerder

- Ariën -

21/01/2015 15:45:42
Quote Anchor link
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.
 
PHP hulp

PHP hulp

16/11/2024 17:57:28
 
Ignace Verschaeve

Ignace Verschaeve

21/01/2015 18:04:41
Quote Anchor link
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.
 
- Ariën  -
Beheerder

- Ariën -

21/01/2015 18:29:41
Quote Anchor link
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.
 
Ignace Verschaeve

Ignace Verschaeve

21/01/2015 18:46:52
Quote Anchor link
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.
Gewijzigd op 21/01/2015 18:56:50 door Ignace Verschaeve
 
- Ariën  -
Beheerder

- Ariën -

21/01/2015 18:51:08
Quote Anchor link
Ach, het stelt niks voor:
http://www.php.net/include
 
Obelix Idefix

Obelix Idefix

21/01/2015 20:30:23
Quote Anchor link
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.
 
Ignace Verschaeve

Ignace Verschaeve

22/01/2015 08:43:35
Quote Anchor link
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.
Gewijzigd op 22/01/2015 08:46:27 door Ignace Verschaeve
 
- Ariën  -
Beheerder

- Ariën -

22/01/2015 08:50:20
Quote Anchor link
Dit moet alles uit je sessie laten zien t.b.v. debug en testdoeleinden.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<pre>".print_r($_SESSION,true)."</pre>";
?>
Gewijzigd op 22/01/2015 08:50:40 door - Ariën -
 
Ignace Verschaeve

Ignace Verschaeve

22/01/2015 19:56:28
Quote Anchor link
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
Gewijzigd op 22/01/2015 20:11:29 door Ignace Verschaeve
 
Ignace Verschaeve

Ignace Verschaeve

27/01/2015 08:34:07
Quote Anchor link
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

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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'];
 
?>


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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo $session[email]?>
 
- Ariën  -
Beheerder

- Ariën -

27/01/2015 08:48:00
Quote Anchor link
Wat staat er boven session_start()?
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 -
 
Thomas van den Heuvel

Thomas van den Heuvel

27/01/2015 11:59:21
Quote Anchor link
Misschien wordt het tijd voor een gestructureerde(re) aanpak :).

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

Ignace Verschaeve

27/01/2015 20:08:43
Quote Anchor link
Structuur is zo:
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo .$_session['email']. ?>




Een mail hoeft de gebruiker niet te krijgen enkel de antwoorden komen in 3 tabellen.
 
- Ariën  -
Beheerder

- Ariën -

27/01/2015 20:18:56
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo .$_session['email']. ?>

Vanwaar die punten? En verder is het $_SESSION.
PHP-regels eindigen we altijd met een punt-komma.
 
Ignace Verschaeve

Ignace Verschaeve

28/01/2015 08:54:06
Quote Anchor link
Bedankt bij deze aangepast. Ik heb al zoveel zitten prutsen dat ik het zelf niet meer weet.
Ondertussen begint het op een werkbaar formulier te lijken.
Waarvoor mijn dank.
Veel geleerd ondertussen, al zal ik wel nooit een specialist worden.
 
Ignace Verschaeve

Ignace Verschaeve

02/02/2015 10:37:59
Quote Anchor link
Nog even melden dat alles ondertussen werkt. Opgesplitst in 3 formulier waar alleen 2 velden via $_Session worden doorgegeven. Alles lijkt nu te werken zoals het hoort. Veel geleerd. Op naar de volgende uitdaging.
Aan allen bedankt. Mocht er iemand geinteresseerd zijn in de code, laat het weten. Ik stel ze graag ter beschikking.
 

Pagina: « vorige 1 2 3



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.