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

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

  1. 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++;
    }
    {
    ?>
    1. Contributeur
      Salut, pourquoi ne pas utiliser un select ou des radios ?
      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...
        1. 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
          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...
        2. 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