Supprimer des cases cochés

Fermé
meryemziz - 23 avril 2018 à 11:43
 meryemziz - 23 avril 2018 à 16:02
Bonjour!

j'ai besoin de l'aide s'il vous plait!

j'ai une page qui affiche un tableau qui contient plusieurs colonnes, a la fin de chaque colonne j'ai un bouton qui permet de supprimer la ligne

et ça marche très bien.

sinon j'ai des bouton checkbox , je veux quand je sélectionne plusieurs lignes tous ces lignes se supprimes

Ma requette qui supprime

if(isset($_GET['delete']))
{
$delete = $_GET['delete'];
$req1="DELETE FROM ouvrages where id_ouv=$delete";
mysql_query($req1);}

mon tableau

 <tr>
<td><input type="checkbox" name="order[]" value="604"/></td>
<td></td>
<td><?php echo $titre_ouv ?></td>
<td><?php echo $auteur_ouv ?></td>
<td></td>
<td></td>
<td><?php echo $nbre_ouv ?></td>
<td><?php echo $anneepub_ouv ?></td>
<td><?php echo "<a href='administration-articles.php?delete=$id_ouv'>   <span class='icon-trash'></span></a>" ?></td>

bouton supprimer

 <?php echo "<a href='administration-articles.php?delete=$id_ouv'>   supp</a>" ?>
A voir également:

3 réponses

M3NSONG3 Messages postés 615 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 4 novembre 2021 162
23 avril 2018 à 11:50
Que dire...
Déjà, je pense que tu devrais passer sous PDO de façon urgente cette méthode est totalement obsolète et non sécurisé.
De plus, penses à te servir absolument de la fonction addslashes avant de récupérer un get ! Surtout si tu l'insères dans une query après !

Après tu as plusieurs moyen...Une boucle avec une liste par exemple ;)


0
Merci pour tes conseils , je vais essayer !
Je ne suis qu'une débutante , je vais développer les méthodes plus tard .
Maintenant j'ai juste besoin de terminer ce mini projet :p
Tu peux m'expliquer comment je peux faire une boucle avec une liste parce que j'ai pas compris que voulez-vous dire.
MERCI
0
M3NSONG3 Messages postés 615 Date d'inscription mardi 16 avril 2013 Statut Membre Dernière intervention 4 novembre 2021 162
23 avril 2018 à 13:07
J'ai un peu de mal sans la coloration syntaxique de mon côté, donc je me rends pas vraiment compte, puis sur portable ce n'est pas très efficace... Passer sous PDO ça demande d'apprendre deux ou trois trucs, mais ça te facilite la tache à la fin.
Je serais plus aptes à expliquer des choses ce soir si personne ne t'as encore aidé.
Si tu sais comment savoir si une checkbox est cochée grâce au $_POST[] il te suffira de les ajouter au fur à mesure dans une liste (Chercher sur la docs "array") et de faire une boucle avec les différentes Query. Je ne peux pas te fournir d'AJAX ni je javascript comme les autres je ne code pas ces langages là.

Je repasserais ce soir ;) Bon courage !
0
D'accord Mercii
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
23 avril 2018 à 12:00
Bonjour,

Pour gérer une "liste" de cases à cocher, tu dois :
- Avoir un formulaire qui encadre ton tableau
- Mettre un bouton qui "submit" le formulaire
- Récupérer le/les ID à supprimer en bouclant sur la variable POST (ou GET) que ton formulaire aura transmit.

Une autre solution, serait de passer par du Javascript + Ajax.
Regarde quelques exemples ici : https://codes-sources.commentcamarche.net/source/102253-exemple-ajax-en-jquery

Ou, écrit à l'arrache, un truc du genre (en AJAX)
//lors du click sur le bouton delete
$("#bouton_delete").click(function(){
    var ids ={};
    $.each($('.chk:checked'),function(i,elm){
      var id=$(this).val();
	  ids.push(id);
    }); 
	delete(ids);
});

//fonction qui fera appel au script PHP ajax   
function delete(ids){
	$.ajax({ 
	  type: "POST",
	  url: 'tonfichierphp_ajax.php',
	  data: {ids:JSON.stringify((ids)},
	  dataType: "json",
	  success: function(reponse){
		console.log(reponse);  
		
	  },
	  error:function(jqXHR, textStatus){
		console.log('ERROR AJAX : ' + textStatus);
	  }
	});  	
}

NB: Il faudra bien penser à inclure JQUERY à ta page.


Et côté PHP, un script du genre
<?php
// Fichier : tonfichierphp_ajax.php

//récupération PROPRE des variables avant de les utiliser
$ids = !empty($_POST['ids']) ? json_decode($_POST['ids'],true) : NULL;

if($ids){
  foreach($ids as $id_to_delete){
	$req1="DELETE FROM ouvrages where id_ouv='$id_to_delete'";
	mysql_query($req1);}
  }
}





Au passage ... https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top


0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 23 avril 2018 à 12:04
Petit oubli :
côté html tu devras ajouter une class à tes cases à cocher
td><input type="checkbox" name="order[]" value="604"  class='chk'/></td>
0
D'accord merci beaucoup!
c'est la première où je vais utiliser AJAX
pour mon bouton est-ce que c'es vrai mon codage?
  echo "<a href='administration-articles.php?id_to_delete=$ids'> supprimer</a>" 

Merci une autre fois
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
23 avril 2018 à 12:36
Pour le coup, si tu prends la solution de l'ajax, tu peux simplement mettre un bouton comme ceci:
<button id="bouton_delete">Supprimer </button>
0
je suis vraiment désolé pour le dérangement mais ça marche pas :/

voila ce que j'ai fait

<script type="text/javascript">//lors du click sur le bouton delete
$("#bouton_delete").click(function(){
var ids ={};
$.each($('.chk:checked'),function(i,elm){
var id=$(this).val();
ids.push(id);
});
delete(ids);
});

//fonction qui fera appel au script PHP ajax
function delete(ids){
$.ajax({
type: "POST",
url: 'administration-articles.php',
data: {ids:JSON.stringify((ids)},
dataType: "json",
success: function(reponse){
console.log(reponse);

},
error:function(jqXHR, textStatus){
console.log('ERROR AJAX : ' + textStatus);
}
});
</script>



<?php
//récupération PROPRE des variables avant de les utiliser
$ids = !empty($_POST['ids']) ? json_decode($_POST['ids'],true) : NULL;

if($ids){
foreach($ids as $id_to_delete){
$req1="DELETE FROM ouvrages where id_ouv=$id_to_delete";
mysql_query($req1);}


}

?>

<button id='bouton_delete'>Supprimer </button>


Au lieu de supprimer les données ce code ajoute de nouvelles données .
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
Modifié le 23 avril 2018 à 13:14
Tu as regardé les exemples du lien que je t'ai donné ?
Sachant que le code php... est à mettre dns un fichier à part...
As tu également inclus jquery a ta page ?
Et pour finir... Qu'as tu dans la console de ton navigateur ?
0
C'est Bon , j'ai trouvé la solution en utilisant PHP
voila le code

<?php
include("connexion.php");

if (!empty($_POST['supprimer'])) {
foreach ($_POST['supprimer'] as $cle) {
$var1=$_GET['Variable'];
$sql = "DELETE FROM `etudiant` WHERE cne='$cle' ";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
}}
include("administration-etudiants.php");
echo '<p><script type="text/javascript">alert(" Suppression avec succès!")</script></p>';

mysql_close();


?>


Je vais prendre en considération vos conseil Merci!
0