Comment envoyé un $_POST via <form> sans submit, boucle while

nohay Messages postés 7 Statut Membre -  
Alain_42 Messages postés 5413 Statut Membre -
Bonjour,

Bonjour belle et magnifique communauté,
J'ai un problème assez similaire à celui de shuruga https://forums.commentcamarche.net/forum/affich-7617623-php-envoyer-post-data-avec-a-href et pour l'occasion je fait un up de près de 3ans je m'en excuse par avance mais pour le coup je ne sais vraiment pas comment faire...

J'ai 5 liste qui sont bouclé à l'aide de while() et qui proviennent de ma base de donnée.

Ci-dessous une de ces 5 listes :


EXTRAIT page1.php

<p id="col1">A-B</p>
<?php
}
// colone 1
$reponse = $bdd->query('SELECT * FROM membre 
WHERE nom LIKE \'a%\' OR nom LIKE \'b%\'
ORDER BY nom ASC LIMIT 0,20');
while ($donnee = $reponse -> fetch())
{
?>
<form id="mail" method="post" action="page2.php">
<ul id="col1" class="no_decoration">
<li>
<a class="hover" href="#" onclick='document.getElementById("mail").submit()'>
<input type="hidden" name="mail" value="<?php echo $donnee['mail']; ?>"/>
<?php echo $donnee['nom'].' '; ?><?php echo $donnee['prenom']; ?></a>
</li>
</ul>
</form>
<?php
}
{
?>



j'ai essayer ceci mais ça ne fonctionne pas, le code envoie le mail du premier élément de ma liste, j'imagine qu'il y a un problème avec ma boucle... ?

C'est en fait un espace membre, j'utilise l'adresse mail des membres pour qu'il puisse se connecter. Une fois inscrit, ils peuvent "uploader" différents médias, pour au final obtenir une galerie.

Si je l'envoie à l'aide de $_POST['mail'] c'est parce que j'utilise $_SESSION['mail'] pour les uploads de membre et aussi la consultation de sa galerie quand il est connecté, alors que $_POST['mail'] doit servir à identifier chaque mail récupérer dans la boucle... Pour ensuite afficher la galerie de chaque membre répertorié par liste... sans prendre en considération le $_SESSION['mail'].

Comme j'ai essayé de faire en page2 :


EXTRAIT page2.php

<?php
if (isset($_POST) AND $_POST['mail']!="")
{
$dos = "uploads/$_POST[mail]/min/";
$dir = opendir($dos);
while($_FILES = readdir($dir))
{
$allow_ext = array("jpg","png","gif");
$ext = strtolower(substr($_FILES,-3));
if(in_array($ext,$allow_ext))
{
?>
<a href="ma_collection_detail.php">
<img src="uploads/<?php echo $_POST['mail']?>/min/<?php echo $_FILES; ?>"/></a>
<?php
}
}
}

else
{
if($_POST['mail']="")
$dos = "uploads/$_SESSION[mail]/min/";
$dir = opendir($dos);
while($_FILES = readdir($dir))
{
$allow_ext = array("jpg","png","gif");
$ext = strtolower(substr($_FILES,-3));
if(in_array($ext,$allow_ext))
{
?>
<a href="ma_collection_detail.php">
<img src="uploads/<?php echo $_SESSION['mail']?>/min/<?php echo $_FILES; ?>"/></a>
<?php
}
}
}
?>



voilà si ça manque de clarté, faite moi signe.

PS: "l'indentation c'est enlevé d'elle même".


5 réponses

Spz91 Messages postés 76 Statut Membre
 
Bonjours,

Pourquoi tu ne veut pas faire un form sans submit, personnellement j'ai jamais vue un form sans submit car c'est lui qui déclenche l'envoie du port
0
jeremy.s Messages postés 1248 Statut Membre 79
 
Salut !

Ton <a> dans ton formulaire te sers de submit, pourquoi ne pas mettre un input type submit alors ?
Ca revient un peu à la question de Spz91, pourquoi tu veux ne pas mettre de submit ?

Et je n'ai pas forcément compris ce que tu souhaites faire enfaite
0
nohay Messages postés 7 Statut Membre 1
 
celà fera apparaitre le bouton submit et le problème dans ce code c'est qu'il ne fonctionne pas et je me demande pourquoi enfin il fonctionne qu'avec le premier élément de ma liste qu'il boucle sur tout les éléments de cette même liste...
0
nohay Messages postés 7 Statut Membre 1
 
Bonjour,

Parce que je ne veux pas qu'il y est la case submit qui apparaissent je veux que mon lien cliquable envoi ma donnée POST et j'ai essayé un FORM pour ça mais peut-être que ce n'est pas la bonne solution...
0
ThEBiShOp Messages postés 9307 Statut Contributeur 1 566
 
Salut, pourquoi ne pas utiliser un select ou des radios ?
0

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

Posez votre question
Alain_42 Messages postés 5413 Statut Membre 894
 
normal que tu n'en ait qu'un qui soit "submit"

tu fais une boucle pour afficher tes formulaires mais ils ont tous le même id="mail"
et lorsque tu fais onclick='document.getElementById("mail").submit() javascript ne s'y retrouve pas car un id doit être unique

une solution en différenciant les id avec un compteur $i
<?php
}
// colone 1
$reponse = $bdd->query('SELECT * FROM membre 
WHERE nom LIKE \'a%\' OR nom LIKE \'b%\'
ORDER BY nom ASC LIMIT 0,20');
$i=0; //compteur
while ($donnee = $reponse -> fetch())
{
?>
	<form id="mail_<?php echo $i;?>" method="post" action="page2.php">	
	<ul id="col1" class="no_decoration">
	<li>
	<a class="hover" href="#" onclick='document.getElementById("mail<?php echo $i;?>").submit()'>	
	<?php echo $donnee['nom'].' '; ?><?php echo $donnee['prenom']; ?></a>
	</li>
	</ul>
	<input type="hidden" name="mail" value="<?php echo $donnee['mail']; ?>" />
	</form>
<?php
$i++;
}
{
?>
0