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 :

Enregistrer checkbox dans bdd avec un update


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 34
    Points : 20
    Points
    20
    Par défaut Enregistrer checkbox dans bdd avec un update
    Bonjour,

    J'essaye d'enregistrer le booleen coché à 1 dans le champ formulaire_affich de ma bdd, j'ai fait plusieurs tentatives mais ça ne fonctionne pas, rien dans le champ à l'update.
    Comment je peux faire ?

    Merci pour l'aide



    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
     
     
    if(isset($_POST['submit']))
    {
    	if (isset($_POST['Id_status']) && !empty($_POST['Id_status'])) 
    	{
    		foreach ($_POST['Id_status'] as $Id_status) 
    		{
    			echo $Id_status.'<br />'; // Correspond aux valeurs des Id_status cochés
    			$query = mysql_query('UPDATE table SET formulaire_affich = 1 WHERE id = '.$Id_status);
    		}
            }
    	else 
    	{
    		// Aucun statut de coché
    	}
    }


    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    echo '<td><input type="checkbox" name="Id_status[]" value='.$item['Id_status'].'></td>';

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="submit" name"submit" value="Enregistrer"/>

  2. #2
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 815
    Points : 32 346
    Points
    32 346
    Par défaut
    BOnjour,

    1- tu en es encore à utiliser mysql_ ?

    2- Il manque des double quotes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td><input type="checkbox" name="Id_status[]" value="'.$item['Id_status'].'" /></td>';
    3- Le echo $Id_status affiche-t-il bien les bonnes valeurs (checkbox cochées) ?
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  3. #3
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 34
    Points : 20
    Points
    20
    Par défaut
    Merci pour ta réponse.
    Je sais je code comme une porcinette mais je vais essayer de m'améliorer avec le temps...
    Je ne récupère rien dans le , il en a rien à faire

  4. #4
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 815
    Points : 32 346
    Points
    32 346
    Par défaut
    Vérifie que ton formulaire est bien en method="post".
    sinon, par défaut, c'est get.
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  5. #5
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 34
    Points : 20
    Points
    20
    Par défaut
    Oui il l'est bien
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    <form method="post" action="index.php">

  6. #6
    Membre confirmé
    Homme Profil pro
    Déveleoppeur Web/Mobile Fullstack
    Inscrit en
    avril 2013
    Messages
    292
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Déveleoppeur Web/Mobile Fullstack
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : avril 2013
    Messages : 292
    Points : 462
    Points
    462
    Par défaut
    Tu peux inspecter l'élément de tes inputs et vérifier les valeurs de $item['Id_status']Car si sa valeur est vide, il est normal que tu reçoives des données vides

  7. #7
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 34
    Points : 20
    Points
    20
    Par défaut
    Oui quand je passe par l'inspecteur, la valeur est vide, il n'y a rien dans le tableau.
    Mon champ dans ma table est formulaire_affich et je souhaite récupérer une valeur 1 si le checkbox est coché, qu'est-ce qui ne va pas du coup dans mon code ?

  8. #8
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 815
    Points : 32 346
    Points
    32 346
    Par défaut
    Bonjour,

    peux-tu :
    • montrer le formulaire complet (avec le PHP) ?
    • ainsi qu'un extrait du code HTML généré ("Ctrl"+"U")
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  9. #9
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 34
    Points : 20
    Points
    20
    Par défaut
    Merci

    voici le code du formulaire :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <!-- saved from url=(0014)about:internet -->
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    </head>
     
    <body>
    
    
    <div id="wrapper">
    	<div id="pressurePage">
    	
    	<br /><br /><br />
    	
    	<form method="post" action="index.php" class="form">
      <div class="form-group has-search">
      <span class="fa fa-search form-control-feedback"></span>
      <input type="text" class="form-control" placeholder="Search" style="clear: both;float: right;margin: -60px 14px 0 0;width: 50%; height: 34px;" name="keywords" value="<?php //echo $description; ?>">
      <button type="submit" class="btn btn-info" style="clear: both;float: right;margin: -60px 14px 0 0;" value="Rechercher"> Search </button>
    </div>
    </form>
    
    <br />
    	
    		<div id="holder" class="holder">
    			<div class="colmask leftmenu">
    			
    							
    						
    						
            <div class="container admin">
                <div class="row2">
     				<table class="table table-striped table-bordered">
                      <thead>
                        <tr>
    					  <th>Code</th>
                          <th>Description</th>
                          <th>Quantité</th>
                          <th>Catégorie</th>
                          <th>Date</th>
                          <th><div align="center">Vignette</div></th>
                          <th>Actions</th>
                          <th>FL</th>
                        </tr>
                      </thead>
                      <tbody>
                          <?php
    					  
                            require 'database.php';
                            $db = Database::connect();
    						
    						
    						if(isset($_POST['envoyer']))
    						{
          						if(!empty($_POST['formulaire_affich'])) 
    							{
    								foreach($_POST['formulaire_affich'] as $formulaire_affich) 
    								{
    									$query = mysql_query('UPDATE documentation SET formulaire_affich = 1 WHERE id = '.$formulaire_affich);
    									 //do your update query
    							 	}
    						   	}
    						}
    												
    												
    						
    						
                            $statement = $db->query("SELECT * 
    						FROM table
    						WHERE elt = 1
    						ORDER BY " . $orderby);
    						
                            while($item = $statement->fetch()) 
                            {
                                echo '<tr>';
    							echo '<td class="couleur_texte">'. $item['code'] . '</td>';
                                echo '<td>'. $item['description'] . '</td>';
    							echo '<td align="center">'. $item['qte_stock'] . '</td>';
                                echo '<td>'. $item['cat'] . '</td>';
    														
    							$date_d = $item['date_maj'];
    							echo '<td>'. strftime('%d-%m-%Y',strtotime($date_d)) . '</td>';
    							
    							echo '<td align="center">';
    							
    							if (empty($item['image']))
    							{
    								//il n'y a rien dedans donc on affiche rien
    							}
    							else
    							{
    							?> 
    				  <img src="../images/<?php echo $item['image']; ?>"  style="width:110px;height:144px;"/> 
    							<?php
    							}
    							echo '</td>';
    							echo '<td><input type="checkbox" name="Id_status[]" value='.$item['Id_status'].'></td>';
    							echo '</td>';
    							
    							echo '</tr>';
    							
                            }
                            Database::disconnect();
                          ?>
    					  
    					  
    					  
    					  <input type="submit" class="head3" name"submit" value="submit"/>
    					  
                    </table>
    				
    				</form>
    				
                </div>
            </div>
    							
    							
    							
    							
    							
    		  </div>
    	  </div>
    
    </div>
    </div>
    
    
    </div>
    <div id="footer">
    	<div id="footerWrapper">
    		<div class="ft-b">
    		</div>
    	</div>
    	<div class="ft-bl">
    	</div>
    	
    </div>
    
    
    </div>
    </body>
    </html>



    Et pour le code html :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
     <td><input type="checkbox" name="Id_status[]" value=""></td>

    il n'y a rien d'autre qui soit retourné

  10. #10
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 815
    Points : 32 346
    Points
    32 346
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <td><input type="checkbox" name="Id_status[]" value=""></td>
    Tu vois bien que la value est vide !...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td><input type="checkbox" name="Id_status[]" value='.$item['Id_status'].'></td>';
    C'est donc le $item['Id_status'] qui ne va pas... (et le echo '</td>'; juste après est à supprimer)

    1- Montre la STRUCTURE de ta table SQL "table".

    2- Question subsidiaire : comment est effectuée la connexion dans database.php ??
    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  11. #11
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 34
    Points : 20
    Points
    20
    Par défaut
    Voici ma table :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    CREATE TABLE IF NOT EXISTS `table` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `code` varchar(50) NOT NULL,
      `description` varchar(100) NOT NULL,
      `image` varchar(300) NOT NULL,
      `version_numerique` varchar(300) NOT NULL,
      `categorie` int(11) NOT NULL,
      `division` varchar(50) NOT NULL,
      `qte_stock` int(11) NOT NULL,
      `qte_demande` int(11) NOT NULL,
      `formulaire_affich` int(11) NOT NULL,
      `date_maj` date NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


    et ma connexion à la base pour la partie update, :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $dbname = 'base';
    $hostname = 'localhost';
    $username = 'root';
    $password = '';
    $conn = mysql_connect($hostname,$username,$password);
    $db_selected=mysql_select_db($dbname,$conn);


    et ma partie database.sql pour l'affichage des données :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    class Database
    {
    	private static $dbHost = "localhost";
        private static $dbName = "interdb";
        private static $dbUsername = "root";
        private static $dbUserpassword = "";
     
        private static $connection = null;
     
        public static function connect()
        {
            if(self::$connection == null)
            {
                try
                {
                  self::$connection = new PDO("mysql:host=" . self::$dbHost . ";dbname=" . self::$dbName , self::$dbUsername, self::$dbUserpassword);
                }
                catch(PDOException $e)
                {
                    die($e->getMessage());
                }
            }
            return self::$connection;
        }
     
        public static function disconnect()
        {
            self::$connection = null;
        }
     
    }

    Je ne maîtrise pas très bien les classes, j'ai fait ma partie update de façon plus ancienne pour arriver à solutionner mon problème, je galérais autrement. Désolée pour le code pas très beau.

  12. #12
    Rédacteur/Modérateur
    Avatar de jreaux62
    Homme Profil pro
    Webdesigner
    Inscrit en
    août 2008
    Messages
    15 815
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Arts - Culture

    Informations forums :
    Inscription : août 2008
    Messages : 15 815
    Points : 32 346
    Points
    32 346
    Par défaut
    LOL...

    1- $item['Id_status'], alors que c'est 'id' dans la table SQL
    2- Tu fais une connexion en PDO, et aussi en mysql_... ... mais pas sur la même base ! (PDO : $dbName = "interdb" - mysql_ : $dbname = "base")

    Il serait temps de faire le ménage (dans ton code !), non ?

    "Si tu suis le chemin qui s'appelle « plus tard », tu arriveras à la place qui s'appelle « jamais »."
    François Camille Prévot (1910-1996), instituteur puis Directeur d'école et... mon grand-père.
    "Pose ta question, tu seras idiot une seconde. Ne la pose pas, tu seras idiot toute ta vie."
    Albert Einstein (1879-1955).
    Mes tutos DVP
    Gestion-Affichage de Nouvelles
    Affichage en tableau HTML
    Fonctions de redimensionnement d'images

  13. #13
    Membre à l'essai
    Femme Profil pro
    Étudiant
    Inscrit en
    septembre 2011
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : septembre 2011
    Messages : 34
    Points : 20
    Points
    20
    Par défaut
    ah ah ah ah ah ah ah
    Ca marche pas même en changeant le id_status en id
    Pour la bdd, je travaille bien sur la même mais je n'avais pas changé le nom pour le mettre sur ce site, oubli
    C'est sympa de se faire moquer comme ça, je viens pour apprendre.
    Merci en attendant pour l'aide apportée

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

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

    Informations forums :
    Inscription : avril 2007
    Messages : 8 451
    Points : 16 061
    Points
    16 061
    Par défaut
    Bon, un problème à la fois :

    1) Faire fonctionner les accès à la base : Même si la programmation objet ne t'est pas familière, tu peux quand même utiliser PDO. En te basant sur le mini-tuto indiqué par jreaux PDO une soupe et au lit !, tu peux remplacer le mysql_connect par l'appel au script de connexion (correctement renseigné et placé au bon endroit dans ton arborescence ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $db = include 'db_mysql.php';
    et ensuite faire les requêtes dessus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = mysql_query('UPDATE table SET formulaire_affich = 1 WHERE id = '.$Id_status);
    devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $stmt = $db->prepate('UPDATE table SET formulaire_affich = 1 WHERE id = :id ');
    $stmt->execute([':id' => $Id_status]);
    2) Faire fonctionner ton formulaire : Commence par faire le ménage. Les noms de champs utilisés dans le formulaire doivent être les mêmes, casse comprise, que ceux utilisés dans le PHP. Seules les cases à cocher cochées sont envoyées au formulaire, et tu reçois ce qui se trouvait dans l'attribut value du 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]

Discussions similaires

  1. [MySQL] Update résultat checkbox dans bdd à partir d'un formulaire
    Par crastinette dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 07/07/2017, 22h56
  2. stocker resultat checkbox dans BDD avec serialize
    Par mikael2235 dans le forum Langage
    Réponses: 3
    Dernier message: 20/08/2012, 02h21
  3. Enregistrement dans BDD avec boucle: Error!
    Par tryks dans le forum Langage
    Réponses: 8
    Dernier message: 24/05/2009, 18h32
  4. [MySQL] Bug enregistrement formulaire dans bdd Mysql
    Par Vanaheim dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 23/07/2008, 01h05
  5. [MySQL] Enregistrement formulaire dans BDD
    Par Elrubio dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/08/2007, 13h02

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