formulaire dans un while

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : formulaire dans un while

par Invité » 26 juin 2006, 19:11

En fait le $var2['nb'] ca fait un SELECT COUNT sur ma table en fonction de l'utilisateur, ca verrifie en fait simplement le nombre de mix qu'il met en telechargement.

Apres je fait une boucle while pour afficher tout les mix et faire ensuite en sorte qu'un boutton 'edit' sous forme d'image s'affiche au dessus du mix et quand on clique dessus ca envoie sur un formulaire avec le nom du mix.

Apres les formulaire et tout ca c'est ce qui m'as été suggerer donc en fait c'est la methode que je suivais.

Peut être avez vous une autre idée ?

par sadeq » 26 juin 2006, 14:47

Je ne vois pas ce que tu veux dire par entrée et compte, d'ailleurs je ne vois pas où tu détermine la valeur de $var2['nb']

Et selon ce que j'ai pu comprendre, le fait d'avoir 4 images identiques n'est pas choquant puisque c'est ça que fait ton programme actuel et c'est ça ce que tu veux. Mais je ne vois pas pourquoi tu mets dans les 4 formulaires identiques le même nom du gars.

Il manque un grain à ce que tu as expliqué :roll:

par agité » 26 juin 2006, 14:25

en fait je veux $var2['nb'] ca calcule le nombre d'elemnt que l'utilisateur a pour son compte et je veux donc qu'il fasse le nombre d'entrée identique aux numero des formulaire.

Je vois pas si tu suis en fait ce que je veux faire a la base c'est tout simple, juste par exemple sur une table tu as 4 entrées de faire 4 images comme celle ci avec un lien sur un formulaire qui comporte le nom de l'image.

Est ce que c'est plus clair comme ca ?

par sadeq » 26 juin 2006, 14:20

C'est moi qui allais te poser cette question après refléxion :wink: :?:
Pourquoi tu fais une boucle qui affiche $var2['nb']+1 fois le même $row[nom] dans un formulaire :?:

Explique ce que tu veux faire dans le while de lecture d'un $row car ce n'est visiblement pas bien fait.

par agité » 26 juin 2006, 14:11

il me boucle 4 fois l'image et les lien ne marchent pas, il doit y avoir une erreur dans ta correction ou dans le reste de mon code de je pense !

je le remet en entier pour voir si tu vois une faute :


<?php
require("connect.php");

/* Création d'un tableau : la première partie sera l'en-tête et n'a pas besoin d'être répétée */
?>
<table border="0" width="100%" cellpadding="1" cellspacing="2">
	<tr>
		<td colspan="2"><a href="newSong.php?<?php echo $SID; ?>">&nbsp <b>Ajouter un morceau</b><br><br></a></td>
	</tr>
	<tr>
		<th width="10%"  class="td3" >D&acirc;te creation</th>
		<th width="20%"  class="td3" >Nom</th>
		<th width="20%"  class="td3" >Style</th>
		<th width="35%"  class="td3" >Description</th>
		<th width="15%"  class="td3" >Lien</th>
	</tr>

<?php
/* Maintenant on va créer une nouvelle ligne dans notre tableau par ligne de données : on utilise une boucle */
$verif = mysql_query("SELECT `nom`, `description`, `date`, `genre`, `lien` FROM `mix` WHERE artiste LIKE '%". $_SESSION['login'] ."%' ");

while(($row = mysql_fetch_array($verif)) != false)
{
?>
</table>

<table border="0" width="10%" cellpadding="0" cellspacing="0">
<?php for($i = 0; $i <= $var2['nb']; $i++){?>
    <form method="POST" action="editsong.php" name="envoie<?php echo $i; ?>">

        <input type="hidden" name="musique" value="<?php echo $row['nom']; ?>">
            <tr>
                <td class="edit"><a href="javascript:envoie<?php echo $i; ?>.submit();"><img src="icon_edit.gif" border="0"></img></a></td>
            </tr><br>
    </form>
<?php }//fin for ?>


</table>



<table border="0" width="100%" cellpadding="0" cellspacing="0">
	<tr>
		<td width="10%" class="liste_ouvre"><?php echo($row['date']); ?></td>
		<td width="20%" class="liste"><?php echo($row['nom']); ?></td>
		<td width="20%" class="liste"><?php echo($row['genre']); ?></td>
		<td width="35%" class="liste"><?php echo ($row['description']); ?></td>
		<td width="15%" class="liste_ferme"><a href="<?php echo($row['lien']); ?>"> Telecharger</a></a></td>
	</tr>

<?php
}

?>
</table><br>
la je vois vraiment pas d'ou peux venir la faute, et surtout pourquoi les lien submit en javascript ne marchent pas...

[EDIT] les lien ne marchent que sous internet explorer mais pas sur firefox ...

par sadeq » 26 juin 2006, 14:06

Parceque t'as un autre problème :
ta boucle se termine avant de terminer le formulaire et n'inclut donc pas le lien submit.

Pour solutionner ce problème il faut étendre la portée du for au-delà du </form> et comme ça t'auras plusieurs formulaire dont chacun peut être envoyé par son lien submit.

Correction:
<?php for($i = 0; $i <= 3; $i++){?> 
   <form method="POST" action="editsong.php" name="envoie<?php echo $i; ?>"> 
   <input type="hidden" name="musique" value="<?php echo $i; ?>"> 
   <tr> 
   <td class="edit"><a href="#" onClick="javascript:envoie<?php echo $i; ?>.submit();">
   <img src="icon_edit.gif" border="0"></img></a></td> 
   </tr><br> 
  </form> 
<?php }//fin for ?>

Remarque: la forme HREF="javascript:....." marche simplement sous IE

par agité » 26 juin 2006, 13:41

Ok je pense obter pour la premiere solution donc ce que j'avais commencer mais quand je fais ca :
											 <?php for($i = 0; $i <= $var2['nb']; $i++){?>
											<form method="POST" action="editsong.php" name="envoie<?php echo $i; ?>">
											<?php }?>

												<input type="hidden" name="musique" value="<?php echo $row['nom']; ?>">
													<tr>
														<td class="edit"><a href="javascript:document.envoie<?php echo $i; ?>.submit();"><img src="icon_edit.gif" border="0"></img></a></td>
													</tr><br>
											</form>
le 2em $î qui n'est pas dans la boucle retourne bien le bon nombre mais celui dans la boucle for me retourne toujours envoie0

de plus le lien href="javascript je fonctionne pas du tout.

par sadeq » 26 juin 2006, 12:50

1. solution 1:
Quand tu utilise un HREF pourquoi utiliser ONCLICK? tu peux utiliser HREF pour exécuter le code JAVASCRIPT :

Code : Tout sélectionner

<td class="edit"><a href="javascript:document.envoie<?php echo $i; ?>.submit();"><img src="icon_edit.gif" border="0"></img></a></td>
NB. il faut virer $i++ que tu as ajouté pour incérenter $i sachant qu'elle est déjà incrémentée par la boucle for

2. solution 2:
Utiliser un bouton submit de type image :

Code : Tout sélectionner

<td class="edit"><input type='image' src="icon_edit.gif" border="0"></img></td>
NB. le input de type image est un submit qui envoi le formulaire dans lequel il se trouve, tu n'as plus besoin donc de nommer les formulaires

par agité » 26 juin 2006, 12:43

Sinon pour faire beaucoup plus simple je vais vous demander comment vous auriez fait le script pour que :

-quand on clic sur une image elle renvois sur un formulaire en donnant un nom en POST ou en tout cas pas en l'envoyant sur l'URL

Sachant que les images sont generer par une boucle qui affiche toute les images de l'utilisateur/

par agité » 26 juin 2006, 12:31

j'ai ajouter :
										 <?php for($i = 0; $i <= $var2['nb']; $i++){?>

										<table border="0" width="10%" cellpadding="0" cellspacing="0">
											<form method="POST" action="editsong.php" name="envoie<?php echo $i; ?>">
												<input type="hidden" name="musique" value="<?php echo $row['nom']; ?>">
													<tr>
														<td class="edit"><a href="#" onClick="javascript:document.envoie<?php echo $i; ?>.submit();"><?php $i++ ?><img src="icon_edit.gif" border="0"></a></td>
													</tr><br>
											</form>
										<?php }?>
mais toujours rien a faire il ne m'envoie pas sur la page ...

par goeb » 26 juin 2006, 11:51

salut,

je pense que tu as un problème parce que tous tes formulaires s'appelent "envoie", et quand tu fais :

Code : Tout sélectionner

<a href="#" onClick="javascript:document.envoie.submit();">
tu ne précises pas lequel de tous ces formulaires tu veux envoyer !
Il serait plus judicieux de valider les formulaires avec un bouton submit.

ou alors nomme tes formulaires envoie1, envoie2, envoie3, ... et mets :

Code : Tout sélectionner

<a href="#" onClick="javascript:document.envoie<? echo $numero; ?>.submit();"> <? $numero++; ?>

formulaire dans un while

par agité » 26 juin 2006, 11:20

Quand je fais mon formulaire dans le while quand je vire le </form> il m'envoie bien vers la page mais tout les liens sont les même puisque le formulaire n'est jamais fermer !

j'aimerais bien trouver une solution car la il me renvois sur la page avec le # a la fin en plus mais il ne valide pas le formualaire ... et je ne sais plus quoi faire

le code :
	<?php

										require("connect.php");



										/* Création d'un tableau : la première partie sera l'en-tête et n'a pas besoin d'être répétée */
										?>
										<table border="0" width="100%" cellpadding="1" cellspacing="2">
											<tr>
												<td colspan="2"><a href="newSong.php?<?php echo $SID; ?>">&nbsp <b>Ajouter un morceau</b><br><br></a></td>
											</tr>
											<tr>
								   				<th width="10%"  class="td3" >D&acirc;te creation</th>
								    			<th width="20%"  class="td3" >Nom</th>
								  				<th width="20%"  class="td3" >Style</th>
												<th width="35%"  class="td3" >Description</th>
												<th width="15%"  class="td3" >Lien</th>
											</tr>

										<?php
										/* Maintenant on va créer une nouvelle ligne dans notre tableau par ligne de données : on utilise une boucle */
									$verif = mysql_query("SELECT `nom`, `description`, `date`, `genre`, `lien` FROM `mix` WHERE artiste LIKE '%". $_SESSION['login'] ."%' ");

										while(($row = mysql_fetch_array($verif)) != false)
    									{
										?>
										</table>

										<table border="0" width="10%" cellpadding="0" cellspacing="0">
											<form method="POST" action="editsong.php" name="envoie">
												<input type="hidden" name="musique" value="<?php echo $row['nom']; ?>">
													<tr>
														<td class="edit"><a href="#" onClick="javascript:document.envoie.submit();"><img src="icon_edit.gif" border="0"></a></td>
													</tr><br>
											</form>		

										</table>



										<table border="0" width="100%" cellpadding="0" cellspacing="0">
											<tr>
									   			<td width="10%" class="liste_ouvre"><?php echo($row['date']); ?></td>
									   			<td width="20%" class="liste"><?php echo($row['nom']); ?></td>
								  				<td width="20%" class="liste"><?php echo($row['genre']); ?></td>
								  				<td width="35%" class="liste"><?php echo ($row['description']); ?></td>
								    			<td width="15%" class="liste_ferme"><a href="<?php echo($row['lien']); ?>"> Telecharger</a></a></td>
											</tr>

										<?php
										}

										?>
										</table><br>