JeuWeb - Crée ton jeu par navigateur
pb d'envoi de variable - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : pb d'envoi de variable (/showthread.php?tid=476)



pb d'envoi de variable - hercull - 04-06-2013

Bonjour je rencontre un problème lorsque je veux envoyer des variables d'une page à l'autre.
Je m'explique j'ai 2 input type text, que l'utilisateur doit remplir, il entre n'importe quel chiffre et envoi en post, seulement je souhaiterai lors de l'envoi créer une variable de session et qu'au moment de l'envoi des variable en post ma variable de session se créer.
Code PHP :
<?php 
$nombre_unites_choisi
= 0;

if(
$_POST['soldat'] == 0)
{
$nombre_soldat_choisi = 0;
}else
{
$nombre_soldat_choisi = 1;
}

if(
$_POST['archer'] == 0)
{
$nombre_archer_choisi = 0;
}else
{
$nombre_archer_choisi = 1;
}

if(
$j == 0)
{
$_POST['soldat'] = $soldat1;
$_POST['archer'] = $archer1;
$nombre_type_unites = $nombre_soldat_choisi+$nombre_archer_choisi;
$_SESSION['nombre_type_unites'] = $nombre_type_unites;
}
Est ce possible?
Si oui comment?


RE: pb d'envoi de variable - Xenos - 04-06-2013

Code PHP :
<?php 
$soldat
= (((int)($_POST['soldat'])) != 0);
$archer = (((int)($_POST['archer'])) != 0);

if ((
$total = $soldat + $archer))
$_SESSION['nombre_type_unites'] = $total;

$soldat contiendra 1 si on a $_POST['soldat'] non nul, et $archer contiendra 1 si on a $_POST['archer'] non nul.
$_POST['soldat'] contient une chaine de caractères qui est issue du formulaire HTML.
(int)* se charge de transformer ce qui suit en un entier
(int)($_POST['soldat']) est donc la valeur du formulaire, convertie en un entier (en cas de valeur incorrecte, cette conversion renvoie 0).
* != 0 renvoie "true" si * est non nul, et renvoie false si * est nul.
Donc, (((int)($_POST['soldat'])) != 0) renvoie true si on a choisit un soldat.
Idem pour la ligne suivante.

$total = $soldat + $archer assigne la valeur de $soldat + $archer à la variable $total. L'opération "+" génère une conversion implcite: les "true" deviennent un entier "1" et les falses deviennent un entier "0", donc, on est dans le cas 1+1 ou 1+0 ou 0+1 ou 0+0. DOnc $total contiendra 2 si on a choisit archer et soldat, 1 si on a choisit un des deux (on sait pas lequel), 0 si on n'a rien choisit.
Lors d'un assignement "=", la valeur de l'assignement est retournée. Donc, ($total = $soldat + $archer) assigne la valeur à $total, comme indiquée plus haut (2, 1 ou 0), et le parenthèse renvoie cette même valeur. Le test "if" est donc "false" si et seulement si $total est nul
$_SESSION['nombre_type_unites'] = $total; assigne la valeur de $total à la variable de session.


Note que ta variable de session ne se créera pas "lors de l'envoie du POST", mais lorsque le serveur reçoit ce POST et le traite.


RE: pb d'envoi de variable - niahoo - 04-06-2013

et bien sur ne pas oublier de démarrer la session.


RE: pb d'envoi de variable - hercull - 04-06-2013

Merci mais toujours un problème de récupération de variable de session qui est undefined dans ma page 2:

Code PHP :
<?php 
if ($_POST){
if (empty(
$_POST['soldat']))
{
echo
'Veuillez remplir un nombre de Soldat</br>';
$j++;

}
if (empty(
$_POST['archer']))
{
echo
'Veuillez remplir un nombre d\'Archer</br>';
$j++;
}
if(
$j > 0)
{
}
else
{
$soldat = (((int)($_POST['soldat'])) != 0);
$archer = (((int)($_POST['archer'])) != 0);

if ((
$total = $soldat + $archer))
$_SESSION['nombre_type_unites'] = $total;
}
}

et dans ma page 2 :

echo $nombre_type_unites = $_SESSION['nombre_type_unites'];

mais quand j'arrive sur ma page 2 j'ai :

Undefined index: nombre_type_unites...

Peut on m’éclairer?
Merci.


RE: pb d'envoi de variable - Xenos - 04-06-2013

déjà, "j++", sans "$" ça ne passera pas. A mon avis, tu gagnerai à reprendre un peu les tutos du site du zéro, ou autres sites similaires, sur php.
Ensuite, utilise la balise [ php] et[ /php], car là, c'est pesant à lire, sans la coloration syntaxique!
Après, va voir la structure des exceptions dans php, car là, "j++", l'utilisation que t'en fait est très moche...

Pour le reste, quand tu récupère ton formulaire, insère un "var_dump($_POST)" dans ton corps de page: tu pourras alors vérifier que $_POST est bien défini (peut-être que ton formulaire est foireux ou que les index dans $_POST sont erronés?)


RE: pb d'envoi de variable - hercull - 04-06-2013

Oui j'ai modifier les $j++, j'ai vérifier je récupère parfaitement les variable en POST, c'est uniquement le variable de session qui est undefined dans ma page 2.
Il semblerai que, ce sont les conditions if POST, et if empty($_POST['archer']), qui sont la cause, car apparemment elle posent problème pour la création de la variable de session, comme si l'étape de création de la variable de session ne s’exécuter pas. Et quand on arrive sur la page 2 la variable de session n'existe pas.


RE: pb d'envoi de variable - Xenos - 04-06-2013




RE: pb d'envoi de variable - niahoo - 04-06-2013

J'l'avais dit !


RE: pb d'envoi de variable - Xenos - 04-06-2013

N'ayant pas le code complet, car la balise <?php était absente, on pouvait présumer que la session était déjà démarrée :p
C'est un peu le problème des "extraits de code" sur les forums: y'en manque toujours un bout crucial... Mais c'est vrai, le session_start(), tu l'avais dit Wink


RE: pb d'envoi de variable - niahoo - 05-06-2013

ça m'arrive tout le temps ! à force de bosser avec des frameworks, dès que je retouche un site codé "en dur" je galère systématiquement avec cette session Smile