Fetch()

Résolu
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

  1. Contributeur
    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?
    1. 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???
  2. Contributeur
    as-tu de l'expérience en html et en php? il me semble que l'exercice dépasse tes connaissances...
    1. merci pour votre réponse,
      en html oui j'ais l'expérience mais je suis débutante en php
  3. Modérateur
    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                                                                 
    1. Contributeur
      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!
    2. Contributeur
      encore une petite chose: sans doute plus prudent de faire le query après le delete, non?
    3. Modérateur
      @yg_beoh 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.
    4. Modérateur
      @assiaass82n'oublies pas de mettre le sujet en RESOLU (lien sous le titre de ta question)