renomer un input type image

Eléphant du PHP | 357 Messages

22 août 2005, 14:31

Bonjour tlm !!
voila je voudrai savoir s'il est possible de renommer une variable de type image.
C'est pas clair ...
Donc dans un formulaire, lorsque le submit est une image et que le formulaire est de methode GET, dans l'url la variable renvoyée par l image est de type ( si on l a appeler image ) : image.x=124&image.y=12 (c'est un exemple)
je voudrai savoir si on peux zaper : image.x=124&image.y=12 et que l on puisse mettre quelque chose de plus simple.
j'espere avoir ete plus clair
merci pour tout
cordialement

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 août 2005, 14:37

Ce n'est pas très clair.
Poste ton code HTML
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 357 Messages

22 août 2005, 14:46

je veux juste changer le nom de l image dans l'url:
code:

Code : Tout sélectionner

<form action="page" method="get"> <input type="text" name="nom" size="15" /> <input type="image" name="image" src="url_voulu.jpeg" /> </form>
sur mon url de destination j ai:
http://www.monsite.fr/truc.php?nom=toi& ... image.y=23

et je voudrai ne plus avoir image.x=123&image.y=23 ou du moins je voudrai avoir autre chose.

le but est d'avoir sur un formulaire de bouton submit qui me redirige vers deux page différentes.
donc mettre mon action en var et jouer dessus
j espere avoir ete plus clair

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

22 août 2005, 15:09

J'ai pas compris ton but final, mais le mot image de ton URL vient de
<input type="image" name="image" src="url_voulu.jpeg" />
Règle n°2 du webmaster : Toujours commencer par le HTML qu'on veut obtenir....toujours ! :priere:
J'aime apprendre de nouvelles choses.

Eléphant du PHP | 357 Messages

22 août 2005, 16:28

oui je sais :wink:
c'est pas grave je vais me débruiller autrement
merce en tout cas MT pour ton aide :wink:

Mammouth du PHP | 1885 Messages

22 août 2005, 21:40

Bonjour,

Non, on ne peut pas modifier les variables retournées par un input image, puisque l'input image retourne les coordonnées où le client a cliqué.
When a pointing device is used to click on the image, the form is submitted and the click coordinates passed to the server. The x value is measured in pixels from the left of the image, and the y value in pixels from the top of the image. The submitted data includes name.x=x-value and name.y=y-value where "name" is the value of the name attribute, and x-value and y-value are the x and y coordinate values, respectively.
La programmation est l'expression de la poésie d'un programmeur
Génération PHP

meduim
Invité n'ayant pas de compte PHPfrance

30 août 2005, 20:57

Avec un bouton submit normal :

Lorsque le visiteur clique sur un bouton "submit" classique (bouton gris), le navigateur du visiteur envoi la paire nom_du_bouton/valeur_du bouton, par exemple :

Si votre formulaire contient :
<input type="submit" name="action" value="valider">
alors le navigateur envoi (et le CGI reçoit) :
action=valider

Pour cela pas de problème... Mais lorsque c'est une image-submit qui est cliquée, le navigateur envoie bien autre chose !

Avec une image-submit :

Lorsque le visiteur clique sur une image-submit (image dont un clic valide le formulaire), le navigateur du visiteur envoie le nom du champ image-submit ainsi que les coordonnées de l'image (x et y) de l'endroit où vous avez cliqué. Par exemple :

Si votre formulaire contient :
<input type="image" src="http://serveur.com/votre/image.gif" name="action" width="100" height=50">
alors à supposer que le visiteur clique en plein milieu de l'image, le navigateur envoi :
action.x=50
et
action.y=25

Généralement, cela ne vous intéresse pas de connaître les coordonnées du point de l'image qui a été cliqué. Ce qui vous importe c'est de savoir si c'est ce bouton-image qui a été cliqué ou un autre (à supposer que le fomulaire en ait plusieurs).



La solution :

Voci donc un petit sous-programme qui transforme les données reçues des images-submit, pour faire comme si le clic avait eu lieu sur un bouton-submit classique. En résumé, le but est de faire disparaître les '.x' et '.y' . Pour reprendre l'exemple ci-dessus, après l'éxécution du sous-programme, on n'aura plus action.x=50 et action.y=25, mais : action=1. Ainsi le CGI pourra savoir que le bouton d'envoi de formulaire nommé "action" a été cliqué.



Le code :

Voici le sous-programme : il suppose que le CGI ait auparavant récupéré les données envoyées par le formulaire en les stockant dans %form (tableau associatif)
Pour appeler ce sous-programme :
&receive_imgsubmit;

########################################
sub receive_imgsubmit {
local ($key);

foreach $key(keys(%form)) { #Pour chaque champ envoyé
if ($key=~ s/\.x$//) { #Si le champ finit par .x
delete($form{"$key\.x"});#...alors on le suprime
$form{$key}="1"; # et on créé: nom_champ_sans.x=1
}
if ($key=~ /\.y$/) { #Si le champ finit par .y
delete($form{$key}); #...alors on le supprime
}
}
}
########################################



Dans un script Perl, appelez ce sous-programme juste après avoir récupéré les données avec la méthode GET ou POST