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 :

[SQL] Récupération de la valeur d'un CheckBox


Sujet :

PHP & Base de données

  1. #1
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut [SQL] Récupération de la valeur d'un CheckBox
    Bonjour,

    Je vais essayer d'être le plus clair possible dans ce problème qui (me) semble complexe.

    J'ai un script PHP qui gènère du code html pour afficher des photos dans mon CMS. Le nom des photos et leur 'identité' est stocké dans une base de données. En dessous de chaque photo se trouve un CheckBox pour pouvoir par la suite choisir de publier ou non la photo sur le site.

    Voici le script qui génère le code html (je n'ai pas mis ici les requêtes SQL):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    echo "\t<div class=\"checktoff\">\n<center><div><img src=\"/v2/photos/img_photo/{$photo['nom']}\" height=\"100\" alt=\"\" /></center>\n";
    			echo "<form name=\"selphoto\" method=\"POST\" action=\"\">\n";
    			echo "<center><input type=\"checkbox\" name=\"cb{$photo['id']}\" value=\"ok\" ></center>\n";
    			echo "</form>\n";
    			echo "</div>\n";
    A une autre place sur ma page j'ai un bouton "Sauver" qui permet, quand on le presse, de parcourir tous les CheckBox et d'enregistré la valeur ("ok") qui correspond a la photo dans la base de données.

    Script du bouton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    echo "<form name=\"selphoto\" method=\"POST\" action=\"\">\n";
    		echo "<p>\n";
    		echo "Sauver les modifications";
    		echo "</p>\n";
    		echo "<p>\n";
    		echo "<input type=\"submit\" name=\"sauver\" value=\"Sauver\">\n";
    		echo "</p>\n";
    		echo "</form>\n";
    La "<form>" du bouton à le même nom que la "<form>" des CheckBox. De ce côté ca devrait donc jouer...

    Ensuite le bout de script qui foire. La ligne du if($_POST['$cbval']... ne fonctionne pas comme elle devrait. Ca parait compliqué mais je dois faire ça pour savoir quelle CheckBox correspond à quelle photo. C'est pour cette raison que je dois faire une requête pour avoir les id des photos qui sont les memes que les noms des checkbox!!

    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
    //Si on presse le bouton sauver
    if(isset($_POST['sauver'])){
    	//Reqête qui permet d'avoir a disposition les id des photos qui correspondent aux nom des checkbox
    	$q_vis=mysql_query("SELECT * FROM `image` WHERE `parent` = {$_GET['gallery']}");
    	while($zt = mysql_fetch_array($q_vis)){
    		//Concaténation pour avoir les noms des checkbox
    		$cbval = "cb".$zt['id'];
    		if($_POST['$cbval'] == "ok"){
    			$bVisi = 1;
    		}else{
    			$bVisi = 0;
    		}
    		//Insertion de la valeur dans la db
    	mysql_query("UPDATE `image` SET `visibility` ={$bVisi}  WHERE `id` ={$zt['id']}");
    	}
    }
    Tout fonctionne sauf que le if ne va jamais dans $bVisi = 1;. J'ai donc toujours dans ma base de données la valeur 0 dans le champ visibility.

    Vous me sortirier une sacré épine du pied si vous pouvier m'aider!!

    P.S: J'ai essayer avec un tableau pour les noms des checkboxs, mais ça ne correspond pas vraiment a mon application puisque je dois savoir à quelle photo appartient le checkbox.

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Bonjour,
    c'est normal ça :

    Parce que PHP ne vérifie pas les variables avec des guillemets simple, seulement en double et pis, c'est franchement pas utile de l'entourer alors qu'il y a pas de texte a insérer.

    Cordialement,
    DaRiaN.

  3. #3
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut
    Merci pour la réponse rapide.

    J'ai corrigé mais ça ne fonctionne pas quand même.

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    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
    <?php
     
      if (isset($_POST['sauver']))
      {
     
        // echo '<pre>';
        // print_r($_POST);
        // exit('</pre>');	  
     
        $dummy = $_GET['gallery'];
     
        $q_vis = mysql_query('SELECT * FROM `image` WHERE `parent` = "'.$dummy.'"');
     
        while ($zt = mysql_fetch_array($q_vis))
        {
     
          $cbval = 'cb'.$zt['id'];
     
          if ($_POST[$cbval] == 'ok') $bVisi = 1;
          else $bVisi = 0;
     
          mysql_query('UPDATE `image` SET `visibility` = '.$bVisi.'  WHERE `id` = '.$zt['id']);
     
        }
     
      }
     
    ?>
    Il faudrait regarder ce que contient le tableau, decommentez les trois lignes de ma version modifiée de votre script pour visualiser le tableau $_POST et ainsi vérifier que vous avez bien des checkbox dans la liste et que leur valeur est bien égale à "ok".

    D'habitude, quand je travaille avec des checkbox, je fais plutôt un if (isset($_POST['checkbox1']))... mais bon.

  5. #5
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut
    En décommentant les lignes j'obtient ça

    Array
    (
    [sauver] => Sauver
    )

    Ca voudrait dire que je ne transmet pas les valeurs des checkbox (via POST).
    L'erreur se siturait donc à une autre place...

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Août 2005
    Messages
    514
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 514
    Par défaut
    Ah, l'erreur était de croire que de donner le même nom à votre balise form pouvait coupler les deux contenus. Non, tout doit être dans une même et unique balise form, sinon c'est deux formulaires séparés.

  7. #7
    Membre habitué
    Inscrit en
    Décembre 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 9
    Par défaut
    Effectivement!

    En tout cas merci de m'avoir aidé.

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

Discussions similaires

  1. récupération de la valeur d'un checkbox en js
    Par laurentSc dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 24/03/2010, 09h15
  2. Récupération de la valeur d'une checkbox
    Par Klimium dans le forum SWT/JFace
    Réponses: 1
    Dernier message: 10/04/2009, 12h03
  3. récupération de la valeur d'une checkbox
    Par lodan dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/02/2008, 07h03
  4. Réponses: 7
    Dernier message: 19/05/2007, 11h33
  5. Réponses: 7
    Dernier message: 08/03/2007, 20h05

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