Page de confirmation de suppression et checkbox

Page de confirmation de suppression et checkbox - PHP - Programmation

Marsh Posté le 23-01-2007 à 11:59:11    

Bonjour,
 
Je voudrais savoir ou trouvé un code "standard" pour effectuer un contrôle de suppression multiple dans la base avec une page récapitulative et un bouton de confirmation de suppression.
 
Exemple :
 
Je désire supprimer plusieurs enregistrements (en ligne).  
 
- J'affiche tout ces enregistrements,
- je coche chaque enregistrement que je désire supprimé (checkbox)
- je clique sur un bouton "suppression"
- une page récapitule les éléments à supprimer (que je peu dé-sélectionnés avec des checkbox déjà coché)
- l'utilisateur confirme la suppression
 
Merci !  :jap:


Message édité par Drwily le 23-01-2007 à 12:30:57
Reply

Marsh Posté le 23-01-2007 à 11:59:11   

Reply

Marsh Posté le 23-01-2007 à 12:15:08    

tu prends tes doigts.. ton cerveau et tu code :D...
 
bon serieusement, ya rien de compliqué à faire ça... et tout fait tu ne trouvera certainnement pas du code qui colle parfaitement à ce que tu as déjà fait... (regarde peut être sur php code source).
 
Si t'as des questions technique, pose les... mais je doute que quelqu'un te fasse ton code à ta place.

Reply

Marsh Posté le 23-01-2007 à 12:27:56    

Je ne demande pas le code bien sur ! Juste une piste, s'il faut utiliser du javascript ou si l'on peut tout faire en PHP. C'est juste que dans ce que je fait, ce genre de page sera très souvent utilisé, et pour l'instant je n'arrive qu'a faire une confirmation que pour un seul enregistrement à la fois. Et ce n'est pas pratique pour l'utilisateur.
 
 

Code :
  1. <?php require('affichetable.php'); ?>
  2.  Suppression d'un r&ocirc;le<br><br>
  3.  <span class="txt">
  4.   <?php echo '<table align="center" bgcolor="#FFFF33" border=1 bordercolor="silver"><thead>
  5.    <tr>';
  6.     for($i = 1;$i < mysql_num_fields($result);$i++)
  7.     {
  8.       echo '<th>'.mysql_field_name($result,$i).'</th>';
  9.     }
  10.      echo '</tr></thead><tbody>';
  11.    echo '<tr>';
  12.     for($j = 1;$j<mysql_num_fields($result);$j++)
  13.     {
  14.       echo('<td>' . $row[$j] . '</td>');
  15.     }
  16.    echo '</tr>
  17.   </table><br>';
  18.   echo 'Confirmer la suppression de : <b>'.$row[1].'</b><br>';
  19.   echo '<form name="demande" method="post" action="editrole.php?option=4&num='.$num.'">'; ?>
  20.    <input name="supp" type="radio" value="oui">Oui<br>
  21.    <input name="supp" type="radio" value="non" checked style="margin-left:10">Non<br>
  22.    <?php echo '<input name="num" type="hidden" value="'.$num.'">'; ?>
  23.    <?php echo '<input name="choix" type="hidden" value="">'; ?></br>
  24.    <input type="submit" value="Valider" onClick="role();">
  25.   </form>
  26.  </span>
  27. <?php } function supprimer() {
  28. if ($_POST['choix'] == 'oui') {
  29.  require('affichetable.php');
  30.  $req = 'DELETE FROM ROLE WHERE numrole = '.$row[0];
  31.  $res = mysql_query($req);
  32.  if (mysql_num_rows($res) == 1) {
  33.    mysql_free_result($res);
  34.  }
  35. }


 
- J'affiche un tableau avec les enregistrements
- en cliquant sur un bouton supprimer je choisi l'enregistrement que je désire supprimer
- un page de confirmation s'affiche ou l'utilisateur choisi entre oui\non (avec la possibilité d'enlever certains des éléments précédemment sélectionnés)
 
Ce que je cherche à faire c'est de sélectionner un ensemble de ligne avec des checkbox et ensuite d'avoir la confirmation.


Message édité par Drwily le 23-01-2007 à 12:32:36
Reply

Marsh Posté le 23-01-2007 à 13:11:36    

Pour moi soluce tout php/html
 
Tu fais donc une lecture de ta bdd... tu claque les colonnes des enregistrements que tu souhaite traiter, et tu mets dans un dernier champs de ton tableau une checkbox qui aura un nom composé. (nom de la colonne . Nro d'id de la ligne en question) exemple :
 
check_3, ferait référence à la 3éme ligne de l'enregistrement.
 
Le bouton validation renvoie vers une page de traitement. Cette page va parcourir toutes les checkbox àa la recherche de celle qui sont checkée, et récupérer dans un tableau tous les N° de ligne (découpage du nom de la checkbox).
 
Ensuite un script va récupére ce tableau et malaxer le tout pour pondre un tableau récapitulatif sympa pour le user, et le renvoyer vers la page.  
 
enfin le nouveau bouton valider du formulaire qui vient d'être généré enverra vers une page de traitement qui exécutera la requête... vla en gros.


Message édité par chani_t le 23-01-2007 à 13:11:59
Reply

Marsh Posté le 24-01-2007 à 14:16:50    

Chani_t > T'as pas plus compliqué comme systéme de case à cocher?
 
drwily > Pour faire une liste de case à cocher, (des checkbox) tu donnes simplement le même nom à toutes les cases à cocher et évidement tu mets comme valeur l'identifiant (celle dans la base de donnée) de chaque élément sélectionnable. Avec php, la seule complication, c'est qu'il faut rajouter "[]" aprés le nom pour que php sache qu'on lui envoie une liste de valeur ce qui lui fera créer un tableau contenant ces valeurs.
Par exemple, si le "name" des cases à cocher est égal à "tab[]", en php, on retrouvera dans le tableau $_POST["tab"] (ou $_GET["tab"] ... en fonction de ce qui est indiqué dans le "method" de la balise <form> ) les valeurs des cases qui ont été coché.
 
Ensuite, pour savoir ce qui a été coché c'est tout simple, il suffit de faire une boucle (par exemple un "foreach" ) sur ce tableau.

Message cité 1 fois
Message édité par omega2 le 24-01-2007 à 14:18:04
Reply

Marsh Posté le 24-01-2007 à 21:29:05    

omega2 a écrit :

Chani_t > T'as pas plus compliqué comme systéme de case à cocher?
...


 
nan ça vas :D.. tu noteras que ce que tu propose correspond à peu prés à la première partie de ce que j'ai proposé... si ce n'est l'identifiant. bref... why not

Reply

Marsh Posté le 25-01-2007 à 11:47:59    

Entre parcourir un tableau en regardant les valeurs qu'il contient et vérifier l'existance de variables en créant et gérant dynamiquement les noms, il y a quand même une grosse différence. Certe dans les deux cas t'as une boucle, mais l'un des deux cas est trés crade au niveau programmation (je te laisse deviner laquelle) assez crade niveau utilisation des balises html (les checkbox sont fait pour pouvoir sélectionner un ou plusieurs éléments d'un ensemble d'élément donné et non pas pour avoir une liste d'élément déclaré différent (pas le même "name" ) et qui sont pourtant identique dans leur signification) et plus long au niveau exécution (tester 50 valeurs pour se rendre compte qu'il y en a 48 qui n'existe pas, c'est super économique dit donc).
En plus, en prenant de telles habitudes, il y a le risque de le voir revenir quand il voudra utiliser des listes déroulantes à sélection multiple tout simplement par ce qu'il aura mal apris au départ.
 
Au fait, niveau signification des éléments, du côté de l'html la solution que tu proposais revenais à avoir des cases à coché du genre "non fumeur", "1ére classe", "télé écran géant" alors que ma solution s'apparente plustôt à  "destinations voulus : paris, New York, Londre, ...". Comme tu peux le voir, la différence est quand même flagrante et ce qu'il demande correspond à ce que je lui ai proposé et non pas à ce que tu lui proposes toi.

Reply

Marsh Posté le 26-01-2007 à 13:52:41    

Ouais, ok, c'est pas la peine de s'énerver :D... quand on m'explique je comprend.. sisi je t'assure ;).
 
bon ben maintenant je sais aussi comment m'améliorer ;). Merci pour ces précisions, que j'aurais aimé avoir avant ...

Reply

Marsh Posté le 26-01-2007 à 14:30:39    

chani_t > T'inquiétes, je m'énerve pas, j'explique les différences. :p Pas ma faute si je fais facilement des gros patés confus. :D

Reply

Marsh Posté le 07-02-2007 à 09:30:02    

Messieurs bonjour,
Merci Omega2 c'est exactemement ce que je cherchais à faire, mais au début j'étais partis comme chani_t...
Mais la avec tab[] c'est parfait ;)

Reply

Marsh Posté le 07-02-2007 à 09:30:02   

Reply

Marsh Posté le 20-02-2007 à 16:55:42    

Oui ! Merci bien ca roule now !

Reply

Sujets relatifs:

Leave a Replay

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