formulaire dans un while

Mammouth du PHP | 965 Messages

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>

Eléphant du PHP | 413 Messages

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++; ?>
--
Goeb

Mammouth du PHP | 965 Messages

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 ...

Mammouth du PHP | 965 Messages

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/

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

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
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Mammouth du PHP | 965 Messages

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.

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

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
Modifié en dernier par sadeq le 26 juin 2006, 14:13, modifié 2 fois.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Mammouth du PHP | 965 Messages

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 ...

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

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.
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Mammouth du PHP | 965 Messages

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 ?

Modérateur PHPfrance
Modérateur PHPfrance | 2575 Messages

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:
--------//////----//---//----//////
-------//---//----//---//----//---//
------//////----//////-----//////
-----||--------||--||---||
Prendre le recul n'est pas une perte de temps.


ps: Affrontez moi dans l'arène

Invité
Invité n'ayant pas de compte PHPfrance

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 ?