Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/08/2007, 13h48   #1
Futur Membre du Club
 
Inscription : août 2006
Messages : 110
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : août 2006
Messages : 110
Points : 18
Points : 18
Envoyer un message via MSN à keishah
Par défaut [SQL] Supprimer les éléments sélectionnés avec une case à cocher

Hello! Voilà je ne trouve pas de solution pour supprimer des données d'une table Mysql.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php include('inc/connexion.php'); 
$sql = 'SELECT * FROM links';
 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo '<table><tr><td>Nom</td><td>Url</td><td>Supprimer</td></tr>';
while($data = mysql_fetch_assoc($req))
    {
	echo '<tr><td>'.$data['nom'].'</td>';
	echo '<td>'.$data['url'].'</td>';
	echo '<td><input name="'.$data['id'].'" type="checkbox" value="" /></td>';
	echo '</tr>';
	 }
echo '</table>';
mysql_close();
 
?>
Je voudrais supprimer les checkbox sélectionner! merciii
keishah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 13h51   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Bonjour!

Le code que tu donnes permet de lister les données d'une base, il ne correspond pas du tout au code de suppression des données dans la base.
Maintenant si c'est parce que tu ne l'as pas encore fait on peut te donner des idées. Il faut que tes checkboxes soit placées dans un formulaire html qui ca aussi avoir un bouton. Quand tu cliques sur ce bouton ca se charge de poster le formulaire et d'envoyer la liste des checkboxes qui sont cochées, tu auras alors les id des lignes à supprimer dans ta base et tu pourras faire ta requete de DELETE FROM...
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 13h58   #3
Futur Membre du Club
 
Inscription : août 2006
Messages : 110
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : août 2006
Messages : 110
Points : 18
Points : 18
Envoyer un message via MSN à keishah
Oui je cherche des idées pour supprimer les id séléctionner!
Je vois pour le form mais pour récuperer la liste des checkbox séléctionnées comment faire?
keishah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h08   #4
Membre habitué
 
Inscription : juillet 2006
Messages : 137
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 137
Points : 142
Points : 142
Salut,

Pour récupérer une liste (checkbox), il faut:
1. Nommer ta checkbox ainsi:
Code :
<input type="checkbox" name="maListe[]" value="'.$date[id].'" />'.$date[id].'
Les crochets sont importants, ils vont permettre de récupérer le tableau contenant les valeurs des cases cochées.

2. Dans ta page qui va faire la suppression:
Code :
1
2
 
$liste = $_POST['maListe'];
Ensuite tu n'a plus qu'à faire une boucle pour supprimer chaque éléments de la liste.

Voilà, bon courage
mikaoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h08   #5
Futur Membre du Club
 
Inscription : août 2006
Messages : 110
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : août 2006
Messages : 110
Points : 18
Points : 18
Envoyer un message via MSN à keishah
Ok je test merci
keishah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h17   #6
Futur Membre du Club
 
Inscription : août 2006
Messages : 110
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : août 2006
Messages : 110
Points : 18
Points : 18
Envoyer un message via MSN à keishah
re ^^

Code :
1
2
3
4
5
	echo '<td><input type="checkbox" name="maListe[]" value="'.$date[id].'" /></td>';
	echo '</tr>';
	 }
echo '</table>';
echo '<input type="submit" name="button" id="button" value="Supprimer" /></form>';
Voilà le bout que j'ai rajouter

pour testé j'essai d'afficher la valeur de MaListe dans la page qui supprime mais il affiche Array ! ( C'est un tableau comment faire )
keishah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h22   #7
Membre habitué
 
Inscription : juillet 2006
Messages : 137
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 137
Points : 142
Points : 142
Il te faut parcourir le tableau
Code :
1
2
3
4
 
$liste = $_POST['maListe'];
for($i=0;$i<sizeof($liste);$i++)
  print $liste[$i];
Parcourir le tableau, c'est aller du début ($i=0) à la fin du tableau (sizeof($liste)).
Ensuite tu affiches chaque élément du tableau: l'éléments à la position i ($liste[$i]).
mikaoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h28   #8
Futur Membre du Club
 
Inscription : août 2006
Messages : 110
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : août 2006
Messages : 110
Points : 18
Points : 18
Envoyer un message via MSN à keishah
Il n'affiche rien! mais quand je met
il répete $liste[$i] autant de fois que j'ai sélectionner une checkbox! donc ca marche mais j'arrive pas a récuperé la valeur de liste[$i]
keishah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h34   #9
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
entre quote simple ' ' les variables php ne sont pas interprétées.
De plus, entre quote doubles " " ce sont les tableaux qui ne sont pas interprétés.
Il faut donc faire
ou
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h36   #10
Futur Membre du Club
 
Inscription : août 2006
Messages : 110
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : août 2006
Messages : 110
Points : 18
Points : 18
Envoyer un message via MSN à keishah
ça ne marche pas non plus ! je te refile mon code

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
<?php include('inc/connexion.php'); 
$sql = 'SELECT * FROM links';
 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo '<form action="inc/delLinks.php" method="post" name="delLinks">';
echo '<table><tr><td>Nom</td><td>Url</td><td>Supprimer</td></tr>';
while($data = mysql_fetch_assoc($req))
    {
	echo '<tr><td>'.$data['nom'].'</td>';
	echo '<td>'.$data['url'].'</td>';
	echo '<td><input type="checkbox" name="maListe[]" value="'.$date[id].'" /></td>';
	echo '</tr>';
	 }
echo '</table>';
echo '<input type="submit" name="button" id="button" value="Supprimer" /></form>';
 
mysql_close();
 
?>
et pour le fichier delLinks.php

Code :
1
2
3
4
5
6
7
8
9
 
<?php
 
$liste = $_POST['maListe'];
for($i=0;$i<sizeof($liste);$i++) 
{
echo "{$liste[$i]}";  
}
?>
keishah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h37   #11
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
et sans les quotes?

EDIT: quand tu dis que ca ne marche pas je suppose que ca n'affiche rien en fait?
tu utilises $date[id] dans ta boucle au lieu de $data['id']
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h39   #12
Membre habitué
 
Inscription : juillet 2006
Messages : 137
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 137
Points : 142
Points : 142
Juste pour tester si ton tableau contient quelque chose, essai
Code :
1
2
3
 
if(sizeof($liste)<1)
 print "vide";
mikaoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h46   #13
Futur Membre du Club
 
Inscription : août 2006
Messages : 110
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : août 2006
Messages : 110
Points : 18
Points : 18
Envoyer un message via MSN à keishah
Youpie! ça marche! désolé pour l'erreur c'est parceque j'ai copier collé sans réfléchir se que tu ma dis!

le code :
Code :
1
2
3
4
5
6
7
8
9
10
11
 
<?php
include('connexion.php'); 
$liste = $_POST['maListe'];
for($i=0;$i<sizeof($liste);$i++)
{
$sql = "DELETE FROM links WHERE id=$liste[$i]";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
}
 
?>
Si y'a mieux n'ésite pas !^^
keishah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h54   #14
Membre habitué
 
Inscription : juillet 2006
Messages : 137
Détails du profil
Informations personnelles :
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations forums :
Inscription : juillet 2006
Messages : 137
Points : 142
Points : 142
Désolé, autant pour moi :-)
mikaoul est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 14h55   #15
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Citation:
Envoyé par keishah
Si y'a mieux n'ésite pas !^^
Un poil mieux :
Code php :
1
2
3
4
5
include('connexion.php'); 
$liste = $_POST['maListe'];
$sql = "DELETE FROM links WHERE id IN (" . explode(',', $liste).")";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
}
Ca va te permettre de ne faire qu'une seule requete SQL a chaque fois.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 15h00   #16
Futur Membre du Club
 
Inscription : août 2006
Messages : 110
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : août 2006
Messages : 110
Points : 18
Points : 18
Envoyer un message via MSN à keishah
Merci mais erreur
Citation:
Parse error: syntax error, unexpected '}' in C:\wamp\www\djsonero\admin\inc\delLinks.php on line 5
il manque l'ouverture je pense
keishah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 15h02   #17
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Citation:
Envoyé par keishah
Merci mais erreur
Code X :
Parse error: syntax error, unexpected '}' in C:\wamp\www\djsonero\admin\inc\delLinks.php on line 5

il manque l'ouverture je pense
non faut l'enlever, elle traine du copier coller, désolé! Mais tu aurais pu tester sans
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 15h27   #18
Futur Membre du Club
 
Inscription : août 2006
Messages : 110
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : août 2006
Messages : 110
Points : 18
Points : 18
Envoyer un message via MSN à keishah
j'avais testé sans mais =
Citation:
Erreur SQL !
DELETE FROM links WHERE id IN (Array)
Unknown column 'Array' in 'where clause'
keishah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 15h31   #19
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
j'ai pas les yeux en face des trous, désolé !

Code :
1
2
3
4
 
$liste = $_POST['maListe']; 
$sql = "DELETE FROM links WHERE id IN (" . implode(',', $liste).")"; 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/08/2007, 15h38   #20
Futur Membre du Club
 
Inscription : août 2006
Messages : 110
Détails du profil
Informations personnelles :
Âge : 25

Informations forums :
Inscription : août 2006
Messages : 110
Points : 18
Points : 18
Envoyer un message via MSN à keishah
Merciiii ! ça marche
keishah est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h54.


 
 
 
 
Partenaires

Hébergement Web