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ération des données d'un formulaire avec 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 habitué
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Par défaut Récupération des données d'un formulaire avec checkbox
    Bonjour,
    j'ai pas mal cherché sur le forum sans trouvé de solution à mon problème alors je viens demander de l'aide,
    désolé par avance si le titre n'est pas explicite mais je ne savais pas trop comment le définir...

    J'ai une page php qui affiche une liste de produits tirée d'une base SQL.

    Je peux modifier des options sur chaque ligne puis valider les modifications faites sur la page avec un bouton $_POST.

    Je traite le tout avec une page de traitement (code ci-dessous) mais je rencontre un souci avec des checkbox,
    il s'agit de $_POST['Creserved'], je souhaite modifier la valeur avant écriture dans la BDD mais si j'ai une liste de 3 produits
    <td>PROD1</td><td>checkbox</td>
    <td>PROD2</td><td>checkbox</td>
    <td>PROD3</td><td>checkbox</td> (je coche cette checkbox)
    et que je coche seulement le dernier de la liste, après traitement celui qui est coché est le premier de la liste.
    résultat :
    <td>PROD1</td><td>checkbox</td> (checkbox cochée)
    <td>PROD2</td><td>checkbox</td>
    <td>PROD3</td><td>checkbox</td> (checkbox non cochée)

    J'ai ce problème seulement avec la partie du code qui traite les checkbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if (isset(Creserved[$key]))
    $Creserved_format[$key] = '1';
    else $Creserved_format[$key] = '0';
    Je ne parviens pas à résoudre ce problème... Mes connaissances en php ne sont pas hyper développées,
    j'apprends tout seul. Merci d'avance de votre aide.

    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
    <?php
    require_once('_connexion.php'); 
     
    /*Récupérer les données */
    $CKey = $_POST['CKey'];
    $Cid = $_POST['Cid'];
    $Clanguage = $_POST['Clanguage'];
    $Cetat = $_POST['Cetat'];
    $Ccote = $_POST['Ccote'];
    $Ccommentaire = $_POST['Ccommentaire'];
    $Creserved = $_POST['Creserved'];
     
    foreach ($CKey as $key => $value)
    {
     
    if (isset(Creserved[$key]))
    $Creserved_format[$key] = '1';
    else $Creserved_format[$key] = '0';
     
    /* requete de MAJ */ 
    $query_collec_modif = ("UPDATE collection SET 
     	Clanguage = '$Clanguage[$key]', Cetat = '$Cetat[$key]', Ccote = $Ccote[$key], Ccommentaire = '$Ccommentaire[$key]', Ctab = '1', Creserved = '$Creserved_format[$key]'
    	WHERE CKey=$CKey[$key];"); 
     
    $result = mysql_query($query_collec_modif) or die('Erreur SQL !<br>'.$query_collec_modif.'<br>'.mysql_error());
    echo $query_collec_modif.'<br/>';
    }
    header('Location: collection_modif.php');  
    ?>

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Regarde bien la coloration syntaxique :if (isset(Creserved[$key])). Il ne manquerait pas un $ quelque part ?

    Au passage, pendant la phase de développement, il vaut mieux activer toutes les erreurs PHP, y compris les NOTICES, car une notice peut signaler l'arbre qui cache la forêt.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre habitué
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Par défaut
    Oui effectivement, je l'ai oublié mais même en rectifiant cette erreur le comportement est identique.

    Pour ce qui est d'afficher les erreurs PHP je n'ai pas la main dessus le fichier php.ini

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Pour afficher les erreurs, tu peux ajouter error_reporting(E_ALL); au début de ton script.

    Pour tes checkboxes, est-ce que la valeur est bien mise à jour en base dans le bon champ ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Membre habitué
    Inscrit en
    Mars 2010
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mars 2010
    Messages : 9
    Par défaut
    Dans la base, ce n'est pas la bonne ligne qui est mise à jour.
    Pour les autres champs c'est bon mais seule la valeur issue de la checkbox s'enregistre sur la 1ère ligne produit visible.

    voilà le résultat issu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo $query_collec_modif.'<br/>';
    UPDATE collection SET Clanguage = 'KR', Cetat = 'M', Ccote = 15, Ccommentaire = 'comment1', Ctab = '1', Creserved = 1 WHERE CKey=26; <<< Creserved est à 1 au lieu de 0
    UPDATE collection SET Clanguage = 'IT', Cetat = 'NM', Ccote = 0, Ccommentaire = 'comment2', Ctab = '1', Creserved = 0 WHERE CKey=28;
    UPDATE collection SET Clanguage = 'FR', Cetat = 'NM', Ccote = 40, Ccommentaire = 'comment3', Ctab = '1', Creserved = 0 WHERE CKey=23;
    UPDATE collection SET Clanguage = 'FR', Cetat = 'NM', Ccote = 40, Ccommentaire = 'comment4', Ctab = '1', Creserved = 0 WHERE CKey=24;
    UPDATE collection SET Clanguage = 'CN', Cetat = 'PL', Ccote = 40, Ccommentaire = 'À supprimer', Ctab = '1', Creserved = 0 WHERE CKey=17;
    UPDATE collection SET Clanguage = 'JP', Cetat = 'NM', Ccote = 80, Ccommentaire = '\'insert \'', Ctab = '1', Creserved = 0 WHERE CKey=27; <<< Creserved est à 0 au lieu de 1

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Il y a peut-être un problème au niveau du formulaire, on peut voir le code du formulaire ?
    Sinon, question bête : ce que tu veux en base, c'est bien cochée = 1, non cochée = 0 ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. Modifier des donnés sql par formulaire (avec variables)
    Par expression dans le forum Langage
    Réponses: 2
    Dernier message: 29/03/2008, 09h35
  2. Récupération des données d'un formulaire
    Par amtdev dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/07/2007, 15h19
  3. [Tableaux] Récupération des données d'un formulaire
    Par projetM dans le forum Langage
    Réponses: 3
    Dernier message: 22/05/2006, 00h01
  4. Réponses: 3
    Dernier message: 23/04/2006, 12h14
  5. Récupération des données d'un formulaire
    Par placenargac dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 04/02/2006, 15h10

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