PHP Form Handling

Status
Niet open voor verdere reacties.

tv woofing

Gebruiker
Lid geworden
28 jul 2009
Berichten
26
Ik heb dus een klein probleem. Ik heb een reeks vragen (forms), waarvan het antwoord telkens opgeslagen wordt in een sessie. Als alle vragen beantwoord zijn, komt er een scherm met een overzicht van welk antwoord je op welke vraag gaf.

Ik wil dat mensen nog terug kunnen linken naar dat overzicht, dus ik dacht dat te doen met de functie uniqid(), om die persoonlijke overzichtspagina een unieke id te geven.

Maar om terug te linken moet die id in de url staan, ik wil echter niet dat alle antwoorden op de vragen in de url komen, dus lostte ik dat op door de form method="post" te doen. Maar als ik die id in de url wil krijgen, heb ik GET nodig. Wat moet ik doen?
 
Ik zou alles opslaan in een database. Als je dat niet wilt, dan zou je het ook in een cookie kunnen stoppen. Uniqid() kan je daar inderdaad bij helpen.

Als je laat weten welke manier je voorkeur verdient kunnen we je verder helpen.
 
Ik zou alles opslaan in een database. Als je dat niet wilt, dan zou je het ook in een cookie kunnen stoppen. Uniqid() kan je daar inderdaad bij helpen.

Als je laat weten welke manier je voorkeur verdient kunnen we je verder helpen.

Ik zou dit het liefst via cookies doen, =) Hoewel ik persoonlijk dan nog geen idee heb hoe ik dit moet aanpakken.
 
Wat je kunt doen, is elke keer dat een formulier verzonden is, de waarde direct in een cookie stoppen:

PHP:
<?php

  setcookie ( "Naam", $sNaam, time() + 60 * 60 * 24 * 30 );

?>

Nu blijft een waarde 30 dagen in de cookie staan. Dit doe je voor elke waarde die verzonden wordt.

Op de pagina waar je de gegevens ophaalt, doe je dan als volgt:

PHP:
<?php

  echo 'Naam: ';
  echo ( isset ( $_COOKIE[ 'Naam' ] ) ) ? $_COOKIE[ 'Naam' ] : 'Not Set';

?>

En ook dat doe je voor alle waarden. In dit geval heb je dus geen uniqid() nodig, want de gegevens worden opgeslagen aan de client-side.
 
Heel erg bedankt voor je hulp, het werkt. Maar ondertussen heb ik een makkelijker alternatief gevonden: ik heb een compleet nieuw form gemaakt, op de overzichtspagina, met de optie om alles op te slaan, dat form heeft method="get". Dan heb ik met css (display:none) een textveld verborgen met value="<?php echo uniqid(); ?>" en name="uid", zodat de url (permanent!) opgeslagen wordt in de url.
 
Dit begrijp ik niet helemaal.

- Je hebt dus een nieuw form gemaakt (daar zet je neem ik aan de waarden uit de sessie in?)
- Daar zit ook een (verborgen) uniqid() in.
- Form heeft method GET.


Maar dan:

- De url wordt opgeslagen in de url?
- Waar wordt de data nu opgeslagen?
- Wat wil je nu met die uniqid?
 
Eigenlijk zijn het allemaal verschillende forms. Er komt één form op één pagina, en als er op submit wordt geduwd, wordt de waarde van de checkbox opgeslagen in een session. Op de volgende pagina staat er weer een form met een checkbox, and so on. Tot je op de overzichtspagina komt. Op die overzichtspagina heb ik een laatste form gezet:

HTML:
<form action="custombutton4.php" method="get">
<div style="display:none;">
<input type="text" name="uid" value="<?php echo uniqid(); ?>" />
</div>
<input type="submit" value="Make ID"  />
</form>

Zodat eigenlijk die pagina wordt 'opgeslagen'. Ik had het anders moeten verwoorden, ik hoop dat je het nu wel snapt.
 
Ik snap nog steeds niet wat het nut van je pagina is, en waar je de data opslaat en wat het nut van de uniqid is... Maargoed...

Overigens is je oplossing voor de uid ook nogal omslachtig. In plaats van een text-veld onzichtbaar te maken met CSS, kun je ook gewoon

HTML:
<input type="hidden" name="uid" value="<?php echo uniqid(); ?>" />
 
Laatst bewerkt:
Het heeft nut omdat iedereen een ander resultaat heeft, en wanneer iemand dat wil delen, is zo'n url handig.

Verder komen hidden-velden niet in de url dacht ik, dus krijg je geen custombutton4.php?uid=id, maar custombutton4.php
 
Jawel, hidden velden worden gewoon verzonden en komen dus gewoon in de url. Wat zou anders het nut zijn, maar dat had je ook gewoon kunnen proberen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan