Cookie werkt geloof ik, maar displayed een ander value

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Henk Guuwis

Henk Guuwis

06/02/2013 18:03:40
Quote Anchor link
Beste Community,

Ik ben momenteel aan het leren over cookies, en ik heb dit script geschreven

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

  setcookie('count', count($_POST), time() + 3600);
  echo $_COOKIE['count'];
  header("Refresh: 3; url=\"http://www.url.nl/paginauitkomst.html\"");

?>


Dit script treed in werking nadat ik 'submit' klik bij een form met 23 vragen waarmee men op 'ja' en 'nee' kan antwoorden. De bedoeling is dat de cookie het aantal keer geantwoord 'ja' opslaat, wat ook werkt (dat kan k zien aan de echo voordat hij refresht)

Vervolgens op de bewuste pagina (paginaUitkomst) staat deze code:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
if (isset($_COOKIE["count"]))
  echo "jouw punten " . $_COOKIE["count"] . "!<br>";
else
  echo "Vul de test in voor de uitslag<br>";
?>


Het cookies laat nu echter (na wat testen) de totale hoeveelheid antwoorden zien, welke dus 23 is, dus allebei de Ja's en de Nee's. Ik snap niet hoe dit opeens kan, aangezien de echo in het eerste script wel de juiste hoeveelheid laat zien. Daarnaast heeft de cookie als beginwaarde al 1, want het antwoord is dus 24 terwijl er maar 23 vragen zijn. De cookie heeft ook de waarde 1 als ik niks invul en gewoon op submit klik. Weet iemand wat ik fout doe?

Webtry,

P.S. ik heb heel weinig kennis, dus als het mogelijk is niet te moeilijk, ik heb dit overigens gemaakt aan de hand van deze tut: http://www.w3schools.com/php/php_cookies.asp

Toevoeging op 06/02/2013 18:06:33:

Hmm nog een keer getest en ik geloof dat de fout die ik maakt zit in het opslaan van 'ja' want ook geeft de echo van het eerste script nu de totale hoeveelheid antwoorden gegeven en niet alleen de ja (maar hij blijft bij de volgende pagina er nog steeds 1 bij op tellen)
 
PHP hulp

PHP hulp

27/12/2024 18:35:42
 
Obelix Idefix

Obelix Idefix

06/02/2013 18:29:40
Quote Anchor link
Henk Guuwis op 06/02/2013 18:03:40:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  setcookie('count', count($_POST), time() + 3600);
?>

Je telt het aantal $_POST-waarden, zonder rekening te houden met de inhoud (ja/nee) er van.
 
Henk Guuwis

Henk Guuwis

06/02/2013 18:40:08
Quote Anchor link
Ja ik kan ook:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php

  setcookie('count', count($_POST['ja']), time() + 20);
  echo $_COOKIE["count"];
  header("Refresh: 3; url=\"http://www.leiderschap-in-vertrouwen.nl/pagina150.html\"");

?>


doen, maar omdat mijn vragen er op deze manier uit zien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
<input type="radio" id="radio_79" name="Groep1" VALUE="ja">
<
input type="radio" id="radio_80" name="Groep1" VALUE="nee">
<
input type="radio" id="radio_81" name="Groep2" VALUE="ja">
<
input type="radio" id="radio_82" name="Groep2" VALUE="nee">
?>


werkt dit niet geloof ik.
 
Erwin H

Erwin H

06/02/2013 18:49:02
Quote Anchor link
Maar dit $_POST['ja'] werkt uberhaupt niet, omdat je de name van het element als key in je POST array krijgt. Dus je hebt $_POST['Groep1'], $_POST['Groep2'] etc. Je zal dus alle elementen in de $_POST array door moeten en voor ieder element checken of de waarde 'ja' is.
 
Henk Guuwis

Henk Guuwis

06/02/2013 18:50:58
Quote Anchor link
Beetje stomme vraag maar heb je daar dan een voorbeeld van of een tutorial, heb eerlijk gezegd niet echt een idee hoe ik dat erin krijg.
 
Erwin H

Erwin H

06/02/2013 18:53:06
Quote Anchor link
Heel simpel. $_POST is een array, dus die kan je doorlopen met een foreach. Elke element check je of het 'ja' is en tel je op:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$num
= 0;
foreach( $_POST as $value ){
  if ( $value == 'ja' ){
    $num++;
  }
}


echo $num;
?>

(de echo alleen even voor je om te zien wat het antwoord is, kan je verder gebruiken om in je cookie te stoppen)
 
Henk Guuwis

Henk Guuwis

06/02/2013 19:00:38
Quote Anchor link
Erwin, ik dank je zeer! Jij ook obelix voor je tijd.

De uiteindelijke code (voor mesnen die dit later kijken)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php

 $num
= 0;
foreach( $_POST as $value ){
  if ( $value == 'ja' ){
    $num++;
  }
}

  setcookie("count", $num, time() + 20);
  echo $_COOKIE["count"];
  header("Refresh: 0; url=\"http://www.url.nl/paginauitkomst.html\"");

?>


Super bedankt!

Mvg,
Webtry
 
- Mark -

- Mark -

06/02/2013 19:07:43
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php

    $count
= count(array_keys($_POST['antwoorden'], 'ja'));

?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<input type="radio" id="radio_79" name="antwoorden[1]" VALUE="ja">
<input type="radio" id="radio_80" name="antwoorden[1]" VALUE="nee">
<input type="radio" id="radio_81" name="antwoorden[2]" VALUE="ja">
<input type="radio" id="radio_82" name="antwoorden[2]" VALUE="nee">

Je kunt van de radio buttons beter een array maken. Stel je vinkt ja aan als eerste antwoord en nee als tweede antwoord.

$_POST['antwoorden'] wordt dan array(1 => 'ja', 2 => 'nee');
Gewijzigd op 06/02/2013 19:08:23 door - Mark -
 



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.