Fetch()

Résolu/Fermé
assiaass82 Messages postés 8 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 16 juin 2017 - Modifié le 13 juin 2017 à 19:19
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 - 14 juin 2017 à 00:15
Bonjour
je n'arrive pas a trouvé une méthode pour supprimer une ligne de tableau

voici mon code mais comme ça il supprime toute la table

<?php
                    session_start();
                    include("bdconnect.php");
                   
                    $reponse = $bdd->query('SELECT * FROM utilisateurs');

                    while($data = $reponse->fetch()){
                ?>
               <tr>
                   <td id="t2"> <?php echo $data['nomUser'];?></td>
                   <td id="t2"> <?php echo $data['prenomUser'];?> </td>
                   <td id="t2"> <?php echo $data['emailUser'];?> </td>
                   <td id="t2"> <?php echo $data['pseudoUser'];?> </td>
                    <td id="t2"> <?php echo $data['passwordUser'];?> </td>
                    <td id="t2"> <?php echo $data['villeUser'];?> </td>
                   <td id="t2"> <?php echo $data['paysUser'];?> </td>
                   <td id="t2"> <?php echo $data['ageUser'];?> </td>
                   <td id="t2"> <?php echo $data['telephoneUser'];?> </td>
                   <td id="t2"><input type="submit" name="supp" value="Supprimer" ></td>
               </tr>
               <?php
                        if (isset ($_POST['supp']) ) {
                       
                            $insert=$bdd->prepare('DELETE FROM utilisateurs WHERE nomUser = ?');
                            $insert->execute( array($data['nomUser']) );
                        }
                    }   
                   
                   
               ?>

3 réponses

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
13 juin 2017 à 19:29
bonsoir, ton code est écrit pour supprimer chacun des utilisateurs. remarques-tu que tu n'as rien prévu pour déterminer quel utilisateur supprimer?
0
assiaass82 Messages postés 8 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 16 juin 2017
13 juin 2017 à 19:50
oui mais je ne sais pas comment!!!! car je veux supprimer la ligne correspondante à le bouton "supprimer" qui se trouve dans chaque ligne .
comment je peut identifier chaque ligne de ma table???
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
13 juin 2017 à 21:39
as-tu de l'expérience en html et en php? il me semble que l'exercice dépasse tes connaissances...
0
assiaass82 Messages postés 8 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 16 juin 2017
13 juin 2017 à 23:12
merci pour votre réponse,
en html oui j'ais l'expérience mais je suis débutante en php
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié le 13 juin 2017 à 22:44
Bonjour,

Voila une façon de faire en utilisant les FORMULAIRES

<?php
//------------------------------------------------------//
//Affichage des erreurs php (A mettre AU DEBUT de tes scripts)
//------------------------------------------------------//
error_reporting(E_ALL);
ini_set('display-errors','on');

//------------------------------------------------------//
//démarrage des sessions
//------------------------------------------------------//
session_start();

//------------------------------------------------------//
//connexion à la bdd
//------------------------------------------------------//
require_once("bdconnect.php");



//------------------------------------------------------//
//traitement de la suppression
//------------------------------------------------------//

 // récupération PROPRE des variables POST avant de les utiliser !
 $nomUser = !empty($_POST['nomUser']) ? $_POST['nomUser'] : NULL;
 $prenomUser = !empty($_POST['prenomUser']) ? $_POST['prenomUser'] : NULL;

 if (isset ($_POST['supp']) ) {
  $sql = 'DELETE FROM utilisateurs WHERE nomUser = ? AND prenomUser = ?';
  $datas = array($nomUser, $prenomUser);
  try{                    
    $insert=$bdd->prepare($sql);
    $insert->execute($datas);
  }catch(Exception $e){
    echo "Erreur ! ".$e->getMessage();
  }
}

//------------------------------------------------------//
//récupération de la liste des utilisateurs
//------------------------------------------------------//
try{
 $reponse = $bdd->query('SELECT * FROM utilisateurs');  
}catch(Exception $e){
  echo "Erreur ! ".$e->getMessage();
}

//------------------------------------------------------//
//Affichage des users
//------------------------------------------------------//
while($data = $reponse->fetch()){
 echo '<tr>
         <td id="t2">'. $data['nomUser'].'</td>
         <td id="t2"> '.$data['prenomUser'].'</td>
         <td id="t2"> '.$data['emailUser'].'</td>
         <td id="t2"> '.$data['pseudoUser'].'</td>
         <td id="t2"> '.$data['passwordUser'].'</td>
         <td id="t2"> '.$data['villeUser'].'</td>
         <td id="t2"> '.$data['paysUser'].'</td>
         <td id="t2"> '.$data['ageUser'].'</td>
         <td id="t2"> '.$data['telephoneUser'].'</td>
         <td id="t2">
           <form method="post" action="">
            <input type="hidden" name="nomUser" value="'. $data['nomUser'].'">
            <input type="hidden" name="prenomUser" value="'.$data['prenomUser'].'">
            <input type="submit" name="supp" value="Supprimer" >
          </form>
         </td>
      </tr>';
}   
   
   
?>


NB : Au passage .... si ce n'est pas déjà fait, active les erreurs PDO.
Voir ici :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs


EDIT : Ajout des valeurs dans les input hidden. (merci Yg .. j'ai collé trop vite ^^ )

EDIT² : Récupération de la liste déplacé après le traitement du delete.


Cordialement, 
Jordane                                                                 
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
13 juin 2017 à 21:56
bonsoir, ne faut-il pas ajouter des "value" dans les deux
input type="hidden"
? ou bien utiliser les deux premières colonnes de chaque ligne en readonly dans la form?
j'étais parti dans l'idée d'un
input type="checkbox"
dans chaque ligne de la table, et d'avoir la table compléte dans un formulaire. c'est effectivement inutilement compliqué.
bien vu!
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
13 juin 2017 à 22:24
encore une petite chose: sans doute plus prudent de faire le query après le delete, non?
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
13 juin 2017 à 22:43
oh puré .... faut que j'aille dormir !!
Je corrige de suite...

Bon.. en même temps perso je l'aurai traité en AJAX .. histoire de pas devoir faire de refresh de la page... mais bon.
0
assiaass82 Messages postés 8 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 16 juin 2017 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
14 juin 2017 à 00:13
merci beaucoup ça marche bien
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > assiaass82 Messages postés 8 Date d'inscription mardi 13 juin 2017 Statut Membre Dernière intervention 16 juin 2017
14 juin 2017 à 00:15
n'oublies pas de mettre le sujet en RESOLU (lien sous le titre de ta question)
0