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 :

Récupérer valeur multiple checkbox + mise à jour [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cambodge

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2010
    Messages : 221
    Par défaut Récupérer valeur multiple checkbox + mise à jour
    Bonjour,

    Après avoir mis en place un formulaire d'insertion, je désire pouvoir éditer une fiche client.

    Je me retrouve dans mon formulaire avec plusieurs checkbox.

    J'essaie de les récupérer via la base de données mais cela ne fonctionne pas comme je le veux.

    Voici mon code ci-dessous. Je pense que je dois avoir une problème de tableau mais que je n'arrive pas à identifier.

    Je récupère bien la liste des checkbox mais pas leur valeurs. Or en base de données, tout est correct; également avec les clés étrangères.
    Merci d'avance,
    David

    Code php : 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
    $sql_cat = DbConnect::getInstance()->query("SELECT * FROM category
            JOIN category_lang
            ON category.id_category=category_lang.id_category 
            WHERE lang='".$_SESSION['lang']."' AND active=1");
    $sql_id = DbConnect::getInstance()->query("SELECT id_category FROM project_category WHERE id_project=".$_GET['id']);
    while($row_cat = $sql_cat->fetch(PDO::FETCH_ASSOC)){
        $row_id = $sql_id->fetch(PDO::FETCH_ASSOC);
        $id = $row_cat['id_category'];
        $id_cat =  $row_id['id_category'];
        if($id == $id_cat){
            $checked = ' checked="checked" ';
        }else{
            $checked = '';
        }
        echo '<div class="middle">'."\n";
        echo '<input type="checkbox" name="category['.$id.']" id="cat_'.$id.'" value="'.$row_cat['id_category'].'"'.$checked.'>'."\n";
        echo '<label class="styled" for="cat_'.$id.'">'.$row_cat['name'].'</label>'."\n";
        echo '</div>'."\n";
    }

  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
    Par défaut
    Regarde ce que tu fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while($row_cat = $sql_cat->fetch(PDO::FETCH_ASSOC)){
        $row_id = $sql_id->fetch(PDO::FETCH_ASSOC);
    Tu prends une ligne de la première requête, une ligne de l'autre requête et tu les compares.
    Ca ne donne fatalement rien.
    Si tu avais debugué en affichant les valeurs à chaque tour de boucle tu t'en serais rendu compte.

    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
     
    while ( $row_id = $sql_id->fetch(PDO::FETCH_ASSOC)) {
       $tbl_project_category[$row['id_category']] = TRUE;
    }
     
    while($row_cat = $sql_cat->fetch(PDO::FETCH_ASSOC)){
       $id = $row_cat['id_category'];
       if(isset($tbl_project_category[$id])){  // si l'id est présent dans project_category
            $checked = ' checked="checked" ';
        }else{
            $checked = '';
        }
        echo '<div class="middle">'."\n";
        echo '<input type="checkbox" name="category['.$id.']" id="cat_'.$id.'" value="'.$row_cat['id_category'].'"'.$checked.'>'."\n";
        echo '<label class="styled" for="cat_'.$id.'">'.$row_cat['name'].'</label>'."\n";
        echo '</div>'."\n";
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cambodge

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2010
    Messages : 221
    Par défaut
    Merci beaucoup Sabotage,

    j'avais débuggué mais je n'avais pas vu cela...

    Je poste le code final et je clôture.

    Code php : 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
     
                $sql_cat = DbConnect::getInstance()->query("SELECT * FROM category
                                                            JOIN category_lang
                                                            ON category.id_category=category_lang.id_category 
                                                            WHERE lang='".$_SESSION['lang']."' AND active=1");
                $sql_id = DbConnect::getInstance()->query("SELECT id_category FROM project_category WHERE id_project=".$_GET['id']);
                while($row_id = $sql_id->fetch(PDO::FETCH_ASSOC)){
                    $tbl_project_category[$row_id['id_category']] = true;
                }
                while($row_cat = $sql_cat->fetch(PDO::FETCH_ASSOC)){
                    $id = $row_cat['id_category'];
                    if(isset($tbl_project_category[$id])){  // si l'id est présent dans project_category
                         $checked = ' checked="checked" ';
                     }else{
                         $checked = '';
                     }
                     echo '<div class="middle">'."\n";
                     echo '<input type="checkbox" name="category['.$id.']" id="cat_'.$id.'" value="'.$row_cat['id_category'].'"'.$checked.'>'."\n";
                     echo '<label class="styled" for="cat_'.$id.'">'.$row_cat['name'].'</label>'."\n";
                     echo '</div>'."\n";
                }

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/03/2007, 10h23
  2. Valeur zone avant mise à jour
    Par gbrunelle dans le forum Access
    Réponses: 4
    Dernier message: 16/12/2006, 14h41
  3. Récupérer valeurs multiples d'une JLIST
    Par bobic dans le forum Composants
    Réponses: 3
    Dernier message: 14/09/2006, 16h37
  4. Valeur à la dernière mise à jour ?
    Par szdavid dans le forum Langage SQL
    Réponses: 5
    Dernier message: 06/09/2005, 08h40
  5. CR9 - Récupérer valeurs multiples d'un champ paramètre
    Par CR9-Deb dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/07/2005, 16h08

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