IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Récupération et utilisation variable


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 42
    Par défaut Récupération et utilisation variable
    Bonjour à vous,

    Dans le cadre d'un jeu de rôle, je souhaite créer un formulaire afin que les joueurs puissent créer leur personnage. Le formulaire effectue le calcul des différentes caractéristiques. Dans un premier temps, je souhaite que les données du formulaire ne soient pas enregistrées dans une base de donnée. Le fait de gérer des données sans base de donnée me pose problème, je n'ai pas l'habitude. A chaque validation du formulaire, je souhaite pouvoir conserver des données sous la forme de variables que je puisse réutiliser. Je vous livre ici qu'une partie du formulaire. En effet, une grande partie des données sont gérées et ne posent pas de soucis. Le problème se pose pour la gestion des "Aspects". A chaque validation du formulaire, le joueur peut ajouter un nouvel "Aspect". Chaque "Aspect" ainsi ajouté, peut, ensuite, être modifié, sa valeur augmentée ou diminuée. Toutefois, je n'arrive pas à conserver ces valeurs.

    Le formulaire est très classique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form action="creation.php" method="post">
    <h2>Les Aspects</h2>
    <p><label>Nom de l'Aspect</label><input type="text" name="aspect"/></p>
    <p><input type="submit" name="valider"/></p>
    </form>
    Ensuite, la récupération des données, qui se fait au début du programme et c'est là que se pose le problème. En effet, je fais intervenir la variable "$chiffre" pour tenter de comptabiliser le nombre d'aspects. En effet, l'objectif est que l'utilisateur puisse à chaque fois valider de nouveaux aspects mais je pense que je ne m'y prends pas de la bonne façon...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    if (isset ($_POST['valider']))
    	{
    if (($chiffre == NULL) AND (($_POST['aspect'])==TRUE))
    			{
    				$chiffre = 0;
    				$aspect[$chiffre]=$_POST['aspect'];
    				echo "<p>le premier aspect est $aspect[$chiffre]</p>";
    			}
    		elseif (isset($_POST['aspect']) AND ($chiffre == TRUE))
    			{
    				$chiffre++;
    				$aspect[$chiffre]=$_POST['aspect'];
    				echo "<p>le second aspect est $aspect[$chiffre] et le chiffre est $chiffre</p>";
    			}
    		if ($chiffre == TRUE)
    			{
    				$compteur = 0;
    				while ($compteur < $chiffre)
    					{
    						$aspect[$compteur]=$_POST["aspect$compteur"];
    						echo "<p>l'aspect est le suivant : $aspect[$compteur]</p>";
    						$compteur++;
    					}
    			}
    	}
    A la suite de ce code, j'ai modifié le premier formulaire pour essayer de faire apparaître les "Aspects" validés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?PHP
    $compteur = 0;
    while ($compteur < $chiffre)
    	{
    		echo "<tr><th>Nom</th></tr>";
    		echo "<tr><td>$aspect[$compteur]</td></tr>";
    		echo "<input type=\"hidden\" name=\"aspect$compteur\" value=\"$aspect[$compteur]\" />";
    		$compteur++;
    	}
    echo "</table></p>";
    echo "<p>";
    echo "<label>Nom</label><input type=\"text\" name=\"aspect\"/>";
    ?>
    Je pense que mon code serait à reprendre entièrement mais je n'arrive pas à trouver une méthode et je reste bloqué...

    Ma question est donc la suivante : comment faire pour récupérer plusieurs variables à partir d'un seul champ de formulaire et les conserver après chaque validation ?

    Merci pour vos réponses et n'hésitez pas à me dire si je ne suis pas clair

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour être honnête ton code est affreux.
    En particulier tu n'est pas précis sur le type des tes variables.
    Par exemple, $chiffre doit visiblement être un entier mais tu fais d'un test pour savoir s'il est NULL et ensuite un test pour savoir s'il vaut TRUE.
    Même si techniquement cela peut donner un résultat parce que PHP se débrouille quand même, il est difficile de comprendre ou ton code va.

    Un exemple de ce que pourrait être ton fichier creation.php en utilisant des sessions et des tableaux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    session_start(); // on démarre une session PHP
    if (!empty($_POST['aspect']) { // si la donnée existe et n'est pas vide
         $_SESSION['aspect'][] = $_POST['aspect']; // on la place dans un tableau PHP en session
    }
     
    foreach($_SESSION['aspect'] as $value) { // on parcours le tableau
       echo '<p>' . $value . '</p>'; // et on affiche chaque élément
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 42
    Par défaut
    Je te remercie pour tes commentaires et en effet, je pense que mes codes ne sont pas excellents voire pas terribles. En fait, mes connaissances du PHP me viennent des quelques heures de lecture sur le net et je n'arrive pas à prendre le temps de m'y mettre à fonds. Du coup, je bricole des codes qui, tant bien mal, fonctionnent. J'imagine, en effet, qu'un pro puisse se piquer les yeux en voyant mes codes. Bref, je vais tester dans les prochains jours ton code et je vais voir ce que cela donne. Et par la même occasion, je vais approfondir les éléments que tu viens de me communiquer en particulier la variable $_SESSION que je n'ai jamais utilisé.

    Merci bien

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Pour faire court, une session PHP permet de stocker des données jusqu'à ce que l'utilisateur ferme son navigateur ou passé un certain délai d'inactivité.
    Il faut démarrer la session avec la fonction session_start(); et ensuite on manipule la variable tableau $_SESSION comme une variable ordinaire.

    Pour les problèmes de ton code, si tu veux tester qu'une variable est définie fait if(isset($variable)), si tu veux vérifier qu'elle n'est pas définie, fait if(!isset($variable)).
    Ne fais des tests TRUE/FALSE que lorsque tu attends un vrai booléen TRUE/FALSE en retour.
    Par exemple pour vérifier que $chiffre ne vaut pas zéro fait simplement $chiffre != 0 ou $chiffre > 0
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 42
    Par défaut
    c'est bon, ça marche. A présent, je vais essayer d'aller un peu plus loin dans le code. Je vais ajouter une valeur comprise entre un et cinq à chaque aspect et permettre également que l'on puisse supprimer l'aspect ou modifier la valeur de l'aspect. Je vais, du coup, sans doute avoir besoin d'éclairages supplémentaires.

    Merci Sabotage

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Décembre 2004
    Messages
    42
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Décembre 2004
    Messages : 42
    Par défaut
    Si j'ajoute une variable c'est-à-dire associer l'aspect à une valeur, valeur comprise entre un et cinq :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <label>Ajouter un aspect</label><br/><input type="text" name="aspect"/><input type="text" name="chiffre"/>
    On peut, par la suite, faire cela ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (!empty($_POST['aspect']))
    			{
    				$_SESSION['aspect'][] = $_POST['aspect'];
    				$_SESSION['chiffre'][] = $_POST['chiffre'];
    			}
    Et pour parcourir les différentes variables du tableau ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    foreach($_SESSION['aspect'] as $value)AND ($_SESSION['chiffre] as $chiffre)
    	{
    		echo '<tr><td>' . $value . '</td><td>' . $chiffre . '</td><td></td></tr>'; // et on affiche chaque élément
    	}
    Si je veux supprimer une valeur, à priori, il faut que j'utilise : unset($_SESSION['aspect'] mais comment lui dire qu'il s'agit de tel élément du tableau ? La réponse à cette question devrait me permettre de répondre à la question suivante : comment modifier la valeur de l'aspect (en gros modifier la variable $chiffre) ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/12/2012, 08h18
  2. [C#] Récupération d'une variable d'environnement
    Par jamy79 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 17/08/2005, 14h03
  3. Réponses: 16
    Dernier message: 07/04/2005, 11h36
  4. Récupération d'une variable
    Par cach dans le forum Windows
    Réponses: 7
    Dernier message: 22/02/2005, 11h19
  5. Debutant recherche utilisation variable système
    Par agent-zaizai dans le forum C++Builder
    Réponses: 5
    Dernier message: 15/05/2003, 21h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo