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 10/12/2006, 00h03   #1
Membre confirmé
 
Avatar de Sieldev
 
Étudiant
Inscription : décembre 2006
Messages : 259
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 259
Points : 285
Points : 285
Par défaut Suppression d'une entrée en fonction d'un checkbox

Salut,

J'ai fait un script PhP pour que l'utilisateur puisse supprimer une entrée d'une table si il a coché un checkbox.
Quand je lance le script, il n'y a pas d'erreur php mais quand je choisi l'entrée à supprimer puis je clique sur le bouton supprimer, rien ne se fait.
Si vous pouviez me donne un coup de main

Voila le code:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
 
<?php
 
	mysql_connect("localhost", "root", ""); 
	mysql_select_db("basedif");
 
			$sql = "select NumNews,Titre,Date,Auteur from news;";
   			$result = mysql_query($sql) or die('Erreur SQL : '.mysql_error());
			$nb=0;
 
 
 
			echo "<h1>Panneau d'administration</h1>";
			echo '<h2>Liste des News</h2>';
			echo "<p><table border=1 width='50%'>";
			echo '<tr><th>N°</th><th>Titre</th><th>Date</th><th>Auteur</th></tr>';
 
				while($champs = mysql_fetch_array($result))
					{
						echo "<tr><td>".$champs[0]."</td><td>".$champs[1]."</td><td>".$champs[2]."</td><td>".$champs[3]."</td><td><input type='checkbox' name='choix'></td></tr>";
						$nb++;
					}
 
			echo "</table><p>";
			echo "Il y a ".$nb." news.<br>";
 
			echo 'Sélectionnez les news que vous voulez supprimer<br>';
			echo "<input type='submit' name='suppr' value='Supprimer'>";
			echo '<input type="reset" value="Annuler">';
 
 
 
			if(isset($_POST['suppr']))
 
					{
						if ($_POST['choix'] == on)
							{
								$requete=mysql_query("delete from news where NumNews=".$champs[0].";");
							}
 
 
					}
 
 
 
?>
Merci d'avance
Sieldev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 02h00   #2
Membre régulier
 
Avatar de rougedragon
 
Inscription : septembre 2006
Messages : 126
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2006
Messages : 126
Points : 91
Points : 91
j'ai peut être mal lu mais il manque les balises <form> qui vont déterminer la destination de ton choix
tu devrais avoir:
Code :
<form action="suppression.php">
et dans la page suppression.php
Code :
1
2
3
4
5
6
7
 if(isset($_POST['suppr']))
 
					{
						if ($_POST['choix'] == on)
							{
								$requete=mysql_query("delete from news where NumNews=".$champs[0].";");
							}
dis moi si je divague.
rougedragon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 02h03   #3
Membre confirmé
 
Avatar de Sieldev
 
Étudiant
Inscription : décembre 2006
Messages : 259
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 259
Points : 285
Points : 285
J'ai corrigé un peu le code notamment le if qui verifiait si le chekbox etait bien coché:
Code :
if ($_POST['choix'] == on)
je l'ai donc remplacer par un if(isset()) suivi d'un if:
Code :
1
2
3
if(isset($_POST['choix']))
			{
			    if($choix == on)
J'ai verifié si :
Code :
if(isset($_POST['suppr']))
et
Code :
1
2
3
if(isset($_POST['choix']))
			{
			    if($choix == on){
etaient vérifiés, ils le sont.
Le probléme vient surement de la:
Code :
$requete=mysql_query("delete from news where NumNews = '".$_POST['champs[0]']."';");
Ou alors il faut lier le checkbox à l'entrée en question mais je ne suis pas inspiré.

Voila le code en entier pour que vous puissiez tout voir:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
 
 
 
<?
 
	mysql_connect("localhost", "root", ""); 
	mysql_select_db("basedif");
 
			$sql = "select NumNews,Titre,Date,Auteur from news;";
   			$result = mysql_query($sql) or die('Erreur SQL : '.mysql_error());
			$nb=0;
 
 
 
			echo "<h1>Panneau d'administration</h1>";
			echo '<h2>Liste des News</h2>';
			echo '<form action="supnews.php" method=post>';
			echo "<p><table border=1 width='50%'>";
			echo '<tr><th>N°</th><th>Titre</th><th>Date</th><th>Auteur</th></tr>';
 
				while($champs = mysql_fetch_array($result))
					{
						echo "<tr><td>".$champs[0]."</td><td>".$champs[1]."</td><td>".$champs[2]."</td><td>".$champs[3]."</td><td><input type='checkbox' name='choix'></td></tr>";
						$nb++;
					}
 
			echo "</table><p>";
			echo "Il y a ".$nb." news.<br>";
 
 
			echo 'Sélectionnez les news que vous voulez supprimer<br>';
			echo "<input type='submit' name='suppr' value='Supprimer'>";
			echo '<input type="reset" value="Annuler">';
			echo '</form>';
 
 
 
			if(isset($_POST['suppr']))
 
					{
						if(isset($_POST['choix']))
							{
								if($choix == on)
									{
										$requete=mysql_query("delete from news where NumNews = '".$_POST['champs[0]']."';");
									}
							}
 
 
					}
 
 
 
?>

EDIT: dsl rougedragon j'ai posté en même temps que toi, oui pour les balises <form action></form> je les ai ajouté (voir code ci-dessus) et pour les conditions j'ai corrigé et vérifié si elles marchaient (voir explications au-dessus). Maintenant je pense que le probléme vient plutot de ma requête ou alors il faut lier le checkbox à la variable de l'entrée
Sieldev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 11h58   #4
Membre régulier
 
Avatar de rougedragon
 
Inscription : septembre 2006
Messages : 126
Détails du profil
Informations personnelles :
Âge : 42

Informations forums :
Inscription : septembre 2006
Messages : 126
Points : 91
Points : 91
je vais regarder ton code de plus près plus tard.
Moi pour une pizzéria j'ai fais ça:
Code :
1
2
3
4
5
6
7
8
9
10
11
while ($tab=mysql_fetch_array($menu))
{
$nom=$tab['nom'];
$info=$tab['ingredients'];
$cle=$tab['idpizza'];
 
echo'<tr><td bgcolor=\"#FFCCFF\"><strong>'.$nom.'</strong></td>';
echo'<td bgcolor="#FFCCFF">'.$info.'</td>';
echo'<td bgcolor="#FFCC00"><a href=update2.php?cle='.$cle.'>Modifier</a>';
echo"<td bgcolor=\"#FF0000\"><a href=confirm2.php?cle=$cle&lex=$lex>Supprimer</a></td>";
};
et dans la page suppression
Code :
1
2
3
4
5
6
7
 
$idpizza=$_GET['cle'];
if ((isset($_GET['cle'])) && ($_GET['cle'] != "")) {
  $deleteSQL ="DELETE FROM pizza WHERE idpizza=$idpizza";
 
  mysql_select_db($database_pizza, $pizza);
  $Result1 = mysql_query($deleteSQL, $pizza) or die(mysql_error());
je ne sais pas si ça t'aide

A+
rougedragon est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 13h14   #5
Membre confirmé
 
Avatar de Sieldev
 
Étudiant
Inscription : décembre 2006
Messages : 259
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 259
Points : 285
Points : 285
En faites la chose que je veux faire c'est afficher les entrées d'une table.
A coté de chaque entrée il y a une case à cocher (checkbox) qui permet de supprimer l'entrée.

Mais j'ai du mal à retranscrire ça en php.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
 
{
 
  $sql = "select NumNews,Titre,Date,Auteur from news;";
  $result = mysql_query($sql) or die('Erreur SQL : '.mysql_error()); //J'etablis une requete qui me selectionne les champs demandé dans la table en question
 
  $nb=0; //J'initialise le compteur à 0
 
 
 
	echo "<h1>Panneau d'administration</h1>";
	echo '<h2>Liste des News</h2>';
	echo '<form action="supnews.php" method=post>';
	echo "<p align=center><table border=0 width='95%'>";
	echo '<tr><th bgcolor=#236df6>N°</th><th bgcolor=#8397d8>Titre</th><th bgcolor=#236df6>Date</th><th bgcolor=#8397d8>Auteur</th></tr>';
 
		while($champs = mysql_fetch_array($result)) //Boucle qui mets les entrées de ma table dans un tableau
			{
				echo "<tr><td bgcolor=#236df6 align=center>".$champs[0]."</td><td bgcolor=#8397d8 align=center>".$champs[1]."</td><td bgcolor=#236df6 align=center>".$champs[2]."</td><td bgcolor=#8397d8 align=center>".$champs[3]."</td><td bgcolor=#236df6 align=center><input type='checkbox' name='choix[]' id='choix[]' value='.$champs[0].'></td></tr>"; 
                                //.$champs[0]. , .$champs[1]. , .$champs[2]. et .$champs[3]. represente respectivement les variables de NumNews, Titre,Date et Auteur pour chaque entrée dans le tableau. Le checkbox à name='choix[]' id='choix[]' value='.$champs[0].'
				$nb++;
			} //fin de la boucle
 
				echo "</table></p>";
				echo "<p align=center>Il y a <font size color='red'>".$nb."</font> news.</p><br>";
 
 
				echo '&nbsp;&nbsp;&nbsp;&nbsp;Sélectionnez les news que vous voulez supprimer<br>';
				echo "<p align=center><input type='submit' name='suppr' value='Supprimer'>";
				echo '<input type="reset" value="Annuler"></p>';
				echo '</form>';
 
 
 
				if(isset($_POST['suppr'])) // Etablit la condition au moment ou le bouton supprimer est cliqué							
 
					{
						if(isset($_POST['choix[]'])) //Etabli une condition dans les checkbox qui ont pour nom choix[]			
 
							{
							      foreach($_POST['choix[]'] as $champs[0] && $_POST['choix[]'] == on)	// La c'est faux, j'aimerai lié le checkbox à NumNews afin qu'il supprime bien l'entrée de la case coché et verifié si la case est coché				
								{
							        $requete=mysql_query("delete from news where NumNews ='$champs[0]';"); //Suppression de la table surement faux aussi		
								}
 
 
							}
					}
			}
Sieldev est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/12/2006, 13h38   #6
Membre confirmé
 
Avatar de Sieldev
 
Étudiant
Inscription : décembre 2006
Messages : 259
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : décembre 2006
Messages : 259
Points : 285
Points : 285
C'est bon enfin reussi... pfiouuu

Je vous mets le code en entier et je commente entre //

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
 
<?php
	mysql_connect("localhost", "root", ""); 
	mysql_select_db("basedif"); 					
 
	     $sql = "select * from membre where Pseudo = '".$_SESSION['Pseudo']."'";
   	     $req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
   	     $row = mysql_fetch_assoc($req); //Selectionne les entrées de la table membre
 
		if($row['Niveaux'] == 'Moderateur' || $row['Niveaux'] == 'Administrateur') // Verifie le niveau du membre connecté
 
			{ //Si le membre à le niveau adequat faire l'action suivante
 
			     $sql = "select NumNews,Titre,Date,Auteur from news;";
   			     $result = mysql_query($sql) or die('Erreur SQL : '.mysql_error()); //Afficher les entrées en fonction des champs selectionnés (NumNews, Titre etc...)
 
			     $nb=0; //Initialiser le compteur à zéro
 
 
 
			    echo "<h1>Panneau d'administration</h1>";
			    echo '<h2>Liste des News</h2>';
			    echo '<form action="supnews.php" method=post>';
			    echo "<p align=center><table border=0 width='95%'>";
			    echo '<tr><th bgcolor=#236df6>N°</th><th bgcolor=#8397d8>Titre</th><th bgcolor=#236df6>Date</th><th bgcolor=#8397d8>Auteur</th></tr>';
 
				while($champs = mysql_fetch_array($result)) // Boucle "tant que" (while en anglais) ce qui donne Tant que la requete affiche des resultats faire l'action suivante
						{
							echo "<tr><td bgcolor=#236df6 align=center>".$champs[0]."</td><td bgcolor=#8397d8 align=center>".$champs[1]."</td><td bgcolor=#236df6 align=center>".$champs[2]."</td><td bgcolor=#8397d8 align=center>".$champs[3]."</td><td bgcolor=#236df6 align=center><input type='checkbox' name='choix[]' value='".$champs[0]."'></td></tr>";
                                                        // $champs[0], $champs[1],$champs[2] et $champs[3] represente respectivement NumNews,Titre,Date et Auteur. La checkbox à pour nom choix[] et pour valeur la variable de NuimNews c'est à dire $champs[0]
							$nb++; //incrementation de +1 de la variable nb
						}// fin de la boucle
 
			echo "</table></p>";
			echo "<p align=center>Il y a <font size color='red'>".$nb."</font> news.</p><br>";
 
 
			echo '&nbsp;&nbsp;&nbsp;&nbsp;Sélectionnez les news que vous voulez supprimer<br>';
			echo "<p align=center><input type='submit' name='suppr' value='Supprimer'>"; //Ne pas oublié de nommer le submit dans ce cas la name='suppr'
			echo '<input type="reset" value="Annuler"></p>';
			echo '</form>';
 
 
 
			if(isset($_POST['suppr'])) // Si la condition est etablit: dans ce cas la Si l'utilisateur clique sur le submit qui a pour nom 'suppr'	faire action suivante						
 
				{
 
 
						foreach($choix as $champs[0])	//Pour chaque choix (choix=nom de la checkbox) fait qui a pour valeur la variable champs[0] faire l'action suivante				
							{
						             $requete=mysql_query("delete from news where NumNews ='$champs[0]';"); //Supprimer l'entrée qui a pour NumNews la valeur de de la variable en question	
							}
 
 
				}
 
		}
 
		else // Retour à la premiere condition par rapport au niveau du membre: Si le membre à le niveaux adequat Faire action 1 sinon (else) faire action2
 
		{
 
 
			echo "<p align=center>Vous n'avez pas accès à cette page</p>";
 
 
		}
 
 
 
?>
Sieldev 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 09h18.


 
 
 
 
Partenaires

Hébergement Web