Récupérer des valeurs d'un <input type="image">

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 : Récupérer des valeurs d'un <input type="image">

par Truc » 12 déc. 2007, 01:36

Modération :
maximeus, si ta question est résolue, pense à ajouter le tag [Résolu]
pour indiquer aux personnes qui voudront consulter ce sujet qu'il contient une solution.
Tu peux réaliser cette opération en cliquant sur le bouton Image en haut à gauche de ce sujet.

par maximeus » 11 déc. 2007, 15:59

Testé et approuvé :D

Tu es trop fort. La 2ème solution fonctionne du tonnerre sur les 3 navigateurs.

Il faut répéter quelque fois les mêmes lignes de codes, mais c'est pas grave :D

Un grand merci.

par Ryle » 11 déc. 2007, 14:58

Tu peux le faire (envoyer des données à la fois en post et à la fois en get), mais pas sous la forme d'un lien. Il faut pour cela modifier l'attribut action de ton formulaire pour y spécifier les paramètres à passer dans l'url :

Code : Tout sélectionner

<form action"index.php?va1=toto" method="post"> <input name="var2" value="titi" /> </form>
Tu recevras ainsi $_GET['var1'] et $_POST['var2'], mais cela t'obligera encore à utiliser l'action onClick sur une iamge et modifier l'action du formulaire avec js, donc un interêt assez limité... autant tout envoyer en post et passer par le champ hidden.

Autre solution sinon, tu donnes 3 noms différents à tes input image, et tu regardes pour lequel les coordonnées ont été envoyés :
if (isSet($_POST['input_localites_paris_x']))
  $input_localites = 'paris';
elseif (isSet($_POST['input_localites_bordeaux_x']))
  $input_localites = 'bordeaux';
...

par maximeus » 11 déc. 2007, 13:50

c'est nul, il y a toujours un hic quelque part :shock:

et si j'utilise la methode post pour récupérer les valeurs des listes déroulante et la méthode get pour envoyer la valeur de l'image via un lien, vous pensez que cela est faisable (les 2 méthodes ensemble)?

par Ryle » 11 déc. 2007, 13:25

bah euh... y a pas trop de solution pour y remédier, t'es pas sensé passer de valeur dans une image, même si firefox le tolère...

donc faut opter pour le choix de ta ville via un menu déroulant, ou opter pour un code javascript qui ira mettre à jour un champ caché lorsque tu cliques sur l'une des images (img du coup, au lieu de input) et soumettre le formulaire...

Code : Tout sélectionner

onClick="document.nom_formulaire.champ_caché.value = 'paris'; document.nom_formulaire.submit();"

par maximeus » 11 déc. 2007, 12:58

salut,

voici ce que je reçois sous ie:
----------------------------------

Array ( [select_biens] => 1 [select_types] => 1 [input_localites_x] => 10 [input_localites_y] => 38 )
Notice: Undefined index: input_localites in c:\program files\divers\easyphp1-8\www\igloo4c\annonces.php on line 8

Pour info la ligne 8 correspond à cela: $localites = $_POST['input_localites'];

et voici ce que je reçois sour firefox:
------------------------------------------

Array ( [select_biens] => 1 [select_types] => 1 [input_localites_x] => 13 [input_localites_y] => 38 [input_localites] => paris )

Comme tu l'as indiqué plus haut, il s'agit d'un problème avec la position de l'image....

Comment est-il possible de remédier au problème?

Merci d'avance.

par Ryle » 11 déc. 2007, 11:42

As-tu regardé le contenu de $_POST comme le suggérais Truc ?

Il me semble me souvenir que lorsque l'on clique sur une image, ce sont les coordonnées du pixel cliqué qui sont soumisent via le formulaire (d'où l'effet submit associé), et en aucun cas la valeur éventuellement associée..

Tu dois probablement avoir un $_POST['input_localites.x'] et un $_POST['input_localites.y'] :)


Edit : http://www.w3.org/TR/html4/interact/forms.html#h-17.4.1

par maximeus » 11 déc. 2007, 09:33

ce qui est vraiment chelou c'est que cela fonctionne nickel avec Firefox, mais pas avec Ie ou Opera. On dirait que la valeur paris n'est pas envoyée correctement à l'autre page.

voici une partie du code de mes 2 pages:

page avec le formulaire:
----------------------------

Code : Tout sélectionner

<form id="form1" name="form1" method="post" action="<?php echo ANNONCES_LIEN; ?>"> ....... <select class="liste" name="select_biens">.....</select> ....... <select class="liste" name="select_types">.....</select> ....... <input type="image" src="site_images/paris.jpg" name="input_localites" value="paris"> ....... <input type="image" src="site_images/lyon.jpg" name="input_localites" value="lyon"> ....... <input type="image" src="site_images/bordeaux.jpg" name="input_localites" value="bordeaux"> </form>
page qui affiche les données:
----------------------------------
<?php
// on récupère les valeurs dans le lien
$biens = $_POST['select_biens'];
$types = $_POST['select_types'];
$localites = $_POST['input_localites'];

// on affiche le résultat
echo ''.$biens.'<br>'.$types.'<br>'.$localites.'<br>';
.....
?>

par Truc » 10 déc. 2007, 23:08

Salut,
Le plus simple est de vérifier le contenu de $_POST :wink:
<pre>
<?php print_r($_POST); ?>
</pre>

Récupérer des valeurs d'un <input type="image"&

par maximeus » 10 déc. 2007, 22:58

bonjour,

j'aurais besoin de votre aide concernant la récupération de données d'un formulaire avec php.

voici la situation:

ma page accueil.php contient un formulaire avec 2 liste déroulantes contenant les données d'une db mysql et 3 images séparées représentant chacune une ville et qui sont utilisées comme bouton submit (par exemple <input type="image" src="site_images/paris.jpg" name="input_localites" value="paris">, <input type="image" src="site_images/lyon.jpg" name="input_localites" value="lyon"> et <input type="image" src="site_images/bordeaux.jpg" name="input_localites" value="bordeaux">.

Je souhaiterais que lorsque je clique sur l'une des image, ma page me fasse un submit vers une autre page qui affichera uniquement les données qui correspondent à la ville sélectionnée.

Avec Firefox, la valeur est bien transmise et ma page affiche bien les données, mais avec Ie et Opera,je reçoit une erreur de type "Undefined index:...."

Une petite idée d'où vient le sushi?

Merci d'avance