JeuWeb - Crée ton jeu par navigateur
Input type image sous IE - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Input type image sous IE (/showthread.php?tid=2592)

Pages : 1 2


Input type image sous IE - Kassak - 21-05-2008

Bonsoir, je voudrais essayer de voir avec vous la meilleure solution compatible pour la grosse ***** de navigateur qu'est IE et pour mozilla, je vous explique la situation :

Sous Firefox , voici une de mes requête :

Code PHP :
<?
$reponse
= mysql_query('SELECT competence.*,competence_joueur.* FROM competence_joueur LEFT JOIN competence
on competence.id_competence= competence_joueur.id_competence WHERE pseudo = "'
.$_SESSION['pseudo'].'"
AND sur_joueur="1"'
)or die(mysql_error());

echo
'<form style="margin:0px; padding:0px; display:inline" action="competence.php" method="post">
<input type= "hidden" name="comp_joueur" value="'
.$id_joueur.'" />';

while (
$donnees_competence = mysql_fetch_array($reponse)){

echo
'<input type="image" src="competence/'.$donnees_competence['image'].'.jpg" name="utiliser_comp"
value="'
.$donnees_competence['id_competence'].'" />';
}

echo
'</form>';
?>

Sur la page competence.php, une verification avec un isset de $_POST['utiliser_comp_x'] ( voyez bien le _x sinon cela ne marche ), est le tour est joué, j'arrive à passer ma donnée, et la traiter ensuite (Pour récupérer la valeur j'utilise maintenant $_POST['utiliser_comp'] sans le _x ).
Donc sur FF, AUCUN PROBLEME.


Aujourd'hui je décide de rendre mon site compatible IE/Mozilla, et a ma grande non-surprise, cela ne marche pas sous IE, $_POST['utiliser_comp'] ne contient rien du tout, j'ai beau trifouiller dans tous les sens, je n'arrive pas à rendre compatible un formulaire de ce type sur les deux navigateurs...

Auriez vous une solution? Un moment que ça me trotte dans la tête de régler ce problème, j'ai beau essayer rien ne passe.

Merci bien.


RE: Input type image sous IE.. - Sephi-Chan - 21-05-2008

Il faut savoir qu'IE renvoie les coordonnées de l'endroit où l'on clique.

Une petite discussion sur Alsacréations qui en parle : Problème balise 'input type="image" ' sous IE !

Sois tu choisis de bidouiller un peu, sois tu essayes de trouver une alternative, avec un unique formulaire et des boutons radio, par exemple. Le joueur devra quand même cliquer sur un bouton submit. Tout ça peut être rendu très propre grâce à CSS et encore plus par Javascript.


Sephi-Chan


Sephi-Chan


RE: Input type image sous IE.. - Anthor - 21-05-2008

As tu essayer de faire ceci pour voir les entêtes envoyé par IE
Code PHP :
<?php 
echo '<pre>' . print_r( $_POST, true ) . '</pre>';



RE: Input type image sous IE.. - Kassak - 21-05-2008

J'avais essayé de bidouiller un truc, mettre dans la boucle un champ hidden contenant l'id de la compétence, comme ça dans tous les cas la donnée passera, seulement si j'affiche 4 compétences, les 4 auront l'id de la dernière affichée...

Et apparemment si j'arrive avec cette méthode, cela règlerait le problème.

Edit : Anthor, j'ai bien testé, la variable POST est vide Wink


RE: Input type image sous IE.. - Anthor - 21-05-2008

Elle doit te fournir au minimum les coordonnées ^^
Et rien d'autre, donc a part nommer autrement tes champs image et rajouter des hidden, tu n'as pas d'autre choix ^^


RE: Input type image sous IE.. - Kassak - 21-05-2008

Oui elle fourni les coordonées, mais on s'en fout un peu de ça^^

Sinon pour la champ hidden dans la boucle, pourquoi elle contient toujours la valeur id du dernier champ affiché?

PAr exemple j'affiche 2 compétence : id5 et id6, si je rajoute le champ hidden, peut importe sur lequel je clique, j'obtiendrais comme valeur 6...


RE: Input type image sous IE.. - Anthor - 21-05-2008

Il ne doivent pas avoir le même nom.
Exemple: Utilise des tableaux et récupère la valeur de la clé.


RE: Input type image sous IE.. - Kassak - 22-05-2008

Je dois surement avoir un petit problème au niveau des neurones, je piges jamais quand on m'explique... Oo

Un ptit exemple pour différencier chaque input en hidden? Et comment savoir lequel je récupère ensuite?


RE: Input type image sous IE.. - Belsion - 22-05-2008

Je suppose qu'avec ta boucle tu retourne un formulaire de ce type:

Citation :<form ......>

<input type="hidden" name="hidden_utiliser_comp" value="comp1">
<input type="image" src="..." name="utiliser_comp" value="comp1">

<input type="hidden" name="hidden_utiliser_comp" value="comp2">
<input type="image" src="..." name="utiliser_comp" value="comp2">

...

</form>

Dans ce cas, la valeur de $_POST['hidden_utiliser_comp'] sera toujours "comp2", puisqu'il prend la dernière valeur renseignée.
D'où l'utilisation d'un tableau.

Comme ton formulaire est assez simple, tu as toujours la possibilité de le diviser en autant de formulaires que de compétences affichées, avec un hidden qui va bien à chaque fois. Par contre tu devras utiliser un tableau pour les afficher les uns à côté des autres. Ca devrait te donner quelque chose de ce genre:
Code PHP :
<?php
$reponse
= mysql_query('SELECT competence.*,competence_joueur.* FROM competence_joueur LEFT JOIN competence
on competence.id_competence= competence_joueur.id_competence WHERE pseudo = "'
.$_SESSION['pseudo'].'"
AND sur_joueur="1"'
)or die(mysql_error());

echo
'<table style="border:0px; margin:0px; padding:0px; display:inline">
<tr>'
;

while (
$donnees_competence = mysql_fetch_array($reponse)){

echo
'<td><form style="margin:0px; padding:0px; display:inline" action="competence.php" method="post">
<input type= "hidden" name="comp_joueur" value="'
.$id_joueur.'" />
<input type='
hidden' name="utiliser_comp"value="'.$donnees_competence['id_competence'].'" />
<input type="image" src="competence/'
.$donnees_competence['image'].'.jpg" />
</form></td>'
}

echo
'</tr></table>';
?>



Ca pourrait aussi être fait en Javascript, mais le problème c'est que si l'utilisateur l'a désactivé le formulaire risque de ne plus marcher.



Tu dois aussi avoir la possibilité d'utiliser tableau dans tes fomulaires, en remplaçant:
Code PHP :
<?php 
echo'<input type="image" src="competence/'.$donnees_competence['image'].'.jpg" name="utiliser_comp"
value="'
.$donnees_competence['id_competence'].'" />';
par
Code PHP :
<?php 
echo'<input type="image" src="competence/'.$donnees_competence['image'].'.jpg" name="utiliser_comp['.$donnees_competence['id_competence'].']"
value="'
.$donnees_competence['id_competence'].'" />
<input type="hidden" name="hidden_utiliser_comp['
.$donnees_competence['id_competence'].']" value="'.$donnees_competence['id_competence'].'" />';

Après dans ta récupération du formulaire, il doit te suffire de faire quelque chose dans ce goût:
Code PHP :
<?php 
foreach ($_POST['utiliser_comp'] as $index => $value)
{
if (
$value != "")
$result = $_POST['hidden_utiliser_comp'][$index];
}

A vérifier, je suis sûr de rien sur ce coup. Pas eut le temps de vérifier


RE: Input type image sous IE.. - Kassak - 22-05-2008

Je pourrais en effet faire un formulaire pour chaque competence, et je pense que je vais faire ça, merci de me rapeller cette solution, je l'avais deja faites avant, j'avais changé, mais je pense que c'est la meilleure solution.

Je m'en vais de ce pas modifier tous mes scripts, je dois avoir 5 ou 6 affichages de ce genre, je vous dis les comportements ensuite sur ie, mais il ne devrait pas y avoir de souci.