voici mon code qui permet d'afficher le résultat
de 2 formulaire précédents mais le probleme c'est que les variables ne
s'incrémentent pas elle reste bloquer à 1
<?php
$a=0;
$b=0;
$d=0;
?>
<?php
switch($_POST['test21'])
{
case'coiffeur':
$a++;
break;
case'pharmacien':
$b++;
break;
case'medecin':
$b++;
break;
case'vous':
$d++;
break;
}
?>
<?php
switch($_POST['test22'])
{
case'classique':
$a++;
break;
case'original':
$b++;
break;
case'toriginal':
$d++;
break;
}
?>
<?
echo "$a";
?>
merci de votre aide j'ai chercher toute la journée en vain
A voir également:
Probleme incrémentation compteur résultat formulaire
Hehe, ouais en fait c'est logique: php met lui même les variables à zéro.
Essaie avec les sessions pour a,b et d par exemple, ca marchera, sûr!
Le truc, c'est que chaque fois que le script est appelé, les variables
sont remises à zéro! Donc soit tu passes par les sessions, soit les
cookies, soit encore tu les passes par $_GET ou $_POST.... quoi qu'il
en soit, faut les passer ou les stocker!
vérifie avec isset() que tes formulaires sont bien transmis, et pour
que ça marche il faut stocker une valeur initiale pour ton compteur...
donc le coup de la session ça va pour un seul visiteur, mais ça sera
remis à zéro après... Et n'utilise pas de variables non définies, il
faut les définir avant, PHP ne met pas 0 par défaut...
Antho: "PHP ne met pas 0 par défaut", alors question: pourquoi si je ne definis pas une variable et qu'en suite si je fais ++, elle vaut 1? A mon avis c'est que comme php voit une operation sur un nombre, il decide que la variable non definie en est un et le met a zero... mais j'ai aucune preuve de ce que j'avance
"alors question: pourquoi si je ne definis pas une variable et qu'en suite si je fais ++, elle vaut 1"
Tout à fait, mais si tu mets l'error_reporting à E_ALL, tu auras une
erreur, ta variable ne vaudra pas 1. Ce que je veux dire par là c'est
que la variable est mise à 0 avec une certaine configuration de PHP qui
n'est pas la bonne malheureusement.
Il faut définir la variable avant pour ne pas avoir d'erreurs.