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

Résolu
MrHip7 Messages postés 32 Statut Membre -  
MrHip7 Messages postés 32 Statut Membre -
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 40050 Statut Modérateur 4 756
 
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 1140 Statut Membre 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 32 Statut Membre
 
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 40050 Statut Modérateur 4 756 > MrHip7 Messages postés 32 Statut Membre
 
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 1140 Statut Membre 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 32 Statut Membre
 
<?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