[PHP] envoyer POST data avec <a href,,,> [Fermé]

Signaler
Messages postés
7
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
8 octobre 2013
-
Messages postés
192
Date d'inscription
lundi 28 juillet 2008
Statut
Membre
Dernière intervention
25 septembre 2013
-
Bonjour,

Je me demandais si il etait possible denvoyer des POST data sans utiliser de formulaire oO.
Par exemple juste avec la balise <a></a> ?

Ou de facon plus general, d'envoyer une variable d'une page a l'autre sans quelle soit afficher dans l'url.

Merci =)

8 réponses


Oui effectivement, c'est possible :
<form id="test" action="le_lien_vers_ta_page">
<input type="hidden" name="a_recup" value="tu_mets_ta_variable_ici"/>
</form>
<a href='#' onclick='document.getElementById("test").submit()'>Ton lien</a>


Et sur la page d'après :

$_POST['a_recup']
50
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 62248 internautes nous ont dit merci ce mois-ci

Messages postés
362
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009
27
Bien vu ^^ C'est plus simple comme ça :P
Une précision, ceci ne vaut que si le formulaire est déclaré en méthode POST :
<form id="test" action="le_lien_vers_ta_page" method="post">
c'est du GET donc ça ce recupere par un $_GET['a_recup'] et non POST
Messages postés
1565
Date d'inscription
vendredi 28 août 2009
Statut
Membre
Dernière intervention
8 avril 2015
183
Le principe des variables POST justement contrairement aux variables GET, c'est qu'elles ne passent pas par l'URL et n'y passeront jamais !!!

Ne pas oublier le method="post"
Messages postés
781
Date d'inscription
mercredi 4 juillet 2007
Statut
Membre
Dernière intervention
14 septembre 2008
207
Je ne pense pas, mais tu peux mettre un formulaire caché, le remplir en javascript, et envoyé..
Messages postés
362
Date d'inscription
vendredi 20 juin 2008
Statut
Membre
Dernière intervention
20 juillet 2009
27
C'est possible,

Tu mets ton lien avec onclick:ta_fonction_javascript(), cette fonction ajoutera une variable POST hidden que tu pourra donc récupérer sur la page appellée.

Si tu ne vois pas comment faire ça en javascript fais signe :)

Bonne aprem
Messages postés
716
Date d'inscription
lundi 20 août 2007
Statut
Membre
Dernière intervention
9 avril 2012
104
tu peux utiliser une iframe cachée (post target=iframe)
ou alors du ajax (javascript)
ou meme un post normal mais avec redirection (php header location) pour ne pas rester sur l'autre page
Messages postés
192
Date d'inscription
lundi 28 juillet 2008
Statut
Membre
Dernière intervention
25 septembre 2013
19
tout dépend de ce que tu veux envoyer et a quel moment aussi. développe un peu ton idée ;)
Messages postés
7
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
8 octobre 2013

Hmmm je ne sais quoi te repondre.
Mon but etant au final qu'en cliquant sur un lien je me retrouve sur une nouvelle page tout en lui envoyant une variable invisible dans l'url.
Messages postés
5374
Date d'inscription
dimanche 3 février 2008
Statut
Membre
Dernière intervention
13 février 2017
873 >
Messages postés
7
Date d'inscription
vendredi 25 juillet 2008
Statut
Membre
Dernière intervention
8 octobre 2013

Salut,

tu peux essayer avec une fonction Javascript:

<html>
<script language="javascript">
function appel_page(){
	window.location.href="la_page_a_atteindre.php?variable="+"<?php echo $var ; ?>";
	//ou
	//window.location.href="la_page_a_atteindre.php?variable=ta_valeur";
}
</script>
<a href="javascript:appel_page();">lien</a>
</html>


en affichant la source de la page, l'utilisateur pourra qd même voir la variable

tu peux mettre ta fonction javascript en fichier externe. Ca demande un peu plus de manips et de connaissance pour aller voir

@lain
bonjour j'ai un problème assez similaire en fait j'ai un tableau de lien que je rempli à partir d'une base de donnée et je souhaite que lorsque je clique sur un lien on arrive sur une nouvelle page, et on envoi par "post" le nom du lien.

j'ai essayer ceci mais ça ne fonctionne pas il envoie le nom du premier élément du tableau.


while ($donnees = $cycliste->fetch())
{
?>
<tr>
<td>
<form id="<?php echo $i;?>" action="change_ville.php" method=post>
<input type="hidden" name="a_recup" value="<?php echo $donnees['nom']; ?>"/>
</form>
<a href='#' onclick='javascript:document.getElementById("<?php echo $i;?>").submit()'><?php echo $donnees['nom'];?></a>
<td>
</tr>
<?php
$i=$i+1;
}

voila je suis pas sur d'avoir été clair je reste disponible pour plus de précision
Messages postés
7
Date d'inscription
jeudi 3 février 2011
Statut
Membre
Dernière intervention
29 juillet 2013

Bonjour belle et magnifique communauté,
J'ai un problème assez similaire à celui de shuruga 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 provient 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 ça envoie le mail du premier élément de ma liste... Un peu comme shuruga également ^^...

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.

Si je l'envoie à l'aide de $_POST c'est parce que j'utilise $_SESSION pour les uploads et aussi la consultation, j'aimerais que $_POST soit utilisé pour la consultation simple des non-inscrits mais voilà je n'y arrive pas...

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".
Messages postés
192
Date d'inscription
lundi 28 juillet 2008
Statut
Membre
Dernière intervention
25 septembre 2013
19
Je ne sais pas si tu as trouvé la solution depuis .. ?
Le multi form avec le même nom fera que lorsque tu valides, ça enverra le 1er form .. donc ton premier résultat d'adresse mail !
hum... ça c'est mit à marcher sans raison apparente en modifiant ailleurs le problème devais pas venir de là. dsl pour le dérangement.
Messages postés
192
Date d'inscription
lundi 28 juillet 2008
Statut
Membre
Dernière intervention
25 septembre 2013
19
ok ! pense a mettre en résolu alors :)