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 :

checkbox gérant la suppression d'une ligne [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Points : 359
    Points
    359
    Par défaut checkbox gérant la suppression d'une ligne
    Bonjour,

    Bon voilà mon problème :

    J'ai un formulaire avec des checkbox, suisvant si on coche la checkbox je vais créer une ligne dans une table, jusque là pas de problème, la ligne est bien créée. Ensuite si l'utilisateur veut modifier le produit je remet le formulaire avec les cases cochées comme prévu, pas de problème non plus...

    J'en viens donc au problème ^^ L'utilsateur décoche une case mais je n'arrive pas à voir comment supprimer ma ligne du tableau aprés qu'il est décoché la case... Je sais pas si je me suis bien expliqué...

    VOici le code :

    D'abord j'affiche les checkbox suivant un paramètre qui n'a pas vraiment d'importance poiur mon problème,
    Je coche ou non les cases s'il existe une ligne dans ma table :

    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
     
    <!-- Options -->
    <?
     if($rows>0)
    {?>
     
    <b>Options</b></label></br>
     
    <?	$i=0;
    	while($opt=mysql_fetch_object($res)){
     
    		$id_opt=$opt->id_option;
     
    		$test="select * from ".$extension."optionByRec where id_opt='$id_opt' and id_recette='".$recette->id_recette."'";
    		$restest=mysql_query($test);
    		$rowtest=mysql_num_rows($restest);
     
    		if($rowtest>0)
    		{
     
    			while($testopt=mysql_fetch_object($restest))
    			{
    				$check[$i]='checked="checked"';
    			}
     
    		}
     
    		 ?>
     
    		<input type="checkbox" name="option[<? echo $i; ?>]" value="<? echo $opt->id_option; ?>" <? echo $check[$i]; if($check[$i]){$counter++;} ?> /><? echo $opt->nomOption; ?></br>
     
            <? 	$i++;	
    	}
    }
    ?>
    Ensuite je vais récupérer en POST mes données des checkbox pour faire un INSERT. En gros je récupère un id si ma case est cochée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    if(isset($option))
       {		   
    		  for($i=0; $i<$nb; $i++)
    		  {		  
    		  		if($option[$i] != NULL)//On reprend les cases cochées
    				{
    							$req="insert into ".$extension."optionByRec set id_recette='$id_recette', id_opt='$option[$i]'";
    							$res=mysql_query($req);
     
    				}
                                  }
    }
    Le soucis c'est que s'il décoche la case la variable "$option" devient nul et du coup je ne récupère pas l'id de ma recette qui a été décochée. Si je pouvais récupérer l'id de la case décochée je pourrai faire un DELETE mais impossible...

    J'ai du mal a expliqué ce que je veux faire, en espérant que vous ayez compris.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu ajoutes un champ caché accompagnant chaque case a cocher, tu sauras ainsi les cases qui étaient présentes, et comparer avec celles qui n'ont pas retournés une valeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="checkbox" name="checkbox[]" value="' . $id . '" />
    <input type="hidden" name="shakebox[]"  value="' . $id . '" />
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach ($_POST['shakebox'] as $key=>$id) {
       if (!isset($_POST['checkbox'][$key])) {
             $sql = "DELETE FROM table WHERE id =" . $id;
        }
    }

  3. #3
    Membre averti Avatar de Sekigawa
    Profil pro
    Développeur Web
    Inscrit en
    Mars 2008
    Messages
    432
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mars 2008
    Messages : 432
    Points : 359
    Points
    359
    Par défaut
    J'ai pas trop pigé ce que tu as fais lol

    surtout cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach ($_POST['shakebox'] as $key=>$id) {
       if (!isset($_POST['checkbox'][$key])) {
             $sql = "DELETE FROM table WHERE id =" . $id;
        }
    }
    en gros faut que je change tout mes traitement avec cette façon de faire ??

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

Discussions similaires

  1. [JTABLE] suppression d'une ligne (prise de tete)
    Par uraxyd dans le forum Composants
    Réponses: 1
    Dernier message: 14/12/2005, 19h19
  2. Réponses: 3
    Dernier message: 19/09/2005, 13h20
  3. [Debutant][JTable] Suppression d'une ligne
    Par seiryujay dans le forum Composants
    Réponses: 7
    Dernier message: 03/08/2005, 17h15
  4. [JTable] problème après suppression d'une ligne
    Par fredo3500 dans le forum Composants
    Réponses: 7
    Dernier message: 17/03/2005, 10h01
  5. Réponses: 6
    Dernier message: 04/03/2004, 09h35

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