[RESOLU] pb avec un post

Eléphant du PHP | 166 Messages

26 juil. 2018, 14:44

bonjour
voici mon code :

Code : Tout sélectionner

<?php **************** 1ère partie **************** //On récupère l'ID de ma page "principal.php" // if (isset($_POST['postId'])){ $postId = $_POST['postId']; //On se connecte à la Bdd include('../inc_/connexion_inc.php'); //On recupère l'ID de la Bdd $suppress = $bdd->query('SELECT id FROM entree_personnel'); while ($donnees = $suppress->fetch()){ $recupId = $donnees['id']; } if ($recupId = $postId){ echo 'l\'ID à effacer est bien : '.$recupId.'<br \>' ; echo 'Sinon retournez à cette page :<a href="../page/principal.php">Principal</a> '; } **************** 2ème partie *************** echo '<div> <form method="post" action=""> <button type="submit"><img src="../image/poubelle-humain.jpg" alt="Avatar" width="150" height="150"></button> <input type="hidden" name="supprime" value="'.$recupId.'"> </form> </div>'; // Si le formulaire est soumis if(isset($_POST['supprime'])){ $supp = $bdd -> prepare('DELETE FROM entree_personnel WHERE id = "'.$recupId.'" '); $supp -> execute(); echo 'L\'ID n° :' .$recupId. 'est supprimé'; } // Termine le traitement de la requête $suppress->closeCursor(); // Je me deconnecte $req = null; } ?>
la 1ère partie récupère l'ID de ma page qui se nomme "principal.php", ensuite je recherche cette ID dans ma Bdd.

la 2ème partie, par le biais d'un bouton, je veux supprimé de ma Bdd l'ID et toutes les infos qui sont liées.
cela ne fonctionne pas. Quand je clic sur le bouton, la page devient blanche et rien ne s'efface dans ma Bdd.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 juil. 2018, 23:54

salut,

a priori le code supprime la dernière ligne retournée par la requête : SELECT id FROM entree_personnel
<?php
 $suppress = $bdd->query('SELECT id FROM entree_personnel');
  
    while ($donnees = $suppress->fetch()){
      $recupId = $donnees['id'];
    }
ce code ne fait que récupérer le dernier id de la table entree_personnel.
Vu qu'il n'y a pas de where (predicat) tu ne peux pas prévoir le résultat et surtout il y a de grande chance que ce ne soit pas le même id.

Ensuite vient la seconde partie du code
<?php
echo 	'<div>
    <form method="post" action="">
    <button type="submit"><img src="../image/poubelle-humain.jpg" alt="Avatar" width="150" height="150"></button>
    <input type="hidden" name="supprime" value="'.$recupId.'">
    </form>
    </div>';	
    // Si le formulaire est soumis
    if(isset($_POST['supprime'])){
      
      $supp = $bdd -> prepare('DELETE FROM entree_personnel WHERE id = "'.$recupId.'" ');
      $supp -> execute();	
      
      echo 'L\'ID n° :' .$recupId. 'est supprimé';
    }

  // Termine le traitement de la requête
  $suppress->closeCursor();	
  
la tu affiches un formulaire qui passe $recupId, dont on ne prévoir le résultat, vers la page cible (ici la même).

ensuite tu fais un delete SQL de la ligne qui correspond à $recupId (on ne sait toujours pas ce qu'il y a la dedans).

Dernière chose le code n'est exécuté que si le tableau $_POST contient l'index postId, le formulaire de suppression ne comprend pas de champ postId doc quand on tu cliques sur le bouton tu ne passes pas dans le if, aucun risque qu'il y ai une suppression.

quelque chose comme ceci devrait mieux aller
<?php

//On récupère l'ID de ma page "principal.php" //
if (isset($_POST['postId'])) {
    echo 'l\'ID à effacer est bien : '.$_POST['postId'].'<br \>';
    echo 'Sinon retournez à cette page :<a href="../page/principal.php">Principal</a> ';

    echo 	'<div>
    <form method="post" action="">
    <button type="submit"><img src="../image/poubelle-humain.jpg" alt="Avatar" width="150" height="150"></button>
    <input type="hidden" name="supprime" value="'.$$_POST['postId'].'">
    </form>
    </div>';
}
// Si le formulaire est soumis
if (isset($_POST['supprime'])) {
    //On se connecte à la Bdd
    include '../inc_/connexion_inc.php';
    try {
        $supp = $bdd->prepare('DELETE FROM entree_personnel WHERE id = "'.$_POST['supprime'].'" ');
        $supp->execute();

        echo 'L\'ID n° :'.$_POST['supprime'].'est supprimé';
    } catch (\Exception $e) {
        echo 'Erreur à la suppresion de l\'ID :',$_POST['supprime'];
    }
}

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 166 Messages

28 juil. 2018, 18:14

merci ca fonctionne