IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Suppression d'une entrée en fonction d'un checkbox


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Avatar de Sieldev
    Profil pro
    Étudiant
    Inscrit en
    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 : 353
    Points
    353
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre habitué Avatar de rougedragon
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 128
    Points
    128
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="suppression.php">
    et dans la page suppression.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  3. #3
    Membre averti
    Avatar de Sieldev
    Profil pro
    Étudiant
    Inscrit en
    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 : 353
    Points
    353
    Par défaut
    J'ai corrigé un peu le code notamment le if qui verifiait si le chekbox etait bien coché:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($_POST['choix'] == on)
    je l'ai donc remplacer par un if(isset()) suivi d'un if:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(isset($_POST['choix']))
    			{
    			    if($choix == on)
    J'ai verifié si :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_POST['suppr']))
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    $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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre habitué Avatar de rougedragon
    Inscrit en
    Septembre 2006
    Messages
    132
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Septembre 2006
    Messages : 132
    Points : 128
    Points
    128
    Par défaut
    je vais regarder ton code de plus près plus tard.
    Moi pour une pizzéria j'ai fais ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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+

  5. #5
    Membre averti
    Avatar de Sieldev
    Profil pro
    Étudiant
    Inscrit en
    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 : 353
    Points
    353
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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		
    								}
     
     
    							}
    					}
    			}

  6. #6
    Membre averti
    Avatar de Sieldev
    Profil pro
    Étudiant
    Inscrit en
    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 : 353
    Points
    353
    Par défaut
    C'est bon enfin reussi... pfiouuu

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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>";
     
     
    		}
     
     
     
    ?>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. suppression d'une entrée sur un bloc subsystem
    Par bendesarts dans le forum Simulink
    Réponses: 2
    Dernier message: 13/03/2010, 10h05
  2. Suppression d'une ligne en fonction du contenu d'une case
    Par Iloon dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/06/2008, 13h43
  3. suppression d'une entrée du sommaire
    Par grrimag dans le forum VBA Word
    Réponses: 4
    Dernier message: 18/02/2008, 11h17
  4. [MySQL] Suppression d'une entrée dans ma BDD
    Par Luverger dans le forum PHP & Base de données
    Réponses: 35
    Dernier message: 19/02/2007, 13h39
  5. JSP : Suppression d'une entrée dans un tableau html
    Par ze veritable farf dans le forum Servlets/JSP
    Réponses: 34
    Dernier message: 11/04/2006, 16h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo