login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Radio Form Onthouden ($_SESSION) werkt niet

Offline Nrzonline - 20/07/2006 11:26 (laatste wijziging 20/07/2006 11:29)
Avatar van NrzonlinePHP ver gevorderde Hey SiMa Leute,

Ik heb een registratie formuliertje gemaakt, waarbij je kan selecteren of je de 'newsletter' wilt ontvangen (Ja/Nee - waarde:
1/0) Ik heb gemaakt met sessions dat de ingevoerde gegevens
worden bewaard. Maar nu onthoud hij de 'yes / 1' wel, en de
'no / 0' niet. Iemand een idee hoe dit komt?

form: (templatePower)
  1. {YES} <input name="newsletter" type="radio" value="1" {session_NEWSLETTER_YES} />
  2. {NO} <input name="newsletter" type="radio" value="0" {session_NEWSLETTER_NO} />


sessions aanmaken:
  1. <?PHP
  2. if (empty ($_SESSION['log']['newsletter_yes'])){$_SESSION['log']['newsletter_yes'] = "checked"; }
  3. if (empty ($_SESSION['log']['newsletter_no'])){ $_SESSION['log']['newsletter_no'] = "" ; }
  4. ?>


Assignen aan TemplatePower:
  1. <?PHP
  2. $tpl -> assign (array (
  3. "session_NEWSLETTER_YES" => $_SESSION['log']['newsletter_yes'],
  4. "session_NEWSLETTER_NO" => $_SESSION['log']['newsletter_no'] ));
  5. ?>


nieuwe sessions aanmaken na submit:
  1. <?PHP
  2. if (isset ($_POST['add_profile']))
  3. {
  4. if ($_POST['newsletter'] == 1){ $_SESSION['log']['newsletter_yes'] = "checked"; }else{ $_SESSION['log']['newsletter_no'] = ""; }
  5. if ($_POST['newsletter'] == 0){ $_SESSION['log']['newsletter_no'] = "checked"; }else{ $_SESSION['log']['newsletter_yes'] = ""; }
  6. header ("LOCATION: register.php"); // Controleren of het werkt: NEE
  7. }
  8.  
  9. ?>

8 antwoorden

Gesponsorde links
Offline marten - 20/07/2006 11:34
Avatar van marten Beheerder maak er 1 / 2 van 
Offline Nrzonline - 20/07/2006 11:36 (laatste wijziging 20/07/2006 11:39)
Avatar van Nrzonline PHP ver gevorderde ok, ff proberen =)

*edit*

  1. <?PHP
  2. if ($_POST['newsletter'] == 1){ $_SESSION['log']['newsletter_yes'] = "checked"; }else{ $_SESSION['log']['newsletter_no'] = ""; }
  3. if ($_POST['newsletter'] == 2){ $_SESSION['log']['newsletter_no'] = "checked"; }else{ $_SESSION['log']['newsletter_yes'] = ""; }
  4. ?>


Nog altijd onthoud hij de ja naar nee wel
en de nee naar ja niet
Offline Thomas - 20/07/2006 13:24
Avatar van Thomas Moderator Je kunt toch volstaan met één sessie-variabele hiervoor?

Als een radio-button niet ingevuld is, wordt deze ook niet gepost (en komt dan niet voor in $_POST).

Je kunt het best altijd een radiobutton geselecteerd hebben. Als de sessie-var niet bestaat of niet is gevuld, pak je de default, en anders de waarde in de sessie.
Offline Nrzonline - 20/07/2006 13:40
Avatar van Nrzonline PHP ver gevorderde In het begin van de lege sessies maakt hij standaar 'ja' geselecteerd.
En wat je in gedachte had met 1 sessie snap ik niet helemaal =)

Btw, hij moet natuurlijk ook van Nee weer terug kunnen worden
geselecteerd naar Ja, en die moet dan ook weer op ja blijven
ookal herlaad ik de pagina.
Offline Thomas - 20/07/2006 13:56
Avatar van Thomas Moderator form - 1 van de 2 ook als default checken:
  1. <input name="newsletter" type="radio" value="1" {SESSION_NEWSLETTER_1} />
  2. <input name="newsletter" type="radio" value="0" {SESSION_NEWSLETTER_0} />


init:
  1. if(empty($_SESSION['log']['newsletter']))
  2. {
  3. // default
  4. $_SESSION['log']['newsletter'] = 0;
  5. }


assign:
  1. $tpl->assign("SESSION_NEWSLETTER_".$_SESSION['log']['newsletter'], ' checked="checked"');


na submit:
  1. if(isset($_POST['add_profile']))
  2. {
  3. $_SESSION['log']['newsletter'] = $_POST['newsletter'];
  4.  
  5. // zorg dat alle wijzigingen worden opgeslagen
  6. header("Location: register.php");
  7. // zorg dat de rest van het script niet uitgevoerd wordt
  8. exit();
  9. }
Offline Nrzonline - 20/07/2006 14:06
Avatar van Nrzonline PHP ver gevorderde Ok ik ga het even proberen =)
Offline Thomas - 20/07/2006 14:12 (laatste wijziging 20/07/2006 14:13)
Avatar van Thomas Moderator Het is trouwens handiger om dit soort "rijtjes" (radiobuttons, maar ook checkboxen en/of dropdownmenu's) dynamisch op te bouwen met behulp van een BLOCK-structuur.

In dat geval ben je namelijk niet tig template-variabelen kwijt, maar heb je aan een of twee template-variabelen binnen een BLOCK voldoende.

Wat ik ook handig vind is om de waarde(n) in zo'n rij altijd voor te stellen als een nummer, en nooit als een tekst. Op deze manier kun je ruimte besparen bij het opslaan van gegevens en kun je de "begeleidende" tekst bij een getal wijzigen zonder dat je dan daarvoor een tekst-waarde hoeft aan te passen.
Offline Nrzonline - 20/07/2006 14:24 (laatste wijziging 20/07/2006 14:25)
Avatar van Nrzonline PHP ver gevorderde Met een beetje prutsen is het nu inderdaad eindelijk gelukt.
En ja, normaal werk ik ook altijd met block-bars. Maar ik zit nu
met allemaal tabellen ertussen, wat het lastig en daarnaast ook nog is
onoverzichtelijk maak als ik voor die twee radio's een BLOCK ga
maken, met zoals ik al zei daartussen een table/col.

Dus ik denk dat ik het verder zo laat. (Voor de rest bij een taal
en template lijst heb ik allemaal blocks-gestructureerde lijsten.

Bedankt voor je hulp! Ik kwam er maar echt niet uit :/
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.318s