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 :

Enregistrer checkbox dans bdd avec un update


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    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
    Invité
    Invité(e)
    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) ?

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    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
    Invité
    Invité(e)
    Par défaut
    Vérifie que ton formulaire est bien en method="post".
    sinon, par défaut, c'est get.

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    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
    Inscrit en
    Avril 2013
    Messages
    330
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2013
    Messages : 330
    Points : 545
    Points
    545
    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
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    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
    Invité
    Invité(e)
    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")

  9. #9
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    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
    Invité
    Invité(e)
    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 ??

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    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
    Invité
    Invité(e)
    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 ?


  13. #13
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    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 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    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]

  15. #15
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    Bonjour et merci pour votre aide

    J'ai fait le ménage dans mon code et ajouter des modifications Celira :

    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
     
    				<form action="index.php" method="post">
     
    				<table class="table table-striped table-bordered">
                      <thead>
                        <tr>
    					  <th>Code</th>
                          <th>Description</th>
                          <th>Qté</th>
                          <th>Cat.</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['submit']))
    						{
    							if (isset($_POST['formulaire_affich']) && !empty($_POST['formulaire_affich'])) 
    							{
    								foreach ($_POST['formulaire_affich'] as $formulaire_affich) 
    								{
    									$stmt = $db->prepare('UPDATE doc SET formulaire_affich = 1 WHERE id = :id ');
    									$stmt->execute([':id' => $formulaire_affich]);
    								}
    							}
    							else 
    							{
    								// Aucune case cochée
    							}
    						}
     
     
                            $statement = $db->query("SELECT * FROM doc where categorie_publication = 1");
     
                            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['categorie_publication'] . '</td>';
    							echo '<td>';
    						?>
    							<input type="checkbox" name="formulaire_affich[]" value="<?php echo $item['formulaire_affich']; ?>" />
    							<input type="submit" name="submit" value="ajouter"/>
    							<?php
     
    							echo '</td>';
    							echo '</tr>';
                            	}
                            Database::disconnect();
                          ?>
     
     
                    </table>
     
    				</form>

    Le problème vient certainement de l'id, il ne le trouve pas. Je donne la possibilité de pouvoir cocher plusieurs checkbox et on valide avec un bouton à la fin ceux que l'on veut modifier d'où le foreach mais il y a quelque chose qui ne va pas du coup.
    Merci en attendant

  16. #16
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    Salut,

    Déjà if(isset($_POST['submit'])), il est ou le bouton de type submit ayant l'attribut name="submit" ?

  17. #17
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    Je viens de le changer dans mon précédent message mais ça ne change rien, ça ne fonctionne pas, je ne récupère pas le 1 dans ma table.

  18. #18
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    Le problème vient surement de l'id, parce que $formulaire_affich représente les valeurs des checkbox, donc soit 1(cochée) soit 0(non cochée) mais pas l'id de la ligne.

  19. #19
    Nouveau membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2011
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2011
    Messages : 50
    Points : 30
    Points
    30
    Par défaut
    Il ne rentre pas dans la boucle, j'ai rien à l'affichage.

    Je l'ai testé après le code et là il m'affiche bien formAff :1

    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
     
    if(isset($_POST['submit']))
    						{
    							if (isset($_POST['formulaire_affich']) && !empty($_POST['formulaire_affich'])) 
    							{
    								foreach ($_POST['formulaire_affich'] as $formulaire_affich) 
    								{
     
    									echo 'ici';
    									$stmt = $db->prepare('UPDATE documentation SET formulaire_affich = 1 WHERE id = :id ');
    									$stmt->execute([':id' => $formulaire_affich]);
     
    									echo "formAff :".$formulaire_affich;
    								}
    							}
    							else 
    							{
    								// Aucune case cochée
    							}
    						}
     
    						echo "formAff :".$formulaire_affich;

  20. #20
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 396
    Points : 4 825
    Points
    4 825
    Par défaut
    D'abord, tu dois passer le id de chaque ligne dans le bouton submit (ou bien ajouter un input de type hidden juste après le bouton submit):
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input type="submit" name="submit" value="Modifier"/>
    <input type="hidden" name="id" value="<?php echo $item["id"];?>" />

    après pour l'update, tu récupères le $_POST["id"] qui devient le id maintenant :
    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
     
     
    if(isset($_POST['submit']))
    {
           $id=$_POST['id'];
           echo "id de la ligne :".$id;
    	if (isset($_POST['formulaire_affich']) && !empty($_POST['formulaire_affich'])) 
    	{       /* tu peux préparer la requête en dehors du foreach, d'ailleur je ne vois pas l'utilité de cette boucle foreach si tu n'a qu'une seule case à cocher dans chaque ligne....*/
    	        $stmt = $db->prepare('UPDATE doc SET formulaire_affich = 1 WHERE id = :id ');
    		foreach ($_POST['formulaire_affich'] as $formulaire_affich) 
    	       {
                           $stmt->execute([':id' => $id]);//ici tu met $id et pas $formulaire_affich
    		}
    	}
            else 
           {
           // Aucune case cochée
           }
    }

    Met toujours des echo pour voir ce qui se passe.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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