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 checkbox cliqués générés de façon dynamique dans la page


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut Récupérer checkbox cliqués générés de façon dynamique dans la page
    Bonjour,

    J'ai construit une page sur laquelle il y a un formulaire d'inscription avec de la documentation que l'on peut demander en cliquant des checkbox. Pour mettre à jour cette documentation qui peut être amenée à évoluer, j'ai créé un système de mise à jour qui permet di'nsérer de nouvelles docs, d'en supprimer, de cliquer celles qui s'afficheront sur le formulaire ou pas... Ce que je n'arrive pas à faire est la récupération des checkbox cliqués sur le formulaire. J'ai une table documentation dans laquelle je décompose mes checkbox, le code de chaque documentation se trouve dans ce champ : code_publication_doc, une ligne est créée pour chaque documentation insérée, je récupère aussi le stock, la doc demandée par quel utilisateur, la date...).

    Voici ma table avec un exemple d'insertion :
    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
    16
    17
    18
     
    CREATE TABLE `documentation` (
      `id` int(11) NOT NULL AUTO_INCREMENT,
      `code_publication_doc` varchar(50) NOT NULL,
      `description` varchar(100) NOT NULL,
      `image` varchar(300) NOT NULL,
      `version_numerique` varchar(300) NOT NULL,
      `categorie_publication` int(11) NOT NULL,
      `division` varchar(50) CHARACTER SET latin1 COLLATE latin1_spanish_ci NOT NULL,
      `qte_stock` int(11) NOT NULL,
      `qte_demande` int(11) NOT NULL,
      `date_maj` date NOT NULL,
      `formulaire_affich` int(11) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    INSERT INTO `documentation` (`id`, `code_publication_doc`, `description`, `image`, `version_numerique`, `categorie_publication`, `division`, `qte_stock`, `qte_demande`, `date_maj`, `formulaire_affich`) VALUES
    (4,	'20fds329-FP',	'synthese',	'synthese.jpg',	'affiche.php?ref=2027',	2,	'3',	17,	11,	'2021-07-26',	0),

    Voilà et mon souci se situe à ce niveau là, je ne sais pas comment écrire le code pour bien récupérer de façon individuelle dans chaque champ mes checkbox cliqués :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <img style="text-decoration:none;"  class="bordure" src="../images/<?php echo $rang['image']; ?>" alt="../images/<?php echo $rang['description']; ?>" width="110" height="144"/></a> 
    					<br /><br />
    					<input type="checkbox" name="chk1[]" value="<?php echo $rang['code_publication_doc']; ?>"<?php if(isset($_POST['chk1']) AND in_array($rang['code_publication_doc'], $_POST['chk1'])) {echo 'checked="checked"';} ?> id="<?php echo $rang['code_publication_doc']; ?>">	<?php echo $rang['description']; ?>

    Et voici mon code complet :

    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
     
    <?php
     
    if(isset($_POST['upload']))
    {
     
    require "connection.php";
     
    		mysql_query("SET NAMES UTF8");
    		$nom = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["nom"])));
    		$prenom = mysql_real_escape_string(htmlspecialchars(stripcslashes($_POST["prenom"])));
     
    		$result="INSERT INTO pros (nom,prenom) VALUES ('".$nom."','".$prenom."')";
            $req= mysql_query($result) or die ('Erreur sql !<br />'.$result.'<br />'.mysql_error());
     
        	$nId_pros = mysql_insert_id();
     
        $res = mysql_num_rows($req);
     
    	if($res!=0)  
            {
    			echo "-";
            }
        else  
    	{
    			$checkbox1 = $_POST['chk1'];
     
    			for ($i=0; $i<sizeof($checkbox1);$i++) 
    			{
    				$cSql2 = "INSERT INTO demande_publications VALUES ('','".$checkbox1[$i]."','" . $nId_pros  . "', NOW())";
    				mysql_query($cSql2) or die(mysql_error());
     
    				$cSql5 = "UPDATE documentation SET qte_demande=qte_demande+1 WHERE code_publication_doc='".$checkbox1[$i]."'";
    				mysql_query($cSql5) or die(mysql_error());
    			}
    	}
    }
     
    	mysql_close();						 
    ?>
     
     
     
     
    <form action="inscription.php" method="post" width="650">
     
    <fieldset>  
    <legend >Compte :</legend>		 
     
    		  <input name="nom" title="nom" value="<?php if (isset($_POST['nom'])) echo htmlentities(trim($_POST['nom'])); ?>" size="70" type="text" tabindex="4" onFocus="this.select()"/>
     
     
    			<?php
    			$sql ="SELECT documentation.id, documentation.code_publication_doc, documentation.description, documentation.image, documentation.categorie_publication, documentation.division, documentation.qte_stock, documentation.qte_demande, documentation.formulaire_affich, documentation.date_maj, categories_publications.categorie AS categorie_publication, divisions.division_titre AS division 
    			FROM documentation 
    			LEFT JOIN categories_publications ON documentation.categorie_publication = categories_publications.id 
    			LEFT JOIN divisions ON documentation.division = divisions.id
    			WHERE categories_publications.id = 1 and documentation.formulaire_affich='oui'";
     
    			$resultat = mysql_query($sql,$conn)  or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
    			while ($rang= mysql_fetch_array ($resultat)){ 
    			?> 		
     
    					<img style="text-decoration:none;"  class="bordure" src="../images/<?php echo $rang['image']; ?>" alt="../images/<?php echo $rang['description']; ?>" width="110" height="144"/></a> 
    					<br /><br />
    					<input type="checkbox" name="chk1[]" value="<?php echo $rang['code_publication_doc']; ?>"<?php if(isset($_POST['chk1']) AND in_array($rang['code_publication_doc'], $_POST['chk1'])) {echo 'checked="checked"';} ?> id="<?php echo $rang['code_publication_doc']; ?>">	<?php echo $rang['description']; ?>	
    			<?php 
    				}
    			?>  	   
     
    		  <input class="butn" style="cursor:pointer" title="Submit" name="upload" type="submit" id="submit" value="Submit" /> &nbsp;&nbsp;
    		  <input type="reset" value="Delete" title="Delete" tabindex="14"  class="butn" style="cursor:pointer"/>	
    </fieldset>	   
    </form>

    Merci beaucoup pour votre aide

  2. #2
    Expert confirmé
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 571
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 571
    Par défaut
    vous parlez de 2 choses là, d'un côté la page de gestion où vous choisissez les documents à afficher dans le formulaire.
    et de l'autre côté le formulaire où des autres utilisateurs choisissent les documents.

    auquel de ces 2 endroits avez-vous un souci ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Bonjour,
    J'ai un soucis sur le formulaire, sur le code que j'ai posté. Je voudrais récupérer les checkbox cliqués lorsque l'utilisateur rentre sur le formulaire pour enregistrer son choix. Ceux cliqué en frontend. C'est vrai que j'ai parlé de mon système de gestion des données derrière pour expliquer que je ne peux pas faire une récupération des checkbox dans un seul champ séparés par des | ou virgules, j'ai besoin d'un tuple par checkbox.
    VOilà, j'espère que mon explication vous permettra de comprendre, c'est peut-être un peu confus.
    Merci en attendant

  4. #4
    Membre confirmé
    Femme Profil pro
    Webmaster
    Inscrit en
    Novembre 2014
    Messages
    60
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France, Allier (Auvergne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Novembre 2014
    Messages : 60
    Par défaut
    Bonjour,

    Je donne la solution si certains sont intéressés :

    Il faut faire un foreach :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach($_POST['code_publication'] as $code_publication){
    $cSql2 = "INSERT INTO demande_publications VALUES ('','".$code_publication."','" . $nId_pros  . "', NOW())";
    mysql_query($cSql2) or die(mysql_error());
    }

    et le code pour le checkbox :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <input type="checkbox" name="code_publication[]" value="<?php echo $rang['code_publication']; ?>"<?php if(isset($_POST['code_publication']) AND in_array($rang['code_publication'], $_POST['code_publication'])) {echo 'checked="checked"';} ?> id="<?php echo $rang['code_publication']; ?>">
    Bonne journée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 03/06/2020, 10h05
  2. Réponses: 3
    Dernier message: 17/11/2018, 23h56
  3. Réponses: 0
    Dernier message: 21/05/2015, 14h37
  4. organisation de tableaux dynamiques dans une page HTML
    Par fallered dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 24/10/2005, 16h04
  5. Ecriture dynamique dans la page actuelle
    Par fantomasmusic dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 19/04/2005, 12h23

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