1

Bonjour,
Sur ma page html je possède 5 boutons radio , nommé choix , dont la valeur est de 1 - 2- 3- 4 -5
voici mon php :
<?php
unset($_SESSION['choix']);
if(isset($_POST['choix']))
{
if($_POST['choix'] == "1") $_SESSION['choix'] = "vous avez choisi 1";
else if($_POST['choix'] == "2") $_SESSION['choix'] = "vous avez choisi 2";
else if($_POST['choix'] == "3") $_SESSION['choix'] = "vous avez choisi 3" ;
else if($_POST['choix'] == "4") $_SESSION['choix'] = "vous avez choisi 4";
else if($_POST['choix'] == "5") $_SESSION['choix'] = "vous avez choisi 5";
else $choix = "Choix non référencé";
}
echo $_SESSION['choix'];
?>
cela ne marche pas , quelqu'un peut t'il me le corriger svp ?
Très grand médiocre.

2

ps : sur comment sa marche ils ne sont pas fichu de me donner une réponse correcte après 7 jours d'attente ... mur
Très grand médiocre.

3

Si tu leur as demandé aussi poliment qu'ici, faut pas trop s'étonner.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

Désolé de paraître irrité mais j'ai vraiment toute les raisons de l’être , j’enchaîne les déceptions je suis vraiment démotivé , si je vous manque de respect je m'en excuse , et je vous remercie de me le faire remarquer...

Je suis juste a bout de nerf d’être bloqué sur un problème bénin comme celui ci...
Très grand médiocre.

5

On peut avoir le code en entier ?
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

Il ne manque pas juste un session_start() ?!
avatar

7

le session start est plus haut je vous ai épargné le reste du code pour vous donner l’essentiel , je vous passe le reste du code

<?php session_start(); ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr">
<head>
<title>Configurateur Individuel : choix des platines</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<script type="text/javascript" src="jquery.js"></script>
</head>
<body>
<h1>Configurateur de Poste Interieur</h1>


<?php

unset($_SESSION['choix']);

if(isset($_POST['choix']))
{
if($_POST['choix'] == "1") $_SESSION['choix'] = "vous avez choisi 1";
else if($_POST['choix'] == "2") $_SESSION['choix'] = "vous avez choisi 2";
else if($_POST['choix'] == "3") $_SESSION['choix'] = "vous avez choisi 3" ;
else if($_POST['choix'] == "4") $_SESSION['choix'] = "vous avez choisi 4";
else if($_POST['choix'] == "5") $_SESSION['choix'] = "vous avez choisi 5";
else $choix = "Choix non référencé";

}
echo $_SESSION['choix'];
?>
Salut Tu es à l'accueil de mon site (index.php). Tu veux aller sur une autre page ?


je vous joins aussi les fichiers pour plus de lisibilité...

tromb Fichier joint : A1.PHPtromb Fichier joint : valider 4.php
Très grand médiocre.

8

Bon, déjà, dans ton A1.PHP, tu as ['choi'] au lieu de ['choix']. Mais je continue à regarder.

edit: ok j'ai compris, tu cherchais juste à tester avec un index de tableau de nom différent.
avatar

9

ah zut c'etait une modification précédente pour voir si il était utile de différencier les mots clef de POST et de SESSION
Très grand médiocre.

10

Ok, trouvé... c'est pas <form method="submit" action="valider4.php"> mais <form method="post" action="valider4.php"> qu'il faut mettre...

Petits rappels : http://www.w3schools.com/tags/att_form_method.asp
avatar

11

Franchement merci en tout cas cela me fais vraiment plaisir d'avoir votre soutien ...
Très grand médiocre.

12

Malheureusement malgré ton aide j’obtiens encore et toujours le même message d'erreur rsultat.png
Très grand médiocre.

13

(as-tu bien rajouté les X dans tous les _SESSION[] ?)

14

et aussi, je trouve ton else étrange :
else $choix = "Choix non référencé";
tu voulais pas plutôt écrire
else $_SESSION['choix'] = "Choix non référencé";?




Parce que si jamais tu passes dans ton else, c'est normal que
echo $_SESSION['choix']; ne fonctionne pas cheeky




PS : je n'ai plus fait de php depuis quelques temps, donc je ne garantis rien cheeky

15

Pen^2 (./13) :
(as-tu bien rajouté les X dans tous les _SESSION[] ?)


Si par X , tu entend mot clef , oui c'est fait
Très grand médiocre.

16

[cite] Pen^2 (./14) :
et aussi, je trouve ton else étrange :
else $choix = "Choix non référencé";
tu voulais pas plutôt écrire
else $_SESSION['choix'] = "Choix non référencé";?




Parce que si jamais tu passes dans ton else, c'est normal que
echo $_SESSION['choix']; ne fonctionne pas cheeky


Arf en effet , j'ai tellement re-modifié vainement le code que c'était forcé d'arriver ces petite erreurs ...
Très grand médiocre.

17

J'ai malheureusement encore et toujours la même erreur ... une autre solution ? sad

ps : désolé des triples post , j'essayerais que cela ne se renouvellera plus.
Très grand médiocre.

18

Ton erreur est une "notice", c'est le niveau le plus bas d'"erreur", c'est uniquement message à caractère informatif. En général, on les vire même en phase de développement (sauf à vouloir faire du code TRES propre, ce qui n'est pas franchement la raison pour laquelle on fait du PHP grin). Là, pour éviter la notification, je pense qu'il faut un
if (isset($_SESSION["choix"]))
{
unset($_SESSION['choix']);
}

Sinon, tu peux aussi désactiver les "notices", ça se fait dans le fichier php.ini (je ne sais plus où c'est dans wampp, par contre, mais ça se trouve smile), tu ne vas pas en mourir, surtout à ton niveau (si je puis me permettre).
avatar

19

À condition de changer le "submit" en "post" ça fonctionne très bien, il doit y avoir un truc qui pose problème au niveau de la configuration de PHP. L'appel à "session_start" retourne bien true ? (ça n'est pas testé dans le code)

[edit 1] cross, mais je ne pense pas que la réponse de Nil soit bonne, l'erreur est à la ligne 28

[edit 2] ...même si elle est totalement justifiée bien sûr grin (ceci dit j'aurais tendance à activer *toutes* les erreurs en mode développement et à les virer en prod, justement, puisqu'il s'agit de choses qu'on veut éviter de provoquer mais qui n'ont a priori pas d'incidence sur l'exécution du code ; virer les notices en dev c'est le meilleur moyen de s'assurer que le code en soit blindé une fois mis en production)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

20

De façon générale, avant de réaliser toute opération sur un tableau ou une clé de tableau, on fait un if (is_array($mon_tableau)) { action; }
ou un
if (isset($montableau['$monindex']) { action; }

On peut même imbriquer les deux, pour faire encore plus propre (on vérifie que la variable soit un tableau avant de voir si l'index existe, ce qui est logique).

avatar

21

A vrai dire je n'ai pas compris grand chose , je dois mettre quoi dans mon code concrètement ?
Très grand médiocre.

22

Remplacer "session_start();" par "session_start() or die("PHP mal configuré");", et regarder si ça continue à s'exécuter ou si le message d'erreur s'affiche.

[edit] bon, je pense que j'ai compris : tes fichiers sont en UTF-8 et tu utilises un éditeur de code moisi qui ajoute un BOM en en-tête de tes fichiers, du coup ça provoque un affichage de contenu et session_start() ne peut plus fonctionner. Si tu ne comprends pas, va lire l'article de Wikipedia sur le BOM, puis essaie de configurer ton éditeur de code pour qu'il ne l'ajoute pas, et sauvegarde ton fichier à nouveau.

Vérifier que l'appel à session_start() s'est bien déroulé reste indispensable. Dans le cas présent, ça t'aurait permis tout de suite de voir où était l'erreur.

Accessoirement, il faudra penser à pendre tous les mecs qui s'évertuent à écrire des éditeurs de code qui ajoutent des BOM en UTF-8 par défaut et qui continuent à penser que c'est une bonne idée, ou même que ça présente le moindre intérêt...

Ceci dit, pendre les auteurs de PHP pour ne pas avoir géré ce cas de figure peut être également une bonne alternative.
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

23

Zeph (./22) :
Ceci dit, pendre les auteurs de PHP

Pas besoin d'autre raison embarrassed
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

24

(Au passage pour la balise "form" la valeur "submit" pour "method" est invalide, c'est soit "get" soit "post" mais pas autre chose cf ici et dans ton cas il faut regler le probleme de BOM, et bien mettre post, sinon il faut remplacer tes $_POST par des $_GET)

(edit: wow les "auteurs" de php on ajouté un backtrace en cas de plantage ? eek)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

25

Déjà expliqué par Nil au post ./10 le coup du post/submit smile

./23 : oui mais si je ne me justifie pas, on serait capable de me contredire embarrassed
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

26

piloucyril (./12) :
Malheureusement malgré ton aide j’obtiens encore et toujours le même message d'erreur rsultat.png


Si aucun choix n'est fait dans A1, $_POST['choix'] est "vide".
Dans valider4, tu ne gères pas le cas où $_POST['choix'] n'est pas "défini" d'où le warning sur l'affichage de la variable $_SESSION['choi']; qui n'est alors pas défini également.

unset($_SESSION['choi']);

if(isset($_POST['choix']))
{
if($_POST['choix'] == "1") $_SESSION['choi'] = "KABLAH";
else if($_POST['choix'] == "2") $_SESSION['choi'] = "KABLIH";
else if($_POST['choix'] == "3") $_SESSION['choi'] = "KABLOH" ;
else if($_POST['choix'] == "4") $_SESSION['choi'] = "KABLUH";
else if($_POST['choix'] == "5") $_SESSION['choi'] = "KABLEIH";
else $_SESSION['choi'] = "Choix non référencé";

} else $_SESSION['choi'] = "Aucun choix effectué";



Instruction Switch:
http://php.net/manual/fr/control-structures.switch.php






Novice en php tongue

27

Vous lisez les posts, ou bien vous passez directement du premier au formulaire tout en bas de la page ? (hint : ./14, ./16, ./18, ./19)
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

28

J'avais lu le poste de nil, mais j'aportait une précision sur le "submit" qui de toute maniere est invalide. (et je n'avais pas vu qu'il avais mis le lien) et j'ai ajouté un truc que nil ni toi n'ont dit embarrassed ($_GET vs $_POST)
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

29

Moi, j'ajoute $_REQUEST ! embarrassed
avatar

30

Nil (./18) :
Ton erreur est une "notice", c'est le niveau le plus bas d'"erreur", c'est uniquement message à caractère informatif. En général, on les vire même en phase de développement (sauf à vouloir faire du code TRES propre, ce qui n'est pas franchement la raison pour laquelle on fait du PHP biggrin.gif )

ergh #dead#
oué, en fait non ^^ ça fait des années que les notices sont activées sur mon poste de dev, et sur tous les postes de dev de gens qui ont bossé avec moi (et encore plus pour les postes de dev où c'est moi qui était responsable de la conf ^^ )
une notice, même si c'est soit disant "juste une info", ça apporte quand même une info intéressante, hein... une variable utilisée en lecture alors qu'elle n'a pas été écrite avant, c'est soit une erreur bête (mauvais index dans un tableau, faute de frappe -- et tu es content d'avoir une notice pour t'aider à le remarquer), soit une vraie erreur de logique dans ton code.

Enfin, en fait, même avis que Bob, plus ou moins :
- en dev, toutes les erreurs sont activées et affichées
- en prod, toutes les erreurs sont activées ; non affichées ; et loguées en fichier

D'ailleurs, pas sûr que notice soit le niveau "le plus bas" d'erreur : si tu prends PHP 5.3, E_STRICT n'est pas inclu à E_ALL, alors que E_NOTICE l'est (ça a changé avec PHP 5.4) ; j'aurais donc tendance à dire que "strict" est un niveau d'erreur "plus faible" que "notice"
Godzil (./24) :
(edit: wow les "auteurs" de php on ajouté un backtrace en cas de plantage ? eek.gif )

non ; c'est l'extension xdebug qui amène, entre autres :
- stacktraces en cas d'erreur / exception,
- var_dump amélioré
- debuggage \o/ (avec un vrai debugger dans l'IDE et breakpoints et tout, bien sûr)
- profiling
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall