Afficher un formulaire selon une requette

Fermé
dolux - 28 déc. 2007 à 15:58
 dolux - 31 déc. 2007 à 13:16
Bonjour,

alors je vais essayé d etre explicite ,

je cherche a creer un formulaire du style input ou autre , pour mettre a jour un classement par rapport au resulta d un tournoi ,
ce que je voudrai , c que le formulaire comporte deux colone , PSEUDO et PLACE
le truk c que j aimerai qu il y a un nombre predefini (mais varible) de ligne a remplir ,
c a dire que je recuper le nombre de joueur ayant participer au tournoi, par une page en amon,
le nombre de ligne souhaiter et don egale au nombre de joueur $nbr = $_POST['nbr']

Donc pour resumer , je cherche un codage permettant de creer un formulaire avec un nombre de ligne sellon le resultat de $nbr = $_POST['nbr'] ou sinon je peu aussi aller chercher le nombre dans une table de ma Base de donnée

Merci d'avance pour votre futur aide :)
A voir également:

10 réponses

Bonjour,

Si pour créer ton formulaire, tu fais une boucle $_POST['nbr'] fois, et que tu appelles tes champs pseudo[] et place[] (avec les []), tu récupéreras deux tableaux $_POST['pseudo'] et $_POST['place']
0
kzanadeus Messages postés 70 Date d'inscription lundi 3 décembre 2007 Statut Membre Dernière intervention 4 décembre 2009 3
28 déc. 2007 à 18:01
Pour moi le plus simple est de créer un champ invisible qui contiendra tout d'abord le nombre de participant du genre :
<input type="hidden" name="nbParticipant" value=$nbr>
et apres de faire une boucle for :
for($i=0;$i<$nbr;$i++)
{
$num = "participant"+$i;
Nom : <input type="text" name=$num value="">
$num = "place"+$i;
Place : <input type="text" name=$num value="">
}

<input type="submit" name="envoyer" value="envoyer">

et dans l'autre page, celle qui recevra les données tu fais un truc du genre récuperer le nombre de participant et tu récupère autant de fois les valeurs qu'il y a de participant.

$nbPart = $_POST['nbParticipant"];
for($i=0;$i<$nbPart;$i++)
{
$nom = $_POST["participant"+$i];
$place = $_POST["place"+$i];
mysql_requete("blablablabla");
}

je ne sais plus éxactement comment on concatène une chaine de caractère et un nombre mais tu trouvera mais en tout cas c'est comme cela que je le ferais moi.

Si il y a des choses que tu n'as pas compris dis le moi j'essaierais d'être plus clair.

Cordialement.
0
Bonsoir kzanadeus

La concaténation en PHP c'est le point "participant".$i
Compte-tenu de l'interprétation des variables entre " ", tu n'as même pas de concaténation à faire : "participant$i" marche très bien.
A part cela, dans l'exemple que tu donnes, tu mélanges HTML et PHP, ça ne va pas marcher.
Passer le nombre d'éléments par une variable cachée n'est pas très utile, on peut très bien le retrouver en testant les champs récupérés.
Je ne vois pas du tout l'intérêt de récupérer des noms de variables différents $_POST['participant1'], $_POST['participant2'] plutôt qu'un tableau rassemblant toutes les variables $_POST['participant'].
Enfin, Je pense qu'il vaut mieux donner des indications aux gens pour qu'ils écrivent leur code eux même, quitte à les corriger ensuite, plutôt que de leur servir du tout cuit
0
Merci de l'interet que vous porter a mon problemes :)

donc voilas en gros , j ai essayé de faire avec mes petite connaissance
et bien sur ça march po lollll


<?php
// Déclaration des paramètres de connexion

$nbr = $_POST['nbr'];
$i=1;

print("pr verif le nombre de participant est <strong>$nbr</strong> <br> <br> ");

echo '<table bgcolor="#000000" cellspacing="2" align="center">'."\n";

première ligne j'affiche les titres tu tableau Pseudo et Place
echo '<tr>';
echo '<td bgcolor="#990000"><b><span class="Style1">Pseudo</span></b></td>';
echo '<td bgcolor="#990000"><b><span class="Style1">Place</span></b></td>';
echo '</tr>'."\n";

pour la deuxieme ligne, je me suis dit qu'avec la boucle , tant que $i plus petit que $nbr il rajouterra une ligne
while ($i<$nbr) {
echo '<tr>';
Pour finr , j ai essayé de mettre les input dans chaqune des deux colone
echo '<td bgcolor="#3D2828"><span class="Style1">'<input type="text" name="pseudo" />'</span></td>';
echo '<td bgcolor="#3D2828"><span class="Style1">'<input type="text" name="place" />'</span></td>';

echo '</tr>'."\n";
$i++;
}
echo '</table>'."\n" ;


else echo 'Dans le Culs mumu... le site vas s'auto detruire dans qlq secondes...';


mysql_close();

?>

Ben ben voilas comme je le disais plus haut , ça ne marche pas ...
MAIS COMMENT CA MARCHE ? lol
si vous pouver m'expliquer mes erreur Merci d'avance
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour

S'il te plaît, ça ne sert à rien de dire que ça ne marche pas. On s'en doute, si tu es ici. Il faut dire ce qui ne marche pas : ce que tu espérais, et ce qui se passe en fait.

Comme je le disais plus haut , des [] pour créer des tableaux de variables au lieu de variables simples :
echo '<td bgcolor="#3D2828"><span class="Style1">'<input type="text" name="pseudo[]" />'</span></td>';
echo '<td bgcolor="#3D2828"><span class="Style1">'<input type="text" name="place[]" />'</span></td>';

J'ai supposé que tout ceci était dans un form, on ne voit pas la balise <FORM> ni </FORM> dans ton extrait de script. Il y en a bien, dis ?

pour récupérer les entrées ensuite :

for ($k=0; $k<$_POST['pseudo']; $k++) {

$pseudo=$_POST['pseudo'][$k];
$place =$_POST['place'][$k];
... traitement ...

}
0
re bonjour,

Promis je ne dirai plus ça marche pas lol....
Pour ta supposition, c'est faux !! je n est pas voler ce code dans un forum , mais j ai essayé comme tu me le conseillai ,
de mettre en pratique mes connaissance , de la facon qui me paraissait le plus simple
mes balis form et /form son bien presente en debut et en fin de page , mais elle ne sont pas entre <?php et ?>

ensute , ma requette marche bien quand j efectu cela

if($nbr) {
echo 'Pseudo';
echo '<br>' ;

while ($i<=$nbr) {
echo '<br>';
echo '<input type="text" name="pseudo[]" />';


Donc dejas Merci bcp pr ton aide au niveau des []
Mais par contre , des que j essai de le mettre ds un tableau , ça pose des prob de syntax

echo '<table bgcolor="#000000" cellspacing="2" align="center">'."\n";
echo '<tr>';
echo '<td bgcolor="#990000"><b><span class="Style1">Pseudo</span></b></td>';
echo '</tr>'."\n";

while ($i<=$nbr) {
echo '<tr>';

echo '<td bgcolor="#3D2828"><span class="Style1">'<input type="text" name="pseudo" />'</span></td>';


echo '</tr>'."\n";
$i++;
}
echo '</table>'."\n" ;


a priorie le prob viendrai de la ligne echo '<td bgcolor="#3D2828"><span class="Style1">'<input type="text" name="pseudo" />'</span></td>';
je supose que c est prob de " " ou ' ' a cose de l'input

mise a par ce petit souci , le formulaire s ouvre bien comme je le souhaiterai :)
Merci bcp
0
Bonsoir

je n est pas voler ce code dans un forum
Je ne t'ai accusé de rien de tel !!! J'ai supposé que le code était dans un FORM pas volé dans un forum !!! :-D
Comme tu as un <FORM> avant ( avec METHOD="POST" action="truc.php" je suppose encore) et un </FORM> après, c'est OK

Par contre, ta ligne
echo '<td bgcolor="#3D2828"><span class="Style1">'<input type="text" name="pseudo" />'</span></td>';

contient de apostrophes un peu au hasard.
Le premier caractère après echo est un '. Donc le paramètre de echo s'arrête au ' suivant (sauf si c'est \'). Donc là il s'arrête avant le input.
ce qu'il y a après, ce n'est plus du PHP, il y a une erreur de syntaxe.
Dans tons cas, il suffit de retirer les ' intermédiaires pour ne garder que le premier et le dernier. Mais aussi de remettre [] derrière pseudo, à moins que tu aies une bonne raison de ne pas le mettre.
0
bonjour,

desoler d'avoir mal saisie ton message lol ...
1 000 excuse

donc finalement tout marche super bien

j'ai rajouter un menu deroulan a la place du inpute , voici le codage php :

<?php

$host =***;

$user = **** ;
$bdd = **** ;
$passwd = ****;
$nbr = $_POST['nbr'];
$i=1;
print("pr verif le nombre de part. est <strong>$nbr</strong> <br> <br> ");

$link = mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");

if($nbr) {

echo '<table bgcolor="#000000" cellspacing="2" align="center">'."\n";

echo '<tr>';
echo '<td bgcolor="#990000"><b><span class="Style1">Place</span></b></td>';
echo '<td bgcolor="#990000"><b><span class="Style1">Pseudo</span></b></td>';
echo '</tr>'."\n";

while ($i<=$nbr) {
echo '<tr>';
echo '<td bgcolor="#3D2828"><span class="Style1"><center>'.$i.'</center></span></td>';

$select = 'SELECT pseudo FROM utilisateur';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);

if($total) {
echo '<td bgcolor="#3D2828">';
echo '<select name="pseudo[]" size="1">';
echo '<option selected value="0"> - nom du joueur -</option>';
while($row = mysql_fetch_array($result)){
echo '<option value='.$row["pseudo"].'>'.$row["pseudo"].'</option>';
}
echo '</select>';
echo '</td>';

}
mysql_free_result($result);
echo '</tr>'."\n";
$i++;
}
echo '</table>'."\n" ;
echo '<br>';
echo '<input name="Envoyer" type="submit" value="Valider la modification" />';
}
else echo 'Pas d\'enregistrements dans cette table...';


mysql_close();

?>


Tout fonctione vraiment merveille , franchement merci bcp

par contre pr la recup j'effectu :

<?

for ($k=1; $k<=$_POST['pseudo']; $k++) {

$pseudo=$_POST['pseudo'][$k];
$place =$_POST['place'][$k];
print("$k <strong>$pseudo
</strong> <br> <br> ");

}




?>


le resultat des menu deroulan (donc nom des joueur) et recuprer et s'affiche ,
mais la boucle continu et ne s arrette jamais ...
0
Bonjour

for ($k=1; $k<=$_POST['pseudo']; $k++) {

Comment peux-tu comparer $k et $_POST['pseudo'] ? $k est un nombre, $_POST['pseudo'] est un tableau
il aurait fallu faire :
for ($k=1; $k<=count($_POST['pseudo']); $k++) {

Oui je sais, c'est moi qui avais écrit une bêtise, ça prouve qu'il ne faut pas croire aveuglément...
0
bonjour,

Super , tout fonctione trés bien , je t'avou que ça ma sembler bizard aussi :)

merci pour tout vraiment , mais je vais revenir trés vite avec un nouveau prob. :D
au plaisir ;)
0