Supprimer une ligne de la BD via un tableau php...

[Résolu/Fermé]
Signaler
Messages postés
31
Date d'inscription
jeudi 9 janvier 2014
Statut
Membre
Dernière intervention
6 mai 2015
-
Messages postés
31
Date d'inscription
jeudi 9 janvier 2014
Statut
Membre
Dernière intervention
6 mai 2015
-
Bonjour à tous!

Ce mardi, bien que ensoleillé apporte tout de même son lot d'insatisfaction personnelle! :)

Je m'explique:

J'ai un tableau dans mon Back-office avec une liste de QCM que je peux ajouter au fur et a mesure. Bon.

Le nom est dans la colonne de gauche et a droite, il y a un bouton editer et un bouton supprimer. Je me penche en premier lieu sur le supprimer:

Vous l'aurez compris, j'essaye de supprimer de la BDD le QCM associé à la ligne du supprimer dans le tableau...

J'ai fait ça, mais cela ne me fais rien du tout quand je clique sur supprimer: pourquoi? :)

<table>
  <tr>
   <th>Les QCM existants:</th>
   <th>Outils d'édition:</th>

  </tr>
 <?php
 while($donnees = mysqli_fetch_array($reponse))
 {
 ?>
  <tr>
   <th><?php echo $donnees['QCM_nom'];?></th>
   <th>
    <form action="backoffice.php" method="post" name="newqcm">
    <input type="submit" value="Editer" class="bouton" name="editqcm"/> - <input type="submit" value="Supprimer" class="bouton" name="suprqcm"/>
    </form>
   </th>
  </tr>
 <?php
  if(isset($_POST['suprqcm'])){
   $id = $donnees['QCM_id'];
   mysqli_query($base ,'DELETE * FROM QCM where QCM_id='.$id.'');
  }
 }
 ?>
</table>


Je vous remercie d'avance pour le temps que vous me consacrerez :)

greg

EDIT:

J'ai mis des, td, en effet, c'est moins crade...

1 réponse

Messages postés
33530
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 septembre 2021
3 727
Bonjour,
Pour ce genre de chose... je préfères passer par de l'ajax.

par contre, pourquoi utilises tu des TH alors que tu es dans ton tableau (et non dans son en-tête). Il faudrait plutôt mettre des TD non ?

Et sinon.. tu dis que rien ne se passe .. c'est à dire ?
ça ne va pas sur ta page : backoffice.php ?
Et enfin.. tu pourrais, au lieu d'utiliser des <FORM> .. utiliser simplement des liens du genre :
<a href="backoffice.php?action=supprimer">Supprimer</a>  

et les variables GET.

Messages postés
1051
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
140
Bonjour,
oui et préciser l'id du qcm à supprimer dans l'url
<a href="backoffice.php?action=supprimer&idqcm=<?php echo $idqcm ?>">Supprimer</a>

par exemple

Cordialement
Messages postés
31
Date d'inscription
jeudi 9 janvier 2014
Statut
Membre
Dernière intervention
6 mai 2015

Salut vous deux! merci d'avoir rep'

Rien ne se passe -> le tableau est deja sur la page backoffice.php, lorsque je clic sur l'un des supprimer, cela actualise backoffice.php, rien de plus, pas de suppression, pas de message d'erreur...

Je vais essayer les href.. comment ca se passe avec les "action"?
Messages postés
33530
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
26 septembre 2021
3 727 >
Messages postés
31
Date d'inscription
jeudi 9 janvier 2014
Statut
Membre
Dernière intervention
6 mai 2015

Et tu as essayé de faire des PRINT des variables POST et/ou GET ?
<?php
// le début de ta page :
print_r($_POST);
print_r($_GET);

N'as tu rien dedans ??


Et je viens de voir un truc faux dans ton code...
Mets ces lignes là au début de ta page... pas dans ta boucle !
 if(isset($_POST['suprqcm'])){
   $id = $_POST['QCM_id'];
   mysqli_query($base ,'DELETE * FROM QCM where QCM_id='.$id.'');
  }

=et ajoute, dans ta form un input hidden contenant l'id;
<form action="backoffice.php" method="post" name="newqcm">
  <input type="hidden" name="id" value="'.$donnees['QCM_id'] .'">
    <input type="submit" value="Editer" class="bouton" name="editqcm"/> - <input type="submit" value="Supprimer" class="bouton" name="suprqcm"/>
    </form>



NB : NE mets pas de balises PHP alors que tu es DEJA dans un code php !
Messages postés
1051
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
140
au du code modifié je ferais ceci
<a href="backoffice.php?suprqcm=supprimer&idqcm=<?php echo $donnees['QCM_id']?>">Supprimer</a>

puis

if(isset($_GET['suprqcm'])){
   $id = $_GET['QCM_id'];
   mysqli_query($base ,'DELETE * FROM QCM where QCM_id='.$id.'');
  }
Messages postés
31
Date d'inscription
jeudi 9 janvier 2014
Statut
Membre
Dernière intervention
6 mai 2015

<?php
if(isset($_POST['suprqcm']) && isset($_POST['qcmid'])) // rajoute une condition
{
	$id = $_POST['qcmid']; // Change la source de l'info
	mysqli_query($base ,'DELETE FROM QCM WHERE QCM_id='.$id.' LIMIT 1'); // Corrige la requête. - Le limite 1, c'est juste par sécurité.
}
 
$reponse = mysqli_query($base ,"SELECT QCM_id,QCM_nom FROM QCM");
?>     
<table>
        <tr>
            <th>Les QCM existants:</th>
            <th>Outils d'édition:</th>

        </tr>
    <?php
    while($donnees = mysqli_fetch_array($reponse)){
    ?>
        <tr>
            <td><?php echo $donnees['QCM_nom'];?></td>
            <td>
                <form action="backoffice.php" method="post" name="ediqcm">
				<input type="hidden" name="qcmid" value="<?php echo $donnees['QCM_id']; ?>" /> <!-- On rajoute une valeur cachée -->
                <input type="submit" value="Editer" class="bouton" name="editqcm"/> - <input type="submit" value="Supprimer" class="bouton" name="suprqcm"/>
                </form>
            </td>
        </tr>
    <?php
    } // Fin de while
    ?>
</table>


Et cela fonctionne, merci à vous