Se connecter / S'enregistrer

Résolu [JavaScript] Lien sur Bouton Radio

Solutions (17)
Tags :
  • Javascript
  • Radio
  • Echo
  • Programmation
|
Salut à tous je voulais savoir si il était possible d'affecter un lien à un bouton radio, je m'explique une fois que j'ai saisie des donnée dans un formulaire, une page me permet de les consulter sous former de tableau :

  1. <table border="1">
  2.  
  3. <tr><th></th><th>Nom demandeur</th><th>Nom rédacteur</th><th>Numéro chantier</th><th>Libellé</th><th>Agence</th><th>Plan</th><th>Date demande</th><th>Date réalisation</th><th>Prog/Interv</th><th>Commentaire</th></tr>
  4.  
  5. <?php
  6.  
  7. $ligne=mysql_fetch_array($resultat);
  8.  
  9. while ($ligne!=false)
  10. {
  11. echo "<tr>";
  12. echo "<td align='center'>"."<input type='radio' name='num_chan' value='' href='fiche_dem.php'>"."</td>"."<td align='center'>".$ligne["nom_dem"]."</td>"."<td align='center'>".$ligne["nom_redac"]."</td>"."<td align='center'>".$ligne["num_chan"]."</td>"."<td align='center'>".$ligne["libel"]."</td>"."<td align='center'>".$ligne["agence"]."</td>"."<td align='center'>".$ligne["plan"]."</td>"."<td align='center'>".$ligne["date_dem"]."</td>"."<td align='center'>".$ligne["date_real"]."</td>"."<td align='center'>".$ligne["proginter"]."</td>"."<td align='center'>".$ligne["comm1"]."</td>";
  13. echo "</tr>";
  14.  
  15. $ligne=mysql_fetch_array($resultat);
  16. }
  17.  
  18. ?>


Le problème se pose donc au niveau de l'action à affecter au bouton radio (si il y en a une ^^).

Merci d'avance pour vôtre aide :) 

EDIT : J'aimerai éviter autant que possible, d'avoir à mettre un bouton submit ;) 
Contenus similaires
Meilleure solution
partage
|
Ce n'est pas du PHP, mais plutôt du JavaScript.
Et si tu veux que la sélection du radio fasse un submit, il te suffit d'ajouter dedans:
  1. onClick="document.getElementById('Form').submit();"

"Form" étant l'id du formulaire
  • Commenter cette solution |
Score
0
òh
òi
|
Salut désoler si tu l'as pris dans ce sens, mais je t'ai juste envoyer un code modifier :/ 

Le problème viens du fait que quelque soit le nom de l'élément, il est vide à chaque fois :s

Donc j'ai le droit à un undefined index à chaque chaque fois au niveau de la requête SQL.

EDIT : C'est bon c'est réglé le problème venait juste du fait que la requête sql n'était pas à mettre dans la page liste_dem mais dans la page fiche_dem. Je te remercie pour l'aide apporté et cette fois promis c'est fini, je t'embête plus ! =)
  • Commenter cette réponse |
Score
0
òh
òi
|
Je résume...
crazycat@idn a dit :
  1. $requete = "SELECT * FROM demande WHERE `ID`=".$_POST['num_chan'];

Note le $_POST['num_chan']...

gamer42 a dit :
j'ai deux erreurs qui apparaissent :
Notice: Undefined index: id in c:\program files\easyphp1-7\www\liste_dem.php on line 77
erreurErreur de syntaxe près de '' à la ligne 1
pour ce code :
  1. <?php
  2. include("connexion.php");
  3. $requete="SELECT * FROM demande WHERE `id`= ".$_POST['id'];
  4. ...

Regarde juste les différences...

Je te rappelle que ton formulaire contient:
  1. echo '<input type="radio" name="num_chan" value="', $ligne['ID'], '" onClick="document.getElementById(\'etude', $ligne['ID'], '\').submit();" />', chr(13), chr(10);

Autrement dit, on envoit un élément qui s'appelle num_chan et qui contient la valeur $ligne['ID'].

Sur ce, je signale que je ne répondrai pas aux prochaines questions de ce genre qui reflètent une absence totale d'effort pour essayer de comprendre le code.
  • Commenter cette réponse |
Score
0
òh
òi
|
Désolé pour le double poste.

Je viens de retenter avec le code modifié :

j'ai deux erreurs qui apparaissent :


Notice: Undefined index: id in c:\program files\easyphp1-7\www\liste_dem.php on line 77
erreurErreur de syntaxe près de '' à la ligne 1

pour ce code :

  1. <?php
  2. include("connexion.php");
  3. $requete="SELECT * FROM demande WHERE `id`= ".$_POST['id'];
  4.  
  5. mysql_query($requete) or die("erreur".mysql_error());
  6.  
  7. $resultat=mysql_query($requete);
  8.  
  9. ?>
  10.  
  11. <table border="1">
  12. <tr><th></th><th>Numéro demande</th><th>Nom demandeur</th><th>Numéro chantier</th><th>Nom du site</th><th>Date demande</th><th>Comptabilisé</th></tr>
  13.  
  14. <?php
  15.  
  16. while ( $ligne=mysql_fetch_array($resultat) ) {
  17. echo '<tr><td align="center">', chr(13), chr(10);
  18. echo '<form id="etude', $ligne['id'], '" name="etude', $ligne['id'], ' method="post" action="fiche_dem.php">', chr(13), chr(10);
  19. echo '<input type="radio" name="id" value="', $ligne['id'], '" onClick="document.getElementById(\'etude', $ligne['id'], '\').submit();" />', chr(13), chr(10);
  20. echo '</form>', chr(13), chr(10);
  21. echo '</td>
  22. <td align="center">', $ligne['id'], '</td>
  23. <td align="center">', $ligne['nom_dem'], '</td>
  24. <td align="center">', $ligne['num_chan'], '</td>
  25. <td align="center">', $ligne['libel'], '</td>
  26. <td align="center">', $ligne['date_dem'], '</td>
  27. <td align="center">', $ligne['date_dem'], '</td>', chr(13), chr(10);
  28. echo "</tr>";
  29. }
  30. ?>
  31. </table>


Pour la première je suis larguer je ne vois pas où pourrai être l'erreur, pour la seconde j'ai tourner et retourner la requête dans tous les sens pas moyen :/ 

EDIT : j'ai effectuer une modification :

  1. $ide=$_POST['id'];
  2. $requete="SELECT * FROM demande WHERE `id`='$ide'";


Du coup je n'ai plus l'erreur de syntaxe mais je garde quand même l'undefined index sur $_POST['id'] :/ 
  • Commenter cette réponse |
Score
0
òh
òi
|
Ah ok !! Merci =D
  • Commenter cette réponse |
Score
0
òh
òi
|
D'accord.
Alors peut-être que tu n'as pas bien compris le principe des requêtes SQL. Dans ton fichier de traitement, tu as:
  1. $requete="SELECT * FROM demande ORDER BY nom_dem";

Est-ce que faire intervenir l'id dans la requête ne te semblerait pas utile ?
  1. $requete = "SELECT * FROM demande WHERE `ID`=".$_POST['num_chan'];

  • Commenter cette réponse |
Score
0
òh
òi
|
Désoler je me suis très mal exprimé :s.

Je voulais dire que peut importe le bouton radio sur lequel je cliquais, c'était toujours la même fiche demande qui apparait.

EX: j'ai 3 demande avec respectivement ID : 12-13-14

Que je clique sur le bouton radio correspondant à la 12-13 ou 14, j'ai toujours la fiche de la demande 12 qui apparait.


  • Commenter cette réponse |
Score
0
òh
òi
|
Mais c'est normal. Tu as demandé à ce que sélectionner un radio fasse aller sur la page correspondant à cette étude.
Avec ce principe, tu ne peux pas sélectionner plusieurs radios, donc ça ne peut pas marcher autrement.

C'est une question de logique et de conception défaillante.

Si tu veux pouvoir sélectionner plusieurs études, il te faut obligatoirement un bouton pour valider ta série de sélections.
  • Commenter cette réponse |
Score
0
òh
òi
|
Je peut pas plutôt faire avec $_POST['ID'] car c'est ce champ que j'ai défini en clé primaire, sachant que num_chan peut exister en doublon, c'est à dire que je peut avoir plusieur demande pour un num_chan ?

EDIT : je viens de tester et ça fonctionne pareil, c'est à dire que la page ne m'affiche qu'une seul demande, peut importe le radio sur lequel je clique :/ 
  • Commenter cette réponse |
Score
0
òh
òi
|
Houla, je suis étonné que ton premier script fonctionne bien:
  1. <?
  2. include("connexion.php" );
  3. $requete="SELECT * FROM demande ORDER BY nom_dem";
  4. $resultat=mysql_query($requete);
  5. ?>
  6. <table border="1">
  7. <tr><th></th><th>ID</th><th>Nom demandeur</th><th>Nom rédacteur</th><th>Numéro chantier</th><th>Libellé</th><th>Agence</th><th>Plan</th><th>Date demande</th><th>Date réalisation</th><th>Prog/Interv</th><th>Commentaire</th></tr>
  8. <?php
  9. while ( $ligne=mysql_fetch_array($resultat) ) {
  10. echo '<tr><td align="center">', chr(13), chr(10);
  11. echo '<form id="etude', $ligne['ID'], '" name="etude', $ligne['ID'], ' method="post" action="fiche_dem.php">', chr(13), chr(10);
  12. echo '<input type="radio" name="num_chan" value="', $ligne['ID'], '" onClick="document.getElementById(\'etude', $ligne['ID'], '\').submit();" />', chr(13), chr(10);
  13. echo '</form>', chr(13), chr(10);
  14. echo '</td>
  15. <td align="center">', $ligne['ID'], '</td>
  16. <td align="center">', $ligne['nom_dem'], '</td>
  17. <td align="center">', $ligne['nom_redac'], '</td>
  18. <td align="center">', $ligne['num_chan'], '</td>
  19. <td align="center">', $ligne['libel'], '</td>
  20. <td align="center">', $ligne['agence'], '</td>
  21. <td align="center">', $ligne['plan'], '</td>
  22. <td align="center">', $ligne['date_dem'], '</td>
  23. <td align="center">', $ligne['date_real'], '</td>
  24. <td align="center">', $ligne['proginter'], '</td>
  25. <td align="center">', $ligne['comm1'], '</td>', chr(13), chr(10);
  26. echo "</tr>";
  27. }
  28. ?>
  29. </table>
  30. <a href="demande.php">Menu</a>

Avec ça, ça sera plus propre et tu récupère donc le formulaire correspondant à chaque ligne, avec $_POST['num_chan'] qui contient l'id de l'étude choisie.
  • Commenter cette réponse |
Score
0
òh
òi
|
Salut, pour cette partie du programme 2 pages interviennent :

- La première contient un tableau ou sont référencés des demandes en attente :

  1. <?
  2.  
  3. include("connexion.php");
  4.  
  5. $requete="SELECT * FROM demande ORDER BY nom_dem";
  6.  
  7. $resultat=mysql_query($requete);
  8.  
  9. ?>
  10.  
  11. <table border="1">
  12.  
  13. <tr><th></th><th>ID</th><th>Nom demandeur</th><th>Nom rédacteur</th><th>Numéro chantier</th><th>Libellé</th><th>Agence</th><th>Plan</th><th>Date demande</th><th>Date réalisation</th><th>Prog/Interv</th><th>Commentaire</th></tr>
  14.  
  15. <?php
  16.  
  17. $ligne=mysql_fetch_array($resultat);
  18.  
  19. while ($ligne!=false)
  20. {
  21. echo "<tr>";
  22. echo "<td align='center'>"."<form id='etude1' name='form4' method='post' action='fiche_dem.php'>"."<input type='radio' name='num_chan' value='checked' onClick=document.getElementById('etude1').submit();>"."</form>"."</td>"."<td align='center'>".$ligne["ID"]."</td>"."<td align='center'>".$ligne["nom_dem"]."</td>"."<td align='center'>".$ligne["nom_redac"]."</td>"."<td align='center'>".$ligne["num_chan"]."</td>"."<td align='center'>".$ligne["libel"]."</td>"."<td align='center'>".$ligne["agence"]."</td>"."<td align='center'>".$ligne["plan"]."</td>"."<td align='center'>".$ligne["date_dem"]."</td>"."<td align='center'>".$ligne["date_real"]."</td>"."<td align='center'>".$ligne["proginter"]."</td>"."<td align='center'>".$ligne["comm1"]."</td>";
  23. echo "</tr>";
  24.  
  25. $ligne=mysql_fetch_array($resultat);
  26. }
  27.  
  28. ?>
  29.  
  30. </table>
  31.  
  32. <a href="demande.php">Menu</a>


- La seconde où apparaît le formulaire (celui pour lequel tu m'as déjà aidé) :

  1. <?
  2.  
  3. include ("connexion.php");
  4.  
  5. $req1="SELECT * FROM demande";
  6.  
  7. $demande=mysql_query($req1) or die("erreur".mysql_error());
  8.  
  9. $result=mysql_fetch_array($demande);
  10.  
  11. mysql_close();
  12.  
  13. ?>
  14.  
  15. <form name="form1" method="post" action="modification_dem.php">
  16.  
  17. <table border="0" cellpadding="0" cellspacing="0" width="100%" bordercolor="#FF3300">
  18.  
  19. <tr align="center">Nom demandeur : <input type="text" name="nom_dem" value="<?php echo $result['nom_dem'];?>"/></tr></br>
  20. <tr align="center">Nom rédacteur : <input type="text" name="nom_redac" value="<?php echo $result['nom_redac'];?>"/></tr></br>
  21. <tr align="center">Numéro chantier : <input type="text" name="num_chan" value="<?php echo $result['num_chan'];?>"/>Libellé : <input type="text" name="libel" value="<?php echo $result['libel'];?>"/></tr></br>
  22.  
  23. <? $Agence = array(13, 31, 42, 69, 92);
  24. echo '<tr align="center">Agence : ';
  25. foreach($Agence as $ag) {
  26. if ($ag == $result['agence']) {
  27. echo $ag, '<input type="radio" name="agence" value=", $ag, " checked="checked" />';
  28. } else {
  29. echo $ag, '<input type="radio" name="agence" value=", $ag, " />';
  30. }
  31. }
  32. echo '</tr>', chr(13), chr(10);
  33. ?>
  34.  
  35. </br>
  36.  
  37. <? $Plan = array('oui','non');
  38. echo '<tr align="center">Plan et architecture disponible au BE : ';
  39. foreach($Plan as $pl) {
  40. if ($pl == $result['plan']) {
  41. echo $pl, '<input type="radio" name="plan" value=", $pl, " checked="checked" />';
  42. } else {
  43. echo $pl, '<input type="radio" name="agence" value=", $pl, " />';
  44. }
  45. }
  46. echo '</tr>', chr(13), chr(10);
  47. ?>
  48.  
  49. </br>
  50.  
  51. <tr align="center">Date de la demande : <input type="text" name="date_dem" value="<?php echo $result['date_dem'];?>"/> (format : AAAA/MM/JJ)</tr></br>
  52. <tr align="center">Date de réalisation : <input type="text" name="date_real" value="<?php echo $result['date_real'];?>"/> (format : AAAA/MM/JJ) *Si modification de la date de réalisation, envoyer un mail à <a href="mailto:bertrand.gougis@fr.prosegur.com">Bertrand Gougis</a> ou à <a href="mailto:alain.tardy@fr.prosegur.com">Alain Tardy</a></tr></br>
  53.  
  54. <?php
  55.  
  56. $ProgramInterv = array('prog','inter');
  57. echo '<tr align="center">Type : ';
  58. foreach($ProgramInterv as $pi) {
  59. if ($pi == $result['proginter']) {
  60. echo $pi, '<input type="radio" name="proginter" value=", $pi, " checked="checked" />';
  61. } else {
  62. echo $pi, '<input type="radio" name="proginter" value=", $pi, " />';
  63. }
  64. }
  65. echo '</tr>', chr(13), chr(10);
  66. ?>
  67.  
  68. </br>
  69.  
  70. <tr align="center">Commentaire : <input type="text" name="comm1" value="<?php echo $result['comm1'];?>" size="100"/></tr></br>
  71.  
  72. </table>
  73.  
  74. </br>
  75. </br>
  76. </br>
  77. </br>
  78.  
  79. <input type="submit" value="Modifier Demande" name="form1"/> - <input type="reset" value="Vider"/>
  80.  
  81. <a href="demande.php">Menu</a>


  • Commenter cette réponse |
Score
0
òh
òi
|
Quand tu crées ton input radio, mets la valeur de l'id à atteindre en value, et dans la page de traitement tu peux le récupérer.
Mais là, sans connaitre plus ton système, je ne pourrais pas beaucoup t'aider.
  • Commenter cette réponse |
Score
0
òh
òi
|
Super merci, t'es extra parce que c'est un des petits points techniques qui m'empêches de boucler mon projet =D

Du coup tu pense que je pourrai me servir de ce morceau de code afin par exemple de cibler une demande précise ?

Je m'explique : comment faire en sorte qu'avec le premier bout de code que tu m'as donné (onClick="document.getElementById('Form').submit();"), je tombe exactement sur la demande 4 par exemple.

Car pour le moment lorsque je fais cela, je tombe uniquement sur la dernière demande saisie.

Désoler si tu trouve que j'abuse de ton temps mais pour le moment t'es la seule personne à avoir pu me répondre ;) 
  • Commenter cette réponse |
Score
0
òh
òi
|
En effet, tu as traité les radios comme des champs "normaux"... Je vais essayer de te faire ça proprement et optimisé:
  1. <?php
  2. // Liste des agences disponibles
  3. $agences = array(13, 31, 42, 69, 92);
  4. echo '<tr align="center">Agence : ';
  5. foreach($agences as $ag) {
  6. if ($ag == $result['agence']) {
  7. echo $ag, '<input type="radio" name="agence" value=", $ag, '" checked="checked" />';
  8. } else {
  9. echo $ag, '<input type="radio" name="agence" value=", $ag, '" />';
  10. }
  11. }
  12. echo '</tr>', chr(13), chr(10);

Je te laisse voir pour les autres :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Finalement j'ai une nouvelle question par rapport aux boutons radio :

Imaginons que je viennent de saisir une demande dans un formulaire ext...

Je veux pouvoir la visualiser et/ou la modifier. C'est la que le problème coince en effet j'ai ce code :

  1. <?
  2.  
  3. include ("connexion.php");
  4.  
  5. $req1="SELECT * FROM demande";
  6.  
  7. $demande=mysql_query($req1) or die("erreur".mysql_error());
  8.  
  9. $result=mysql_fetch_array($demande);
  10.  
  11. mysql_close();
  12.  
  13. ?>
  14.  
  15. <form name="form1" method="post" action="modification_dem.php">
  16.  
  17. <table border="0" cellpadding="0" cellspacing="0" width="100%" bordercolor="#FF3300">
  18.  
  19. <tr align="center">Nom demandeur : <input type="text" name="nom_dem" value="<?php echo $result['nom_dem'];?>"/></tr></br>
  20. <tr align="center">Nom rédacteur : <input type="text" name="nom_redac" value="<?php echo $result['nom_redac'];?>"/></tr></br>
  21. <tr align="center">Numéro chantier : <input type="text" name="num_chan" value="<?php echo $result['num_chan'];?>"/>Libellé : <input type="text" name="libel" value="<?php echo $result['libel'];?>"/></tr></br>
  22. <tr align="center">Agence : 13<input type="radio" name="agence" value="<?php echo $result['agence'];?>"/> 31<input type="radio" name="agence" value="<?php echo $result['agence'];?>"/> 42<input type="radio" name="agence" value="<?php echo $result['agence'];?>"/> 69<input type="radio" name="agence" value="<?php echo $result['agence'];?>"/> 92<input type="radio" name="agence" value="<?php echo $result['agence'];?>"/></tr></br>
  23. <tr align="center">Plan et architecture disponible au BE : oui<input type="radio" name="plan" value="<?php echo $result['plan'];?>"/> non<input type="radio" name="plan" value="<?php echo $result['plan'];?>"/></tr></br>
  24. <tr align="center">Date de la demande : <input type="text" name="date_dem" value="<?php echo $result['date_dem'];?>"/> (format : AAAA/MM/JJ)</tr></br>
  25. <tr align="center">Date de réalisation : <input type="text" name="date_real" value="<?php echo $result['date_real'];?>"/> (format : AAAA/MM/JJ) *Si modification de la date de réalisation, envoyer un mail à <a href="mailto:bertrand.gougis@fr.prosegur.com">Bertrand Gougis</a> ou à <a href="mailto:alain.tardy@fr.prosegur.com">Alain Tardy</a></tr></br>
  26. <tr align="center">Type : Programmation<input type="radio" name="proginter" value="<?php echo $result['proginter'];?>"/> Intervention<input type="radio" name="proginter" value="<?php echo $result['proginter'];?>"/></tr></br>
  27. <tr align="center">Commentaire : <input type="text" name="comm1" value="<?php echo $result['comm1'];?>" size="100"/></tr></br>
  28.  
  29. </table>
  30.  
  31. </br>
  32. </br>
  33. </br>
  34. </br>
  35.  
  36. <input type="submit" value="Modifier Demande" name="form1"/> - <input type="reset" value="Vider"/>
  37.  
  38. <a href="demande.php">Menu</a>
  39.  
  40. </form>


Pour toutes les autres variables, il n'y a aucun soucis, sauf pour les boutons radio ou je n'arrive pas à réafficher celui que j'ai coché lors de la saisie de ma demande.

Si encore une fois quelqu'un pourrait m'aider, ce serait avec plaisir ;) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par gamer42.
  • Commenter cette réponse |
Score
0
òh
òi
|
ok super merci
  • 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