[html] Problème sur un formulaire avec plusieurs boutons submit

Problème sur un formulaire avec plusieurs boutons submit [html] - HTML/CSS - Programmation

Marsh Posté le 19-10-2009 à 15:01:37    

Bonjour à tous :hello:
 
J'ai hésité à poster dans la catégorie PHP, mais à mon avis c'est au niveau de formulaire et donc du html que ça déconne [:klemton]
Voila mon souci : j'ai un mini-site tout bidon osefcépagrav qui permet de faire des fiches.
Plusieurs utilisateurs ont accès à ma base de données. Première page : authentification, une fois cette page passée, on affiche la liste des fiches existantes et en fonction de l'auteur des dîtes fiches, les actions possibles ne sont pas les mêmes :
http://img5.yfrog.com/img5/1739/pwetn.jpg
(j'utilise de vrais noms, alors je les ai cachés)
Là par exemple, je suis connecté avec l'utilisateur D. Si je clique sur Lire, ça fonctionne, je récupère bien la page que je veux. Modifier et Supprimer, pareil.
 
Par contre si je clique sur le Lire des autres lignes, je vois toujours celle de l'utilisateur D :/
Si je change d'utilisateur, le problème reste le même. Chaque bouton ramène vers la fiche de l'utilisateur connecté.
J'ai aussi un utilisateur Administrateur qui lui peut normalement tout faire (voir, éditer, supprimer), mais alors lui ne voit que la dernière fiche créée (celle de l'utilisateur F) [:prozac]
 
Voici le code du formulaire où il y a la liste :

Code :
  1. <body>
  2.     <form action="modify.php" method="post">
  3.         <table id="liste">
  4.             <tr>
  5.                 <th>
  6.                      Titre de la fiche |
  7.                 </th>
  8.                 <th>
  9.                       Date de la dernière modification |
  10.                 </th>
  11.                 <th>
  12.                       Auteur de la fiche |
  13.                 </th>
  14.                 <th colspan="3">
  15.                       Actions disponibles
  16.                 </th>
  17.             </tr>
  18.     <?php
  19.     $co = new PDO('mysql:host=127.0.0.1;dbname=pwet', $_SESSION['login'], $_SESSION['pwd']); //connexion à la bdd     
  20.    
  21.     $liste=$co->query("SELECT id, owner, date_redac, nom FROM fiche ORDER BY id ASC";); //affiche l'id, l'auteur, la date de rédaction, titre depuis la table 'fiche' triés par id ascendants.
  22.     $liste->setFetchMode(PDO::FETCH_OBJ); //retourne les résultats sous type objet.     
  23.     while($tri=$liste->fetch()){ //boucle qui affiche le titre, l'auteur et la date de rédaction.
  24.     ?>
  25.         <?php
  26.             $liste_date = $tri->date_redac;
  27.             list($yyyy, $mm, $dd) = explode("-", $liste_date);
  28.             $liste_date = "$dd-$mm-$yyyy";
  29.         ?>   
  30.                <tr style="<?php if($utilisateur == $tri->owner){
  31.                                 echo "background-color: #b5e2f9;";
  32.                               }else{
  33.                                 echo "background-color: #ff8c8c;";
  34.                             }
  35.                             if($utilisateur == "Administrateur";){
  36.                                 echo "background-color: #9cff8c";
  37.                             }?>">
  38.             <?php if($utilisateur == $tri->owner || $utilisateur == "Administrateur";){?>
  39.             <td>
  40.                 <?php echo $tri->nom;?>
  41.             </td>
  42.             <td>
  43.                 <?php echo $liste_date;?>
  44.             </td>
  45.             <td>
  46.                 <?php echo $tri->owner;?>
  47.             </td>
  48.             <td colspan="3">
  49.                 <input type="hidden" name="id_select" value="<?php echo $tri->id;?>" />
  50.                 <input type="submit" name="voirfiche" value="Lire" />
  51.                 <input type="submit" name="fiche_to_modify" value="Modifier" />
  52.                 <input type="submit" name="fiche_to_delete" value="Supprimer" />
  53.             </td>
  54.         <?php } else { ?>
  55.             <td>
  56.                 <?php echo $tri->nom;?>
  57.             </td>
  58.             <td>
  59.                 <?php echo $liste_date;?>
  60.             </td>
  61.             <td>
  62.                 <?php echo $tri->owner;?>
  63.             </td>
  64.             <td colspan="3">
  65.                 <input type="submit" name="voirfiche" value="Lire" />
  66.             </td>
  67.         <?php
  68.         }
  69.     }
  70.     $liste->closeCursor(); //on ferme le curseur.
  71.     ?>
  72.             </tr>
  73.         </table>
  74.     </form>
  75. </body>


Normalement, l'id de ma fiche devrait être récupéré puis envoyé à la page suivante (modify.php). Est-ce qu'il y a une transformation du type de la variable à faire (id qui sert dans une requête mysql pour appeler les bonnes données en fonction de l'id fourni) ?
Je vous avouerai que c'est un peu flou pour moi tout ça (le changement de type) :/
 
Je me doute que ça chie au niveau des multiples boutons submit, mais je ne vois pas comment corriger ça tout en gardant la mise en page et la navigation actuelle :??:
 
Des idées ?
Merci :jap:


Message édité par Seth_ le 19-10-2009 à 15:03:40
Reply

Marsh Posté le 19-10-2009 à 15:01:37   

Reply

Marsh Posté le 19-10-2009 à 16:07:46    

si tu fais un print_r($_POST); dans modify.php, quelles variables de ton formulaire vois-tu?


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 19-10-2009 à 16:42:30    

Merci d'avoir répondu :jap:
 
Si je clique sur Lire j'obtiens : "Array( [id_select] => 74 [voirfiche] => Lire )" et ce, quelque soit le bouton "Lire" sur lequel je clique. 74 étant l'id de la fiche rédigée par l'utlisateur connectée à ce moment là. Si je change d'utilisateur, je vois l'id de la fiche qu'il a rédigé.
 
Pour Modifier, j'ai : Array ( [id_select] => 74 [fiche_to_modify] => Modifier ).
 
 
:??:

Reply

Marsh Posté le 19-10-2009 à 16:53:11    

je peux me tromper, mais je pense qu'il ne faut pas utiliser de formulaire dans ce cas précis, mais juste des lien avec variables... (après si visuellement du veux des boutons, tu utilise <button> épicétou! :D)  
 
voili voilou...

Reply

Marsh Posté le 19-10-2009 à 17:08:50    

Effectivement, ça marche comme ça !
Merci pataluc :jap:
 
edit : Pour être précis, il faut laisser le formulaire (pour indiquer où se situent les actions correspondantes aux boutons), mais il faut enlever les input type="submit" et les remplacer par des <button name="blabla" value="l'id de la fiche"> TEXTE </button>
 
 
:jap:


Message édité par Seth_ le 19-10-2009 à 17:14:25
Reply

Marsh Posté le 20-10-2009 à 10:28:09    

ton pb vient du fait que ton champ caché "id_select" est dupliqué autant de fois que t'as de lignes dans ton table, donc je pense que le navigateur envoi soit le premier soit le dernier, mais toujours le même. en mettant un nom style "id_select[]", ça le ferait, ou alors, "id_select" concaténé à l'id pour avoir "id_select74" par ex.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Marsh Posté le 20-10-2009 à 10:31:33    

rufo a écrit :

ton pb vient du fait que ton champ caché "id_select" est dupliqué autant de fois que t'as de lignes dans ton table, donc je pense que le navigateur envoi soit le premier soit le dernier, mais toujours le même. en mettant un nom style "id_select[]", ça le ferait, ou alors, "id_select" concaténé à l'id pour avoir "id_select74" par ex.


ouais spa faux, mais son problème il vient surtout du fait qu'un formulaire, c'est pas fait pour naviguer entre des pages, mais pour envoyer des données. donc il devrait juste utiliser des liens normaux... :spamafote:


Message édité par pataluc le 20-10-2009 à 10:31:46
Reply

Marsh Posté le 20-10-2009 à 13:13:13    

Oui, bien d'accord mais en même temps, on peut considérer qu'un lien avec des paramètres, c'est un formulaire. En tout cas, PHP le traite comme tel avec $_GET.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed