8768 sujets

Développement web côté serveur, CMS

Bonjour

J'ai un comportement plus qu'étrange avec IE. J'ai un <input type="image" name="replace_submit" value="peu_importe">

Ensuite dans mon PHP je fais: if(isset($_POST['replace_submit'])).
Le fait est que si je post le formulaire sous Firefox, ma condition est vrai alors qu'avec Internet Explorer elle est FAUSSE!

Est-ce que c'est possible que IE n'envoie pas les valeur des input de type 'image' ??

Sioui, quelle alternative je peux utilisé pour avoir un bouton avec une image ?

Merci
Modérateur
Bonjour,

Les navigateurs envoient les coordonnées où l'utilisateur a cliqué sur l'image, comme "replace_submit.x" et "replace_submit.y", mais c'est relatif à chaque navigateur. Vérifie de ce côté.

Le mieux pour débugger quelque chose comme ca est de se faire une fonction pour afficher tous les éléments contenu dans $_POST.
En effet la 'key' de l'array $_POST[] des inputs de types image est le nom de l'input suivi de la région cliqué.

Dans mon cas au lieu d'avoir $_POST['replace_submit] j'ai $_POST['replace_submit_y] et la valeur n'est pas celle spécifier dans le 'value' de l'input mais la position Y (ou X) de l'endroit cliqué.

Parcontre sous Firefox je peux manipuler les input de type image comme s'il s'agirait d'un input de type submit...
Modérateur
Pour utiliser les input type image, tu peux toujours détecter si tu reçois replace_submit ou replace_submit_x. Ca réglerait le problème.

Tu as testé qu'est-ce que ca donne si tu navigue au clavier et tu appuis sur Enter ? Que reçois-tu ? Des coordonnées de 0 par 0 ? Je n'ai jamais testé cela.
a écrit :

Le mieux pour débugger quelque chose comme ca est de se faire une fonction pour afficher tous les éléments contenu dans $_POST.

Bonsoir,
Pas besoin !

echo nl2br(print_r($_POST, true));
et le miracle survient.
Je pourrais tjrs détecter comme tu l'as dit. Le problème est que j'ai besoin de la valeur spécifier dans le <input .. > plutot que la région cliquer Smiley decu

Si je mets une image a un bouton submit, la valeur dans le 'value' est affiché alors je ne peux pas opter pour cette solution.

J'envisage une solution: un ptit script JS et des champs hidden pour conserver la valeur malgré tout.
Modifié par PsYk0-PaT (02 Nov 2005 - 20:51)
Modérateur
PsYk0-PaT a écrit :

J'envisage une solution: un ptit script JS et des champs hidden pour conserver la valeur malgré tout.


Attention par contre que le Javascript ne soit pas indispensable pour utiliser ton formulaire.

QuentinC, j'ai dis "se faire une fonction" parce que je ne savais pas trop si PHP disposait d'une façon simple de le faire.

En coldfusion, c'est <cfdump var="#FORM#">

Smiley smile
Non en fait j'aurai meme pas besoin de JS. Je crée un "doublon" pour chaque input de type image.

À titre d'exemple:

<input type="image" name="sub_ajout" value="<?php echo $module; ?>" src="images/b_ajouter.gif"/>

devient

<input type="image" name="sub_ajout" value="<?php echo $module; ?>" src="images/b_ajouter.gif" />
ET
<input type="hidden" name="sub_ajout2" value="<?php echo $module; ?>" />
Modifié par PsYk0-PaT (02 Nov 2005 - 21:05)
mais comment qu'on fait si on a plusieurs boutons images??
une solution : tester le nom du bouton image puisque sa valeur n'est pas postée

petit script exemple, surement loudingue, pardon je débute Smiley cligne , pour tester si on demande une modification de ligne ou une suppression.

dans le formulaire les boutons sont nommés :
pour la modif : boutonModif.$id_ligne
pour la suppression : boutonSuppr.$id_ligne

puis récupérés :

$implode = implode(array_keys($_POST)); //j'implode le post pour voir si c'est modif ou suppr

//bornes de ma recherche de caractere
$rechmodif = "boutonModif";
$rechsuppr = "boutonSuppr";
$rech = "_x"; //borne sup

//cas ou j'ai boutonModif dans le post
$pos1 = strpos($implode, $rechmodif);
	if($pos1!==false){
	$pos2 = strpos($implode, $rech);
	$debut=$pos1+strlen($rechmodif);
	$length=$pos2-$debut;
	$demande= "modifier";
	$ref_ligne = substr($implode,$debut,$length);
	echo "<BR>".$demande." : ".$ref_ligne;
	}
unset ($pos1);

//cas ou j'ai boutonSuppr dans le post
$pos1 = strpos($implode, $rechsuppr);
	if($pos1!==false){
	$pos2 = strpos($implode, $rech);
	$debut=$pos1+strlen($rechsuppr);
	$length=$pos2-$debut;
	$demande= "supprimer";
	$ref_ligne = substr($implode,$debut,$length);
	echo "<BR>".$demande." : ".$ref_ligne;
	}
unset ($pos1);