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 data en utilisant checkbox [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 67
    Par défaut suppression data en utilisant checkbox
    Bonjour,

    J'ai un forme compose de:
    School level

    Edit/Delete | Level Name
    ----------------------
    CheckBox | Level1
    CheckBox | Level2
    CheckBox | Level3

    avec un bouton pour supprimer les lignes choisis

    et voici le code de Interface Level :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    while($row = mysql_fetch_row($result))
    {
        echo "<tr>";
     
        // $row is array... foreach( .. ) puts every element
        // of $row to $cell variable
        foreach($row as $cell)
    	 echo "<td align='center'> <input type='checkbox' name='delete[]' value='".$cell['ID_level']."'> </td>";
            echo "<td align='center'>$cell</td>";
     
        echo "</tr>\n";
    }
    et le code de suppression:

    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
    <?php 
    $delete = isset($_POST['delete_level']) ? $_POST['delete'] : array();
    //$valeur = isset($_POST['ID_level']) ? $_POST['ID_level'] : array();
    if (isset($_POST['formName']) && !empty($_POST['delete'])) 
    {
    	echo ' Vous n\'avez pas selectionné d\'enregistrements ';
    	exit;
    	}
    else
    	{
    	$db = mysql_connect('localhost', 'root', '');
    	mysql_select_db('texxon',$db);
    	echo $delete.'<br>';
    	$sql="DELETE FROM level where ID_level='".$delete."'";
    		echo $sql;
    		$req= mysql_query($sql);
     
    	foreach ($delete as $valeur)
    	{
    		$sql="DELETE FROM level where ID_level='".$valeur."'";
    		echo $valeur;
    		$req= mysql_query($sql);
    	} 
    echo ' ----suppression effectuer --- ';
    }
    ?>
    il me dit que la suppression effectuer mais rien ne change.

    Merci de votre aide
    Images attachées Images attachées  

  2. #2
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $sql="DELETE FROM level where ID_level='".$delete."'";
    echo $sql;
    $req= mysql_query($sql);
     
    foreach ($delete as $valeur)
    {
    	$sql="DELETE FROM level where ID_level='".$valeur."'";
    	echo $valeur;
    	$req= mysql_query($sql);
    }
    Pourquoi fais tu 2 requêtes sur la même table, avec la même condition mais 1 coup avec $delete, et de l'autre une boucle sur $delete ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $delete = isset($_POST['delete_level']) ? $_POST['delete'] : array();
    Seul le 2ème cas (boucle) est le bon, car plus haut (ci-dessus), $delete est un tableau.

    Aussi, tu fais un echo $valeur. Ca donne quoi comme résultat ?
    Entre tu dans la boucle ?

    Fait un print_r($_POST) au tout début, pour voir s'il contient quelque chose, et comment.
    Si $_POST contient rien pour 'delete', alors ce serait un problème au niveau du formulaire.


    Rajoute aussi un mysql_error() après la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req= mysql_query($sql) or die('Erreur : '.mysql_error());


    Ceci dit, cette condition ne serait pas correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['formName']) && !empty($_POST['delete']))
    Ce ne serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!isset($_POST['formName']) || empty($_POST['delete']))

  3. #3
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Moi je ferai quelque chose comme ca :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(!isset($_POST['delete'])){
          echo ' Vous n\'avez pas selectionné d\'enregistrements ';
          exit;
    }else{
          $in = '';
          foreach($_POST['delete'] as $valeur)
                  $in .= $valeur.',';
     
          $in = substr($in, 0, -1);
     
          mysql_query('DELETE FROM level where ID_level IN ('.$in.')');
    }

  4. #4
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 67
    Par défaut
    Citation Envoyé par Madfrix Voir le message
    Moi je ferai quelque chose comme ca :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(!isset($_POST['delete'])){
          echo ' Vous n\'avez pas selectionné d\'enregistrements ';
          exit;
    }else{
          $in = '';
          foreach($_POST['delete'] as $valeur)
                  $in .= $valeur.',';
     
          $in = substr($in, 0, -1);
     
          mysql_query('DELETE FROM level where ID_level IN ('.$in.')');
    }
    J'ai utilise ca mais il affiche le message suivant :

    Notice: Undefined index: delete in C:\Program Files\EasyPHP5.2.10\www\School Managment\delete_level.php on line 30
    Vous n'avez pas selectionné d'enregistrements


    il ne connait pas le mot delete, Pourquoi ?

  5. #5
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    il ne connait pas le mot delete, Pourquoi ?
    On n'en sait pas plus que toi, on sais juste que cette donnée n'a pas été retournée.

    Il au moins cocher 1 case, sinon ça va pas.
    Et si tu as bien coché une case, et bien c'est au niveau du formulaire qu'il faut voir.
    Mais vu qu'on a pas 1 bout code du formulaire, on ne pourra pas t'en dire plus.

    Donc : Comment est il construit / Codé ?

    Ceci dit, je t'avais suggéré de faire un print_r($_POST) au tout début de ton code.
    L'as tu fait ?
    Qu'est ce ça a retourné ? Quelque chose ? Rien ?

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 67
    Par défaut
    [COLOR="rgb(139, 0, 0)"]Voici le code epres mettre print_r($_POST) dedans:[/COLOR]

    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
     
    if (!isset($_POST['del']) || empty($_POST['del'])) 
    {
    	print_r($_POST);
    	echo ' Vous n\'avez pas selectionné d\'enregistrements ' ;
    	exit;
    	}
    else
    	{
     
    	$db = mysql_connect('localhost', 'root', '');
    	mysql_select_db('texxon',$db) or die('Erreur : '.mysql_error());
     
    	$sql="DELETE FROM level where ID_level='".$delete."'" or die('Erreur : '.mysql_error());
    		echo $sql;
    		$req= mysql_query($sql) or die('Erreur : '.mysql_error());
     
    	foreach ($_POST['del'] as $valeur)
    	{
    		print_r($_POST);
    		$sql="DELETE FROM level where ID_level='".$valeur."'";
    		echo $valeur;
    		$req= mysql_query($sql);
     
    	} 
    echo ' ----suppression effectuer --- ';
     
    }
    Et voici la resultat :
    Array ( [Delete] => Delete )
    Vous n'avez pas selectionné d'enregistrements


    Citation Envoyé par RunCodePhp Voir le message
    On n'en sait pas plus que toi, on sais juste que cette donnée n'a pas été retournée.

    Il au moins cocher 1 case, sinon ça va pas.
    Et si tu as bien coché une case, et bien c'est au niveau du formulaire qu'il faut voir.
    Mais vu qu'on a pas 1 bout code du formulaire, on ne pourra pas t'en dire plus.

    Donc : Comment est il construit / Codé ?

    Ceci dit, je t'avais suggéré de faire un print_r($_POST) au tout début de ton code.
    L'as tu fait ?
    Qu'est ce ça a retourné ? Quelque chose ? Rien ?

  7. #7
    Membre confirmé
    Inscrit en
    Octobre 2007
    Messages
    67
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 67
    Par défaut
    Citation Envoyé par RunCodePhp Voir le message
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $sql="DELETE FROM level where ID_level='".$delete."'";
    echo $sql;
    $req= mysql_query($sql);
     
    foreach ($delete as $valeur)
    {
    	$sql="DELETE FROM level where ID_level='".$valeur."'";
    	echo $valeur;
    	$req= mysql_query($sql);
    }
    Pourquoi fais tu 2 requêtes sur la même table, avec la même condition mais 1 coup avec $delete, et de l'autre une boucle sur $delete ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $delete = isset($_POST['delete_level']) ? $_POST['delete'] : array();
    Seul le 2ème cas (boucle) est le bon, car plus haut (ci-dessus), $delete est un tableau.

    Aussi, tu fais un echo $valeur. Ca donne quoi comme résultat ?
    Je fais ça pour vérifier a chaque fois la valeur quel prend ces variables.
    Entre tu dans la boucle ?

    Fait un print_r($_POST) au tout début, pour voir s'il contient quelque chose, et comment.
    Si $_POST contient rien pour 'delete', alors ce serait un problème au niveau du formulaire.


    Rajoute aussi un mysql_error() après la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req= mysql_query($sql) or die('Erreur : '.mysql_error());


    Ceci dit, cette condition ne serait pas correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_POST['formName']) && !empty($_POST['delete']))
    Ce ne serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!isset($_POST['formName']) || empty($_POST['delete']))
    ca ne marche pas, je pense que le probleme est plutot au niveau de la formulaire,
    Vous pouvez m'aider de le connaitre, ca fait 2 jour que je travail a ca .

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

Discussions similaires

  1. suppression des données en utilisant checkbox
    Par sunatva dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 30/01/2009, 13h34
  2. [AJAX] Suppression données mysql avec checkbox et passant par ajax
    Par MartiW dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 09/12/2008, 09h56
  3. suppression de lignes, utilisation where (suite de and et de or)
    Par jamesleouf dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 26/05/2008, 14h05
  4. [PHP-JS] aide utilisation checkbox
    Par calitom dans le forum Langage
    Réponses: 7
    Dernier message: 28/06/2006, 14h13

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