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

Résolu
MrHip7 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -  
MrHip7 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention   -
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...
A voir également:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
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.

0
Thorak83 Messages postés 1051 Date d'inscription   Statut Membre Dernière intervention   156
 
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
0
MrHip7 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
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"?
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752 > MrHip7 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
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 !
0
Thorak83 Messages postés 1051 Date d'inscription   Statut Membre Dernière intervention   156
 
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.'');
  }
0
MrHip7 Messages postés 31 Date d'inscription   Statut Membre Dernière intervention  
 
<?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
0