Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide | Shop Recherche
1768 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  éliminer des enregistrements via des cases à cocher

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

éliminer des enregistrements via des cases à cocher

n°2302620
abdoulayec​oumba
Posté le 28-06-2017 à 17:55:47  profilanswer
 

Bonjour, j’ai une table  qui renferme des informations concernant des élèves avec les champs « id », « prenom », « classe ». Je veux arriver à lister le contenu de la table dans un tableau avec des cases à cocher à côté de chaque enregistrement comme un formulaire, de sorte qu’une fois je coche sur une ou plusieurs cases, j’arrive à supprimer les enregistrements correspondants dans la table.
Pour l’affichage des données avec les cases à cocher dans le tableau là j’ai aucun problème tout se passe comme je l’ai prévu.  
Je bloque lorsque j’appuie sur le bouton submit  pour effacer les enregistrements devant lesquels j’ai coché sur le tableau,  je ne sais pas là où ça coince quelqu’un peut-il m’aider c’est important pour moi. Je ne trouve pas de solution malgré mes recherches.
Voici mon code
 
le tableau (eleves.php)

Code :
  1. <html >
  2. <body>
  3. <form method='POST' action='eleves_traitement.php'>
  4. <table border="1">
  5. <tr>
  6. <td width=''>Prénom</td>
  7. <td width=''>classe</td>
  8. <td width=''>Choix</td>
  9. </tr>
  10. <?php
  11.         try
  12.             {
  13. // On se connecte à MySQL
  14.           $bdd = new PDO('mysql:host=localhost;dbname=comptes;charset=utf8',
  15.           'root','');
  16.              }
  17.   catch(Exception $e)
  18.             {
  19.     // En cas d'erreur, on affiche un message et on arrête tout
  20.         die('Erreur : '.$e->getMessage());
  21.             }
  22. $reponse = $bdd->query('SELECT * FROM eleves');
  23.   // On affiche chaque entrée une à une
  24.     while ($donnees = $reponse->fetch())
  25.             {
  26. echo"<tr><td>".$donnees['prenom']."</td>";
  27. echo"<td>".$donnees['classe']."</td>";
  28. echo"<td><input type='checkbox' name='delete[]' value='".$donnees['id']."'></td>";
  29. echo"</tr>";
  30.             }
  31. $reponse->closeCursor();
  32. ?>
  33. </table>
  34. <p>
  35. <input type="submit" value="envoyer" name="Envoyer">
  36. </form>
  37. </body>
  38. </html>


 
eleves_traitement.php

Code :
  1. <?php
  2. if (sizeof($delete)==0)
  3. {
  4. header('Location:eleves.php');
  5. exit;
  6. }
  7. else
  8. {
  9. try
  10.             {
  11. // On se connecte à MySQL
  12.           $bdd = new PDO('mysql:host=localhost;dbname=comptes;charset=utf8',
  13.           'root','');
  14.              }
  15.   catch(Exception $e)
  16.             {
  17.     // En cas d'erreur, on affiche un message et on arrête tout
  18.         die('Erreur : '.$e->getMessage());
  19.             }
  20.          $reponse = $bdd->query('SELECT * FROM eleves');
  21.          foreach ($delete as $valeur)
  22.     {
  23.               $sql="DELETE FROM eleves where id='$id'";
  24.              
  25.            }
  26. $reponse->closeCursor();
  27. echo ' Enregistrement éffacé '.'<br><br />';
  28. }
  29. ?>


mood
Publicité
Posté le 28-06-2017 à 17:55:47  profilanswer
 

n°2302622
rat de com​bat
attention rongeur méchant!
Posté le 28-06-2017 à 18:19:04  profilanswer
 

>$sql="DELETE FROM eleves where id='$id'";
Tu devrais te renseigner sur les injections SQL! :o

 

(enfin si tu comptes exécuter cette requête, parce que dans le code présent tu ne le fais pas sauf erreur de ma part)


Message édité par rat de combat le 28-06-2017 à 18:23:11
n°2302628
abdoulayec​oumba
Posté le 28-06-2017 à 19:23:02  profilanswer
 

j'ai éssayé d'aborder le probleme sous l'angle des requettes préparées mais ca ne marche pas en fait c'est la premiere fois que j'utilise les checkbox, la requette sql delete et foreach  
 

Code :
  1. <?php
  2. if (isset($_POST['$id']))
  3. {
  4.     $valeur = ($_POST['$id']);
  5. }
  6. else
  7. {
  8. try
  9.             {
  10. // On se connecte à MySQL
  11.           $bdd = new PDO('mysql:host=localhost;dbname=comptes;charset=utf8',
  12.           'root','');
  13.              }
  14.   catch(Exception $e)
  15.             {
  16.     // En cas d'erreur, on affiche un message et on arrête tout
  17.         die('Erreur : '.$e->getMessage());
  18.             }
  19.          foreach ($delete as $valeur)
  20.     {
  21.            
  22.               $req = $bdd->prepare(DELETE FROM eleves where id=:id);
  23.          $req->execute(array(
  24.            'id' => $valeur,
  25.            ));
  26.            }
  27. $req->closeCursor();
  28. echo ' Enregistrement éffacé '.'<br><br />';
  29. }
  30. ?>

n°2302633
rat de com​bat
attention rongeur méchant!
Posté le 28-06-2017 à 21:31:15  profilanswer
 

Y'a au moins une grosse erreur de logique dans ton code: Si le formulaire renvoye quelque chose tu le sauvegardes dans $valeur et puis - tu ne fais plus rien car ton else n'est pas exécuté. Si le formulaire ne renvoye rien tu essaye d'exécuter ton else mais $valeur n'étant pas défini ou ayant une valeur quelconque (pas sûr, je ne parle pas PHP en fait :o ) ça ne risque pas de fonctionner. Aussi ton $id dans $_POST me paraît douteux (ça contient quoi $id? Je ne vois d'assignation nul part), peut-être ton formulaire n'est pas bon en plus, bref, faut débugger ça et revoir eventuellement les bases.
Je sais par lecture dans le forum qu'on peut activer des messages d'erreurs en PHP, tu as fait ça? Aussi tu peux - comme dans n'importe quel language - rajouter des echo/print/printf (selon le language) pour savoir ce que fait ton programme. Et internet me dit que PHP >=5.4 contient un debuggeur aussi...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  éliminer des enregistrements via des cases à cocher

 

Sujets relatifs
Formulaire créé en javascript limité à 90 "lignes"Enregistrements manquants dans la bdd
Eliminer les doublons (résolu)Update d'une table pour des enregistrements venant d'une autre table
Macro excel - décocher toutes les cases d'un filtre sauf uneProbleme d'affichage de mes enregistrements
[java]comment compter les cases identique d'un tableau ?Reproduire ligne avec plusieurs Cases d'option/Zone de groupe ET Macro
Supprimer plusieurs enregistrements et remplacer par un seulsupprimer des enregistrements d'une table dont des champs sont dans un
Plus de sujets relatifs à : éliminer des enregistrements via des cases à cocher



Copyright © 1997-2016 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR