OVH Cloud OVH Cloud

[debutant] formulaire en boucle

3 réponses
Avatar
Laurent
Je suis en train de faire un petit exercice en php mais comme je
débute, j'ai du mal, surtout avec la syntaxe

Le but est de faire faire un tableau avec le nom de plusieurs joueurs.
On ne sait pas combien à l'avance.on ne doit pas demander le nbr de
joueurs.

le programme doit demander le nom du joueur 1, 2, 3.... et lorsque que
la saisie est finie, il affiche un tableau de 2 lignes avec le nom des
joueurs sur la première ligne et la seconde vide...

j'ai pensé que pour dire que la saisie est finie (dernier joueur) on
pouvait cocher une case... est ce une bonne idée? peut on faire
autrement?

j'ai une erreur à la ligne 35 et je ne sais pas pourquoi... sur le }
ai je le droit de couper ma boucle while pour le passage au HTML?

pouvez vous m'aider ????

Merci beaucoup !



<HTML>
<body>
<BODY BGCOLOR="#000088" TEXT="#FFFF00">
<BR>
<B> Formulaires, variables tableaux et boucle
<BR><BR><BR>

<?
$compteur=1 ; // initialisation du compteur de joueurs //
$fin=0 ; // variable fin vaut 0 si on a pas coché la case et 1 si on
l'a cochée //

while ($fin=0)
{
Echo "Entrez le prénom du joueur N° $compteur ";
?>
<FORM ACTION="tableau.php" METHOD="post">
<INPUT TYPE="text" name="prenom">
<DIV align=center> <INPUT TYPE="submit" VALUE="valider">
</DIV>

<?
$joueur[compteur]=$_POST['prenom'];
echo "<BR><BR><BR>";
echo "pour terminer la saisie des joueurs cochez la case avant
de valider " ;
?>

<INPUT TYPE="checkbox" name="fin">
</FORM>
<?
if (isset($POST['fin']))
{
$fin=1;
}
$compteur++ //incrémentation du compteur //;

}
?>
</body>
</HTML>
--
me répondre via l'adresse email protégée:
http://cerbermail.com/?4s2gdXzrwp

3 réponses

Avatar
Olivier Miakinen

le programme doit demander le nom du joueur 1, 2, 3.... et lorsque que
la saisie est finie, il affiche un tableau de 2 lignes avec le nom des
joueurs sur la première ligne et la seconde vide...

j'ai pensé que pour dire que la saisie est finie (dernier joueur) on
pouvait cocher une case... est ce une bonne idée? peut on faire
autrement?


Voir <http://faqfclphp.free.fr/#rub2.3> pour comprendre que PHP dans une
page HTML ne peut pas gérer des interactions (questions/réponses) au
sein d'un même script (plus exactement : au sein d'une même invocation
d'un script). Donc, soit tu fais un aller-retour HTTP à chaque question,
avec *un* formulaire à chaque fois, récupération des données, génération
de la page, champs hidden, etc., soit tu abandonnes PHP pour faire du
JavaScript.

Ainsi :

------------------------------------------------
$fin=0 ; // variable fin vaut 0 si on a pas coché la case et 1 si on
l'a cochée //

while ($fin=0)
{
Echo "Entrez le prénom du joueur N° $compteur ";
?>
<FORM ACTION="tableau.php" METHOD="post">
<INPUT TYPE="text" name="prenom">
<DIV alignÎnter> <INPUT TYPE="submit" VALUE="valider">
</DIV>
-----------------------------------------------


Ceci n'a *aucune* chance de fonctionner.



j'ai une erreur à la ligne 35 et je ne sais pas pourquoi... sur le }
[...]

$compteur++ //incrémentation du compteur //;
}


L'erreur est à la ligne précédente, puisqu'il manque un point-virgule.

Voir <http://www.php.net/manual/fr/language.basic-syntax.comments.php>,
la différence entre les commentaires comme ceci :
/* ceci est un commentaire */
et comme cela :
// commentaire jusqu'à la fin de la ligne



Je te conseille de bien lire la doc, peut-être un bouquin qui te prend
par la main pour réaliser une petite application simple, avant d'essayer
de faire des interactions multiples avec questions/réponses. Ou bien,
encore une fois, de passer plutôt à JavaScript.

Avatar
Le Fou
Je suis en train de faire un petit exercice en php mais comme je
débute, j'ai du mal, surtout avec la syntaxe
(...)
$compteur++ //incrémentation du compteur //;


Pas de rapport avec le problème invoqué mais... dans cette dernière ligne,
$compteur++; //incrémentation du compteur
ou
$compteur++ /*incrémentation du compteur */;
car dans ton cas, le point virgule fait partie du commentaire (// commentaire sur une ligne).

--
A'tchao

Le Fou
http://gloupclub.free.fr/
http://www.ffessm-cd84.com/
http://ehiller.club.fr/

Avatar
Michel Billaud
"Le Fou" writes:

Je suis en train de faire un petit exercice en php mais comme je
débute, j'ai du mal, surtout avec la syntaxe
(...)
$compteur++ //incrémentation du compteur //;


Pas de rapport avec le problème invoqué mais... dans cette dernière ligne,
$compteur++; //incrémentation du compteur
ou
$compteur++ /*incrémentation du compteur */;
car dans ton cas, le point virgule fait partie du commentaire (// > commentaire sur une ligne).


D'une part, on écrit plutot
$compteur++;

en s'abstenant strictement d'y mettre un commentaire de ce niveau qui
n'apporte aucune information, à moins de supposer que votre lecteur
est un incompétent total à qui vous devez enseigner ce qu'est $x++.

L'inconvénient de ce genre de commentaire, pour un lecteur normal,
c'est qu'il va le lire, et se demander pourquoi vous avez eu besoin
d'ajouter cette précision. Par exemple, est-ce que dans une autre
partie du code, ce compteur est susceptible de se décrémenter, ou de
varier de +3 ? Donc une perte de temps pour lire un commentaire totalement
unitile qui apporte zero information.

D'autre part, le plus sain, c'est d'écrire
$nb_moutons++;
au moins on sait ce que vous comptez.

MB
--
Michel BILLAUD
LABRI-Université Bordeaux I tel 05 4000 6922 / 05 5684 5792
351, cours de la Libération http://www.labri.fr/~billaud
33405 Talence (FRANCE)