Momenteel ben ik bezig met een website waarop mensen zich in kunnen schrijven voor een wedstrijd. Hiervoor zijn een hoop gegevens nodig die ingevoerd, gecontroleerd en opgeslagen moeten worden.
Dit geheel handel ik af in een php script. Eerst wordt er een formulier getoond dat ingevuld moet worden. Vervolgens worden de waardes nagekeken (niet leeg en waar het nummertjes moeten zijn moet dat ook echt zo zijn enzovoorts. Op het moment dat er iets niet goed is aan de input wordt het formulier weer weergegeven met de ingevulde gegevens en een foutmelding bij de foutief ingevulde velden. Het probleem is nu echter dat het script plotsklaps lijkt te stoppen bij het weergeven van dit "correctieformulier"... Dit bestaat in het php bestand uit plain html met tussendoor <?php echo("bla"); ?> om de input informatie en de foutmeldingen erin te zetten. (Het "bla" gedeelte is meestal het outputten van een string of de output van een functie) Er zijn een aantal van deze punten waarop het script regelmatig stopt (met allen exact dezelfde php code erin). Waar gestopt wordt hangt af van waar er een foutmelding wordt weergegeven maar hier zit geen duidelijk patroon in.
De stukjes code waar hij vastloopt zien er om precies te zijn zo uit:
$GETPOST_dinner krijg ik van S_POST middels import_request_variables en bevat "yes" of "no".
De functie die aangeroepen wordt is de volgende:
Deze functie gebruik ik om te bepalen of een bepaalde checkbox CHECKED moet zijn in de html.
Wat ik tot nog toe geprobeerd heb:
- Er wordt nog eerder gestopt als ik bijvoorbeeld de $_POST array laat outputten met print_r... Hier ging ik denken aan een geheugenprobleem. Doe ik dat echter een keer of 8 dan wordt ineens wel weer het hele script afgedraaid... Een geheugenprobleem lijkt me daarmee dus uitgesloten.
- het verwijderen van de echo tussen de <?php en ?> tags waardoor er alleen een leeg stukje staat zorgt ervoor dat het hele script doorlopen wordt.
- het verwijderen van het hele stukje php laat wel het hele script doorlopen
- wanneer ik echo(functie) vervang door letterlijk echo("bla"); dan gaat het ook goed
Ik zie zelf niet waar ik de fout in ga, het lijkt aan de functie te liggen maar de functie wordt veel vaker gebruikt in hetzelfde script en daar gaat het wel goed, het is pas bij dit punt (of ietsje verderop bij een zelfde soort stukje) dat het misgaat...
Heeft iemand hier een idee waar ik naar moet kijken om dit op te lossen?
Als de gehele code nodig is dan post ik die natuurlijk graag, het is echter nogal een lang stuk dus als het zo kan is dat handiger denk ik.
Dit geheel handel ik af in een php script. Eerst wordt er een formulier getoond dat ingevuld moet worden. Vervolgens worden de waardes nagekeken (niet leeg en waar het nummertjes moeten zijn moet dat ook echt zo zijn enzovoorts. Op het moment dat er iets niet goed is aan de input wordt het formulier weer weergegeven met de ingevulde gegevens en een foutmelding bij de foutief ingevulde velden. Het probleem is nu echter dat het script plotsklaps lijkt te stoppen bij het weergeven van dit "correctieformulier"... Dit bestaat in het php bestand uit plain html met tussendoor <?php echo("bla"); ?> om de input informatie en de foutmeldingen erin te zetten. (Het "bla" gedeelte is meestal het outputten van een string of de output van een functie) Er zijn een aantal van deze punten waarop het script regelmatig stopt (met allen exact dezelfde php code erin). Waar gestopt wordt hangt af van waar er een foutmelding wordt weergegeven maar hier zit geen duidelijk patroon in.
De stukjes code waar hij vastloopt zien er om precies te zijn zo uit:
PHP:
1
| <?php echo (checked(no, $GETPOST_dinner)); ?> |
$GETPOST_dinner krijg ik van S_POST middels import_request_variables en bevat "yes" of "no".
De functie die aangeroepen wordt is de volgende:
PHP:
1
2
3
4
5
6
| function checked($input1, $input2) { if ($input1 == $input2) $return = "CHECKED"; else $return = ""; return $return; } |
Deze functie gebruik ik om te bepalen of een bepaalde checkbox CHECKED moet zijn in de html.
Wat ik tot nog toe geprobeerd heb:
- Er wordt nog eerder gestopt als ik bijvoorbeeld de $_POST array laat outputten met print_r... Hier ging ik denken aan een geheugenprobleem. Doe ik dat echter een keer of 8 dan wordt ineens wel weer het hele script afgedraaid... Een geheugenprobleem lijkt me daarmee dus uitgesloten.
- het verwijderen van de echo tussen de <?php en ?> tags waardoor er alleen een leeg stukje staat zorgt ervoor dat het hele script doorlopen wordt.
- het verwijderen van het hele stukje php laat wel het hele script doorlopen
- wanneer ik echo(functie) vervang door letterlijk echo("bla"); dan gaat het ook goed
Ik zie zelf niet waar ik de fout in ga, het lijkt aan de functie te liggen maar de functie wordt veel vaker gebruikt in hetzelfde script en daar gaat het wel goed, het is pas bij dit punt (of ietsje verderop bij een zelfde soort stukje) dat het misgaat...
Heeft iemand hier een idee waar ik naar moet kijken om dit op te lossen?
Als de gehele code nodig is dan post ik die natuurlijk graag, het is echter nogal een lang stuk dus als het zo kan is dat handiger denk ik.
Gemberthee: water met een smaakje.