Se connecter / S'enregistrer

Résolu Bouton input type image

Solutions (23)
Tags :
  • Input
  • Php
  • Programmation
  • Png
, Maître Yoda |
Bonjour tout le monde.

Pour une question de beauté, j'ai remplacé les boutons normaux, par des boutons de type image comme ceci :

  1. <form action="#" >
  2. <input type="image" src="img/200.png" name="b1" value="b1">
  3. <input type="image" src="img/200.png" name="b2" value="b2">
  4. <input type="image" src="img/200.png" name="b3" value="b3">
  5.  
  6. </form>


mais le soucie c'est que je n'arrive pas a faire le traitement lors de l'appui sur le bouton comme je faisais d'habitude :

  1. <?php
  2. if(isset($_GET['Fitness'])){
  3. .....
  4. }
  5.  
  6.  
  7. ?>


Auriez vous une solution a mon problème s'il vous plait ?

Je vous remercie par avance.
Contenus similaires
Meilleure solution
partage
|
On va dire que je réfléchis 30s:
  1. <table border="1">
  2. <thead>
  3. <tr>
  4. <td class="col1">PROGRAMME</td>
  5. <td class="col2">EDITER</td>
  6. <td class="col3">SUPPRIMER</td>
  7. </tr>
  8. </thead>
  9. <?php
  10. $Ld1_retour =''; //id_département clé de la liste déroulante 1
  11. $Ld2_retour =''; //id_commune clé de la liste déroulante 2
  12. $Ld3_retour ='';
  13. if(isset($_GET['Ld1']) && isset($_GET['Ld2']) && isset($_GET['Ld3'])){
  14. $Ld1_retour = $_GET['Ld1'];
  15. $Ld2_retour = $_GET['Ld2'];
  16. $Ld3_retour = $_GET['Ld3'];
  17. }
  18.  
  19. if (($Ld1_retour!='')&&($Ld2_retour!='') && ($Ld3_retour!='')) {
  20. /*****************************************************************************************************/
  21. /******************************* Bloqué ici pour l'insertion du tableau **************************************/
  22. /**************************************************************************************************/
  23. $rq="SELECT * from programme WHERE module='$Ld1_retour' AND groupe='$Ld2_retour' AND niveau='$Ld3_retour'";
  24. $rq_pos_val=0;
  25. $result= mysql_query ($rq) or die ("Select impossible");
  26. if (mysql_num_rows($result) != 0) {
  27. while ($row = mysql_fetch_row($result)) {
  28. $retour .= '<tr><td class="col1">'.$data['nomFR'].'</td>';
  29. $retour .= '<td class="col2"><a href="programme.php?id_prg='.$data['id_prg'].'" /><img src="img/modif.png" alt="Modif"/></td>';
  30. $retour .= '<td class="col3"><a href="supression_prg.php?id='.$data['id_prg'].'"><img src="img/sup.png" alt="Supp"/></a></td></tr>';
  31. }
  32. }
  33. mysql_free_result($result);
  34. }
  35. echo $retour;
  36. ?>
  37. </table>


Franchement, ce n'est vraiment pas compliqué là...
  • Commenter cette solution |
Score
0
òh
òi
|
<input type=image" src="img/200.png" name="b1" value="b1">
<input type="image" src="img/200.png" name="b1" value="b2">
<input type="image" src="img/200.png" name="b1" value="b2">


<?
if(isset($_get[b1]) $b1=$_get[b1];
...
$b1 prend la valeur sur laquelle on a cliqué...

  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Meilleure réponse sélectionnée par danydan01.
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Oui j'ai bien réalisé cela déjà mais je bloque ici :

  1. $Ld1_retour =''; //id_département clé de la liste déroulante 1
  2. $Ld2_retour =''; //id_commune clé de la liste déroulante 2
  3. $Ld3_retour ='';
  4.  
  5. if(isset($_GET['Ld1']) && isset($_GET['Ld2']) && isset($_GET['Ld3'])){
  6. $Ld1_retour = $_GET['Ld1'];
  7. $Ld2_retour = $_GET['Ld2'];
  8. $Ld3_retour = $_GET['Ld3'];
  9.  
  10.  
  11. }
  12.  
  13. if (($Ld1_retour!='')&&($Ld2_retour!='') && ($Ld3_retour!='')) {
  14. /*****************************************************************************************************/
  15. /******************************* Bloqué ici pour l'insertion du tableau **************************************/
  16. /**************************************************************************************************/
  17.  
  18. $rq="SELECT * from programme WHERE module='$Ld1_retour' AND groupe='$Ld2_retour' AND niveau='$Ld3_retour'";
  19. $rq_pos_val=0;
  20. $result= mysql_query ($rq) or die ("Select impossible");
  21. $retour = '<select name="Liste4" id="Liste4" size="1" onchange="ValideLd4(this[this.selectedIndex].value);">';
  22. $retour .= '<option selected value="">Choisir...</option>';
  23.  
  24. if (mysql_num_rows($result) != 0) {
  25. while ($row = mysql_fetch_row($result)) {
  26. $retour .= '<option value="'. $row[$rq_pos_val] .'">'. utf8_encode($row[$rq_pos_val]) .'</option>';
  27. }
  28. $retour .= '</select>';
  29. } else {
  30. $retour = '<input id="Liste4" type="text" size="10" value="Aucune valeur" disabled>';
  31. }
  32. mysql_free_result($result);
  33. }else{
  34. $retour = '<select name="Liste4" id="Liste4" size="1" disabled><option>Aucune valeur</option></select>';
  35. }
  36. echo $retour;*/
  37.  
  38.  
  39. ?>
  • Commenter cette réponse |
Score
0
òh
òi
|
Comme pour les autres fichiers, avec des $_GET, tu dois pouvoir obtenir tes $Ld1_retour, ....
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
J'ai effectué ce que tu m'as dit crazycat@id, j'ai rajouté la fonction ValideLd4 dans mon fichier index et aussi une div pour mon include :

  1. <span id="niv4">
  2. <? include 'Appli/ValideLd4.php'; ?></span> 


Mais j'arrive pas a voir pour remplir le tableau...
Jusqu'à maintenant je faisais ceci :

  1. <table border="1">
  2. <thead>
  3. <tr>
  4. <td class="col1">PROGRAMME</td>
  5. <td class="col2">EDITER</td>
  6. <td class="col3">SUPPRIMER</td>
  7. </tr>
  8. </thead>
  9. <?php
  10. $sql="SELECT * FROM programme WHERE module = '$Ld1_retour' AND groupe = '$Ld2_retour' AND niveau = '$Ld3_retour' ";
  11. $query = mysql_query($sql) or die(mysql_error());
  12. while ($data = mysql_fetch_assoc($query)){
  13.  
  14. echo('<tr><td class="col1">'.$data['nomFR'].'</td>');
  15. echo('<td class="col2"><a href="programme.php?id_prg='.$data['id_prg'].'" /><img src="img/modif.png" alt="Modif"/></td>');
  16. echo('<td class="col3"><a href="supression_prg.php?id='.$data['id_prg'].'"><img src="img/sup.png" alt="Supp"/></a></td></tr>');
  17.  
  18. }
  19. ?>
  20.  
  21. </table>


Comment faire pour intégrer cela dans mon fichier ValideLd4 en sachant qu'il n'y a que du php ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Il te suffit de rajouter un div avec un id bien défini (par exemple <div id="niv4"></div>) et que ton 3ème select ait : onchange="ValideLd4(this[this.selectedIndex].value);"
Et en JS:
  1. function ValideLd4(val) {
  2. Ld3Id=val; //id_commune
  3. id_liste='4'; //Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
  4. var LD_URL = 'ValideLd4.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id+'&Ld3Id='+Ld3Id;
  5. if (Ld3Id!='') {var LD_URL = 'ValideLd4.php';}
  6. ObjetXHR(LD_URL)
  7. }

Bien sûr, ValideLd4.php doit retourner un tableau html, pas un select.
Ce n'est pas testé, mais ça doit à peu près fonctionner.

N.B.: tout ton code JS peut être très optimisé
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
La j'arrive maintenant à débloquer les 3 listes déroulantes à l'aide du code ci-dessus.
Je voudrais savoir comment faire lors de la 3ème sélection, débloqué un tableau qui affiche les résultats de la bdd suivant les 3 choix effectué ?
Faut-il que je passe par un 3ème fichier ValideLd4.php ? et saurais tu comment faire cela en javascript php ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Je ne vois pas trop ton souci.
Ton formulaire envoie en get le contenu du formulaire, donc si tu fais un joli var_dump($_GET) dans index.php, tu verras que tu as normalement les sélections faites.
Ou bien je ne comprends pas la question / le souci.
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Bonjour crazycat@id.

Je reviens vers toi car j'ai peaufiné ma liste lié mais j'ai des soucies.

J'ai 4 fichiers : (index.php, ValideLd1.php jusqu'à ValideLd3.php) que voicie:

index.php :

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>">
  2. <html xmlns="<a href="http://www.w3.org/1999/xhtml" rel="nofollow" target="_blank">http://www.w3.org/1999/xhtml</a>">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <title>Listes déroulantes pilotées par JavaScript Asynchrone et une Base de données</title>
  6.  
  7. <script type="text/javascript">
  8. var Ld1Id='';
  9. var Ld2Id='';
  10. var id_liste='';
  11.  
  12. function ValideLd2(val) {
  13. Ld1Id=val; //id_département
  14. id_liste='2';//Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
  15. var LD_URL = 'ValideLd2.php?Ld1='+Ld1Id;
  16. ObjetXHR(LD_URL)
  17. // Réinitialisation de Ld3 si modification de LD1 après passage en Ld2
  18. if (Ld2Id!='') {ValideLd3(''); }
  19. }
  20.  
  21. function ValideLd3(val) {
  22. Ld2Id=val; //id_commune
  23. id_liste='3'; //Utilisé dans la fonction ChargeLd() pour identifier la liste déroulante
  24. var LD_URL = 'ValideLd3.php?Ld1='+Ld1Id+'&Ld2='+Ld2Id;
  25. if (Ld2Id=='') {var LD_URL = 'ValideLd3.php';}
  26. ObjetXHR(LD_URL)
  27. }
  28.  
  29. function ObjetXHR(LD_URL) {
  30. //creation de l'objet XMLHttpRequest
  31. if (window.XMLHttpRequest) { // Mozilla,...
  32. xmlhttp=new XMLHttpRequest();
  33. if (xmlhttp.overrideMimeType) {
  34. xmlhttp.overrideMimeType('text/xml');
  35. }
  36. xmlhttp.onreadystatechange=ChargeLd;
  37. xmlhttp.open("GET", LD_URL, true);
  38. xmlhttp.send(null);
  39. } else if (window.ActiveXObject) { //IE
  40. xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
  41. if (xmlhttp) {
  42. xmlhttp.onreadystatechange=ChargeLd;
  43. xmlhttp.open('GET', LD_URL, false);
  44. xmlhttp.send();
  45. }
  46. }
  47. // Bouton non apparent car modification de LD1 ou Ld2
  48. document.getElementById('buttons').style.display='none';
  49. }
  50.  
  51. // fonction pour manipuler l'appel asynchrone
  52. function ChargeLd() {
  53. if (xmlhttp.readyState==4) {
  54. if (xmlhttp.status==200) {
  55. //span id="niv2" ou "niv3"
  56. document.getElementById('niv'+id_liste).innerHTML=xmlhttp.responseText;
  57. if (xmlhttp.responseText.indexOf('disabled')<=0) {
  58. //focus sur liste déroulante 2 ou 3
  59. document.getElementById('Liste'+id_liste).focus();
  60. }
  61. }
  62. }
  63. }
  64.  
  65. function Affiche_Btn() {
  66. document.getElementById('buttons').style.display='inline';
  67. }
  68. </script>
  69.  
  70. <style>
  71. #buttons {
  72. display: none;
  73. }
  74.  
  75.  
  76.  
  77.  
  78. </style>
  79. </head>
  80.  
  81. <body>
  82. <noscript>
  83. <p>Cette page nécessite que JavaScript soit activé; dans votre navigateur
  84. </noscript>
  85.  
  86. <div id="Les3LD">
  87. <p>Selectionnez votre choix dans les listes déroulantes:</p>
  88. <form method="get" action="index.php">
  89. <?php
  90. include 'ValideLd1.php'; ?>  <!--Pour remplir la liste déroulante 1-->
  91. <span id="niv2">
  92. <? include 'ValideLd2.php'; ?></span>  <!--Pour remplir la liste déroulante 2-->
  93. <span id="niv3">
  94. <? include 'ValideLd3.php'; ?></span>  <!--Pour remplir la liste déroulante 3-->
  95. <span id="buttons">
  96. <input type="submit" value="Valider">
  97. </span>
  98. </form>
  99.  
  100. </div>
  101. </body>
  102. </html>


valideLd1.php
  1. <?PHP
  2. include('config.php');
  3. $rq="SELECT DISTINCT module from programme order by module";
  4. $rq_pos_val=0; //position dans le SQL de la valeur de la liste déroulante idem dans ValideLd2.php et ValideLd3.php
  5.  
  6. $result= mysql_query ($rq) or die ("Select impossible");
  7. $retour = '<select name="Liste1" id="Liste1" size="1" onchange="ValideLd2(this[this.selectedIndex].value);">';
  8. $retour .= '<option selected value="">Choisir...</option>';
  9. if (mysql_num_rows($result) != 0) {
  10. while ($row = mysql_fetch_row($result)) {
  11. $retour .= '<option value="'. $row[$rq_pos_val] .'">'. $row[$rq_pos_val] .'</option>';
  12. }
  13. $retour .= '</select>';
  14. } else {
  15. $retour = '<input id="size" type="text" size="10" value="Aucune valeur" disabled>';
  16. }
  17. mysql_free_result($result);
  18. echo $retour;
  19. ?>


valideLd2.php
  1. <?PHP
  2. include('config.php');
  3. $Ld1_retour =''; //id_d걡rtement cl顤e la liste d곯ulante 1
  4.  
  5. if (isset($_GET['Ld1'])) {$Ld1_retour = $_GET['Ld1'];}
  6.  
  7. if ($Ld1_retour!='') {
  8. $rq="SELECT DISTINCT groupe from programme where module='$Ld1_retour' order by groupe";
  9. $rq_pos_val=0;
  10. $result= mysql_query ($rq) or die ("Select impossible");
  11. $retour = '<select name="Liste2" id="Liste2" size="1" onchange="ValideLd3(this[this.selectedIndex].value);">';
  12. $retour .= '<option selected value="">Choisir...</option>';
  13.  
  14. if (mysql_num_rows($result) != 0) {
  15. while ($row = mysql_fetch_row($result)) {
  16. $retour .= '<option value="'. utf8_encode($row[$rq_pos_val]) .'">'. utf8_encode($row[$rq_pos_val]) .'</option>';
  17. }
  18. $retour .= '</select>';
  19. } else {
  20. $retour = '<input id="Liste2" type="text" size="10" value="Aucune valeur" disabled>';
  21. }
  22. mysql_free_result($result);
  23. }else{
  24. $retour = '<select name="Liste2" id="Liste2" size="1" disabled><option>Aucune valeur</option></select>';
  25. }
  26. echo $retour;
  27. ?>


valideLd3.php
  1. <?PHP
  2. include('config.php');
  3. $Ld1_retour =''; //id_département clé de la liste déroulante 1
  4. $Ld2_retour =''; //id_commune clé de la liste déroulante 2
  5.  
  6. if (isset($_GET['Ld1'])) {$Ld1_retour = $_GET['Ld1'];}
  7. if (isset($_GET['Ld2'])) {$Ld2_retour = utf8_decode($_GET['Ld2']); $Ld2_retour = str_replace('?','é',$Ld2_retour); }
  8.  
  9. if (($Ld1_retour!='')&&($Ld2_retour!='')) {
  10.  
  11. $rq="SELECT DISTINCT niveau from programme where module='$Ld1_retour' AND groupe='$Ld2_retour' order by niveau";
  12. $rq_pos_val=0;
  13. $result= mysql_query ($rq) or die ("Select impossible");
  14. $retour = '<select name="Liste3" id="Liste3" size="1" onchange="Affiche_Btn();">';
  15. $retour .= '<option selected value="">Choisir...</option>';
  16.  
  17. if (mysql_num_rows($result) != 0) {
  18. while ($row = mysql_fetch_row($result)) {
  19. $retour .= '<option value="'. $row[$rq_pos_val] .'">'. utf8_encode($row[$rq_pos_val]) .'</option>';
  20. }
  21. $retour .= '</select>';
  22. } else {
  23. $retour = '<input id="Liste3" type="text" size="10" value="Aucune valeur" disabled>';
  24. }
  25. mysql_free_result($result);
  26. }else{
  27. $retour = '<select name="Liste3" id="Liste3" size="1" disabled><option>Aucune valeur</option></select>';
  28. }
  29. echo $retour;
  30. ?>


Le soucie étant que je n'arrive pas a gérer comment récupérer les champs que le clients sélectionne ?

Pourrez tu m'aider ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Ok, donc tu dois bien faire tes requêtes.
La première, pour sortir les styles, sera du genre:
  1. SELECT DISTINCT style FROM table

La seconde, pour les groupes, en partant du principe que le style est selectionné, sera:
  1. SELECT DISTINCT groupe FROM table WHERE style='<le_style>'

Et ainsi de suite.

Par contre, je te conseillerais de faire des tables de référence (styles, groupes, ...) ce qui rendra le système plus souple.
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
non les 3 champs font partie de la même table, donc oui je n'ai qu'une seul table.
  • Commenter cette réponse |
Score
0
òh
òi
|
Quelle est la structure de ta base ? Une seule table ? Plusieurs ?
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Ouai je sais bien que j'ai mon post initial mais depuis je galère a trouver la façon de le réaliser...
j'ai regarder les listes lié en ajax mais par exemple dans ma base de donnée, j'ai ma table qui contient les trois champs style groupe et musique.
Lors de réaliser ma 1er liste avec les données compris dans ma table, si j'ai 10 entrées dans ma table avec comme style "rock" alors j'aurais dans ma liste 10 fois Rock...
C'est pour cela que je voulais figer moi même les données des listes...

En tout cas je vais continuer a regarder de mon coté, sinon j'attendrais ton exemple se soir pour me donnée une idée.

En tout cas je te remercie beaucoup :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Tout dépend de ton choix technique: pur JS ou ajax (cf ton post initial à ce sujet).
Voici deux liens (en anglais) sur la méthode JS, j'essayerai de te faire un exemple perso (et plus simple) ce soir (je manque de temps en ce moment):
http://myweb.tiscali.co.uk/cornford/example_scripts/dep...
http://www.weberdev.com/get_example-4505.html
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Oui je le saurais pour la prochaine fois ;) 

Juste j'ai encore une petite question.

J'ai dans ma table 3 choix, qui dépende les 1 des autre.
j'ai 2 styles musicaux qui ont chacun 3 groupes qui ont eux même 3 musique chacun.
Le soucie c'est que je vois vraiment pas comment faire pour que mon utilisateur puisse sélectionner son style, suivant le style qu'il choisi, il a les groupes rattaché a se style, et ensuite suivant le groupe choisi il y trouve les musiques.

Saurez tu comment réaliser cela ? ou aurez tu des exemples pour que je puisse le réaliser ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Je pense qu'il y a une transformation interne du "."
D'où l'intérêt, lorsque tu veux traiter des données de formulaire, de toujours faire un var_dump($_REQUEST) pour savoir exactement ce que voit PHP.
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
non non c'est moi qui ai fait une faute de frappe...

En tout cas j'ai trouver le soucie, je ne sais pas pourquoi mais il faut mettre b1_x et non b1.x :pfff: 
Pourquoi je ne sais pas mais bon cela fonctionne.

  • Commenter cette réponse |
Score
0
òh
òi
|
b1.x && b2.y ? Comment tu cliques 2 boutons à la fois ?
Et il te suffit d'un seul (x ou y), pas la peine de vérifier les deux.
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
Non j'avais même essayer de faire comme tu la marqué dans le dernier post et cela ne fonctionne pas non plus :heink: 

  1. <?php
  2.  
  3. if(isset($_GET['b1.x']) && isset($_GET['b2.y'])){
  4. echo "BONJOUR";
  5. }
  6.  
  7.  
  8. ?>
  9. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "<a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow" target="_blank">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>">
  10. <html xmlns="<a href="http://www.w3.org/1999/xhtml" rel="nofollow" target="_blank">http://www.w3.org/1999/xhtml</a>">
  11. <head>
  12. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  13. </head>
  14. <body>
  15.  
  16. <form method="GET" action="#" >
  17. <input type="image" src="200.png" name="b1" value="b1">
  18.  
  19. </form>
  20.  
  21.  
  22.  
  23. </body>
  24. </html>


Voici le code a par si c'est moi qui est fou et qui n'arrive pas a le faire marcher...
  • Commenter cette réponse |
Score
0
òh
òi
|
C'est tout à fait normal, un input type image envoie les coordonnées.
Citation :
In addition to sending the form data, the web browser sends the x,y coordinate of where the user clicked. If the image input is not given a name then the browser sends the x and y coordinates as the "x" and "y" input fields.

Donc, il faut que tu fasses un isset($_GET['b1.x']) ou isset($_GET['b1.y'])
  • Commenter cette réponse |
Score
0
òh
òi
, Maître Yoda |
désolé crazycat@id je me suis drôlement embrouillé dans mon copier collé

j'ai bien mit la method="get" et dans le isset ce n'est pas fitness mais b1 par exemple ou b2...

lors de l'appui sur le bouton cela me marque le nom du bouton appuyé et ses coordonnées dans mon url :

  1. http://localhost/?b1.x=92&b1.y=118#


et j’avoue que je ne comprend pas grand chose...
  • Commenter cette réponse |
Score
0
òh
òi
|
Où est le champ appelé Fitness ?
Où est l'attribut method="get" ?
Que donne un var_dump($_REQUEST) ?
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS