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 :

checkbox php mysql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut checkbox php mysql
    Bonjour à tous,

    Voilà, après des jours à parcourir tutos et forums, je bloque total sur l'insertion de données dans ma base SQL via la checkbox d'un formulaire php.

    But :
    permettre au client de rentrer un nouveau film avec bcp de caractéristiques dans la base de données via interface administration pour affichage sur le site qui est bilingue. (Ensuite, il faudra aussi qu'il puisse modifier l'existant mais je n'en suis pas encore là).

    La BDD (mySQL 5.5.16):

    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
    CREATE TABLE IF NOT EXISTS formaDoc (
      idFormDoc varchar(255) UNIQUE NOT NULL,
      nomFormDoc_fr varchar(255) NOT NULL,
      nomFormDoc_en varchar(255) NOT NULL,
      CONSTRAINT pk_formaDoc
    		PRIMARY KEY (idFormDoc)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
     
    --
    -- Contenu de la table formaDoc
    --
     
    INSERT INTO formaDoc (idFormDoc, nomFormDoc_fr, nomFormDoc_en) VALUES
    ('fbsp' , 'Beta SP', 'Beta SP'),
    ('fbnu' , 'Beta numérique' , 'Digital betacam'),
    ('fthd' , 'THDVD' , 'THDVD'),
    ('fs16' , 'Super 16 mm' , 'Super 16 mm'),
    ('fv16' , 'Vidéo et 16 mm' , 'Video and 16 mm'),
    ('fdvc' , 'DV Cam' , 'DV Cam'),
    ('f16m' , '16 mm' , '16mm'),
    ('fhdc' , 'HD Cam' , 'HD Cam');
    Le formulaire testcheckbox.php (php 5.3.8) :

    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
    <?php
    // connexion a la base de donnees classique, pas de PDO
    	include("config.php"); 
    // 	---------------------------------------------------------------
    ?>
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Saisie film</title>
     
    </head>
     
    <body>
    <form action="" method="post">
    	<fieldset>
    		<legend>Format vidéo du film, vous pouvez cocher jusqu'à 3 cases</legend>
    		<input type="checkbox" name="formaDoc[]" value="fbsp"/> Beta SP <br>
    		<input type="checkbox" name="formaDoc[]" value="fbnu"/> Beta Numérique <br>
    		<input type="checkbox" name="formaDoc[]" value="fthd"/> THDVD <br>
    		<input type="checkbox" name="formaDoc[]" value="fs16"/> Super 16 mm <br>
    		<input type="checkbox" name="formaDoc[]" value="fv16"/> Video et 16 mm <br>
    		<input type="checkbox" name="formaDoc[]" value="fdvc"/> DV Cam <br>
    		<input type="checkbox" name="formaDoc[]" value="f16m"/> 16 mm <br>
    		<input type="checkbox" name="formaDoc[]" value="fhdc"/>  HD Cam<br>
    		<input type="submit" value="Envoyer" />
    	</fieldset>
    Et voilà, c'est tout ce que mon petit niveau m'a permis de faire.

    Si un généreux membre du forum pouvait m'aider, je lui en serai très reconnaissante

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Par défaut
    Que cherches véritablement ? StephBretagne

  3. #3
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut
    Comme je l'expliquais au début : "But : permettre au client de rentrer un nouveau film avec bcp de caractéristiques dans la base de données via interface administration pour affichage sur le site qui est bilingue. (Ensuite, il faudra aussi qu'il puisse modifier l'existant mais je n'en suis pas encore là)".

    Autrement dit : qd on coche 1, 2 ou 3 cases, que ça enregistre ce/s choix dans la BDD pour qu'ensuite on puisse : afficher sur le site + récupérer pour pouvoir modifier.

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Haute Saône (Franche Comté)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2012
    Messages : 7
    Par défaut
    Il faut que tu ai une table film pour pouvoir enregistrer les films que tu veux ajouter.
    Pour ton checkbox, tu doit récupérer le choix coché avec un $_REQUEST['formaDoc[]'] et puis créer un formulaire pour l'enregistrement de ton film.

  5. #5
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Hello,

    Je ne sais pas si j'ai bien capté ton post, mais si tu utilises des checkboxes multiples, tu crées un array. Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach($_POST['formaDoc'] as $val){
        //insert
     }

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 90
    Par défaut
    Essaie ça après avoir l'adapter selon ton contexte
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    <?php
    $host="localhost"; // Host name 
    $username=""; // Mysql username 
    $password=""; // Mysql password 
    $db_name="test"; // Database name 
    $tbl_name="test_mysql"; // Table name
     
    // Connect to server and select databse.
    mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
    mysql_select_db("$db_name")or die("cannot select DB");
     
    ?>
    <html>
    <body>
    <form action="#" method="post">
     
    <fieldset>
    		<legend>Format vidéo du film, vous pouvez cocher jusqu'à 3 cases</legend>
    		<input type="checkbox" name="formaDoc[]" value="fbsp - Beta SP "/> Beta SP <br>
    		<input type="checkbox" name="formaDoc[]" value="fbnu - Beta Numérique"/> Beta Numérique <br>
    		<input type="checkbox" name="formaDoc[]" value="fthd - THDVD"/> THDVD <br>
    		<input type="checkbox" name="formaDoc[]" value="fs16 - Super 16 mm"/> Super 16 mm <br>
    		<input type="checkbox" name="formaDoc[]" value="fv16 - Video et 16 mm"/> Video et 16 mm <br>
    		<input type="checkbox" name="formaDoc[]" value="fdvc - DV Cam"/> DV Cam <br>
    		<input type="checkbox" name="formaDoc[]" value="f16m - 16 mm"/> 16 mm <br>
    		<input type="checkbox" name="formaDoc[]" value="fhdc - HD Cam"/>  HD Cam<br>
    		<input type="submit" value="Envoyer" name="pinsert" />
    	</fieldset></form>
     
    <?php
    if (isset($_POST['pinsert']))
    	{
    	$test = $_POST['formaDoc'];
    	$testp = count($_POST['formaDoc']);
    	foreach ($test as $choix)
    	 {	
    	   echo "Choix utilisateur : ",$choix,"<br>";
    	   $val = explode("-", $choix);
    	   $val1 = $val[0];
    	   $val2 = $val[1];
    	   $sql = "INSERT INTO formaDoc (idFormDoc, nomFormDoc_fr, nomFormDoc_en) VALUES (".$val1." , ".$val2.", ".$val2.")";
    	   $result = mysql_query($sql);
    	   	if($result)
    		{
    			echo "Insertion effectuée";
    		}
    	 }
    	  echo 'le nombre de case coché est :'.$testp;
    			}
    mysql_close();
    ?>
    </body>
    </html>

  7. #7
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut insérer les valeurs d'une checkbox php dans une base de données MySQL
    Bon, toutes vos réponses m'ont bcp fait cogiter... et j'en ai parlé avec un pote plus doué que moi.

    J'étais partie sur une mauvaise piste. Alors que les 15 tables de ma BDD étaient bonnes, je n'en utilisais pas assez bien sûr (merci MamzellJu) !

    Puisque les valeurs par défaut de la checkbox étaient stockées dans ma table formaDoc, il fallait une autre table pour stocker les choix cochés : la table de relation entre le film documentaire et son format.

    Donc, je vais laisser ici la solution pour tous ceux qui comme moi sont un peu nuls (en réduisant la table concernant les films documentaire qui est très grande au strict minimum) :

    Les tables :

    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
    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
    -- --------------------------------------------------------
    --
    -- Structure de la table formaDoc 
    --
     
    CREATE TABLE IF NOT EXISTS formaDoc (
      idFormDoc varchar(4) UNIQUE NOT NULL,
      nomFormDoc_fr varchar(255) NOT NULL,
      nomFormDoc_en varchar(255) NOT NULL,
      CONSTRAINT pk_formaDoc
    		PRIMARY KEY (idFormDoc)
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
     
    -- Contenu de la table formaDoc
    INSERT INTO formaDoc (idFormDoc, nomFormDoc_fr, nomFormDoc_en) VALUES
    ('fbsp' , 'Beta SP', 'Beta SP'),
    ('fbnu' , 'Beta numérique' , 'Digital betacam'),
    ('fthd' , 'THDVD' , 'THDVD'),
    ('fs16' , 'Super 16 mm' , 'Super 16 mm'),
    ('fv16' , 'Vidéo et 16 mm' , 'Video and 16 mm'),
    ('fdvc' , 'DV Cam' , 'DV Cam'),
    ('f16m' , '16 mm' , '16mm'),
    ('fhdc' , 'HD Cam' , 'HD Cam');
     
     
    -- --------------------------------------------------------
    --
    -- Structure de la table documentaire 
    --
     
    CREATE TABLE IF NOT EXISTS documentaire (
      idDoc tinyint (3) UNIQUE NOT NULL AUTO_INCREMENT, 
      nomDoc_fr varchar(100) NOT NULL,
      nomDoc_en varchar(100) NOT NULL,
      CONSTRAINT pk_documentaire
    		PRIMARY KEY (idDoc)
     ) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
     
    -- Contenu de la table formaDoc
    INSERT INTO documentaire (idDoc, nomDoc_fr, nomDoc_en) VALUES ('','nom du doc en fçais', 'name of doc in english');
     
    -- --------------------------------------------------------
    --
    -- Structure de la table docDisposeFormat 
    --
     
    CREATE TABLE IF NOT EXISTS docDisposeFormat (
      idDoc tinyint (3) NOT NULL, 
      idFormDoc varchar(4) NOT NULL,
      CONSTRAINT pk_docDisposeFormat
    		PRIMARY KEY (idDoc,idFormDoc),
      CONSTRAINT fk_docDisposeFormat_idDoc
    		FOREIGN KEY (idDoc) REFERENCES documentaire(idDoc) ON DELETE CASCADE,
      CONSTRAINT fk_docDisposeFormat_idFormDoc
    		FOREIGN KEY (idFormDoc) REFERENCES formaDoc(idFormDoc) ON DELETE CASCADE
    ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
    Le formulaire :

    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
    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
    <?php
    // connexion a la base de donnees
    	include("config.php");
    // 	---------------------------------------------------------------
    // On part du principe que l'idDoc en cours de modification est "1"...
    	$choixFormaDoc=Array();
    	if(isset($_POST['formaDoc']))
    	{ // Envoie du formulaire...
    		$choixFormaDoc=$_POST['formaDoc'];
    		mysql_query("DELETE FROM docDisposeFormat WHERE idDoc=1");
    		$sql="INSERT INTO docDisposeFormat (idDoc,idFormDoc) VALUES";
     
    		foreach($choixFormaDoc AS $choix) $sql.="(1,'".$choix."'),"; // On enregistre chaque choix dans la table en indiquant l'idDoc du choix
    		if(mysql_query(substr($sql,0,strlen($sql)-1)))
    			echo "Enregistré!";
    		else echo "Non enregistré: (".$sql.") ".mysql_error();
    	}
    	else if(isset($_POST['ok']))
    		mysql_query("DELETE FROM docDisposeFormat WHERE idDoc=1");
    	else
    	{
    		// Re lecture de l'entré (en supposant qu'elle existe)
    		$rq=mysql_query("SELECT choixFormaDoc FROM docDisposeFormat WHERE idDoc=1");
    		while(list($tmp)=@mysql_fetch_assoc($rq)) $choixFormaDoc[]=$tmp;
    	}
     
    	function coche($val)
    	{ // Retourne checked si la valeur a été coché... :
    		global $choixFormaDoc;
    		return (in_array($val,$choixFormaDoc)?"checked":"");
    	}
    ?>
    <!DOCTYPE HTML>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Saisie film</title>
     
    </head>
     
    <body>
    <form method="post">
    	<fieldset>
    		<legend>Format vidéo du film, vous pouvez cocher jusqu'à 3 cases</legend>
    		<?php
    	$rq=mysql_query("SELECT * FROM formaDoc");
    	while($val=mysql_fetch_assoc($rq)):
    ?>
    	<input type="checkbox" id="chk_<?=$val['idFormDoc'];?>" name="formaDoc[]" value="<?=$val['idFormDoc'];?>"/> <label for="chk_<?=$val['idFormDoc'];?>"><?=$val['nomFormDoc_fr'];?></label><br/>
    <?php endwhile; ?>
    		<input type="submit" value="Envoyer" name="ok"/>
    	</fieldset>
    </form>
    </body>
    </html>
    Voili, voilou; ça marche car ça récupère bien les valeurs cochées pour le film 1 dans docDisposeFormat.

    Et ensuite, qd on ne sera plus dans le test et qu'il faudra que ça ajoute les valeur pour d'autres films que le 1, qd on ajoutera un film, l'idDoc sera l'ID inséré (mysql_insert_id()). Sinon qd on modifiera une fiche de film, il sera celui que qu'on lui aura donné en paramètre de l'URL pour la modification...

    J'espère que ça va en aider d'autres parce que moi, j'avais cherché la solution un peu partout sans la trouver.

    Merci encore à ceux qui sont intervenus sur ce fil

  8. #8
    Membre Expert Avatar de Marc3001
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2008
    Messages
    829
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2008
    Messages : 829
    Par défaut
    Manque plus que le petit "résolu"

  9. #9
    Membre confirmé Avatar de StephBretagne
    Femme Profil pro
    Inscrit en
    Mars 2012
    Messages
    147
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mars 2012
    Messages : 147
    Par défaut
    absolument, je l'avais pas trouvé, mais en cherchant mieux...

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

Discussions similaires

  1. [MySQL] Optimisation de scripts PHP/MySQL
    Par DgG dans le forum PHP & Base de données
    Réponses: 368
    Dernier message: 20/11/2013, 18h59
  2. [MySQL] Récupération de CheckBox Multiples php/Mysql
    Par snorky94 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 19/10/2012, 09h15
  3. [MySQL] Php-Mysql : insérer un couple de variables issu d'un checkbox
    Par seb38l dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 25/04/2012, 06h43
  4. Insertion de valeurs checkbox (PHP/MySQL)
    Par Starmagh dans le forum Langage
    Réponses: 11
    Dernier message: 23/11/2010, 00h54
  5. [php / mysql] pb if ( mysql_query() )
    Par dkmatt dans le forum Requêtes
    Réponses: 5
    Dernier message: 12/01/2004, 20h07

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