begin process at 2012 05 31 00:15:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

insérer checkbox dans une BDD avec choix multiple


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

insérer checkbox dans une BDD avec choix multiple

lundi 5 septembre 2011 à 18:44:01 | insérer checkbox dans une BDD avec choix multiple

honey87

bonjour,

je suis entrain de créer un formulaire de contact, ou il ya un bouton checkbox avec trois choix, sachant qu'on peut cocher tous les trois, mais je n'ai qu'une seule valeur qui s’insère dans la base de donnée (la dernière)..
est ce qu'il ya une possibilité de les afficher tous ??


Code HTML :
<font class="textes" > Souhaitez-vous être rappelé :</font></div>
<input name="appel" type="checkbox" value="matin">Le matin <input name="appel" type="checkbox" value="apres_midi">Après midi <input name="appel" type="checkbox" value="soiree">Soirée (17h à 19h)</div>



page d'insertion :

Code PHP :
<?php
$base="academia";
$conn=mysql_connect("localhost", "root", "");
mysql_select_db($base);

$appel=$_POST['appel'];


$sql='insert into inscription VALUES("", "'.mysql_escape_string($appel).'")';

$req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("location:conf_contact.php");

?>




Merci d'avance
lundi 5 septembre 2011 à 19:42:40 | Re : insérer checkbox dans une BDD avec choix multiple

kohntark

Membre Club
Salut,


Tes noms d'input doivent être du style :
name="appel[]"

Tu récupéreras un tableau dans $_POST['appel'] côté serveur sur lequel il te suffira d'itérer (foreach())

Au passage :
- mysql_escape_string() est obsolète et génère une erreur (cf mysql_real_escape_string())
Par extension toutes les fonctions mysql_*() sont vieillottes et sont très avantageusement remplacées par mysqli() ou PDO

- tu devrais t'assurer que les variables que tu reçois du formulaire sont bien celles qui y sont définies. Tu attends "matin", "apres_midi" ou / et "soiree", pas "23 ans avant JC" qu'un plaisantin pourrait très facilement envoyer. Ca n'a peut être pas grand intérêt dans ce cas, mais c'est une bonne habitude à prendre.

-

or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());


=> à ne jamais faire en production car gros risque de sécurité en fournissant, avec mysql_error() et $sql, des informations importantes qui peuvent être utilisées pour pirater ton site.

-

header("location:conf_contact.php");


Il faut toujours faire suivre un header("Location: ...) d'un exit(); pour ne pas que le script éventuellement présent plus bas ne soit transmis.


Cordialement,


Kohntark -
mardi 6 septembre 2011 à 09:48:13 | Re : insérer checkbox dans une BDD avec choix multiple

cod57

bonjour
deux exemples pour t'aider ...
ex1 ne fait rien ... pour te montrer le procédé
Code PHP :
<form action="" method="post">
<font class="textes" > Souhaitez-vous être rappelé :</font>
<input name="appel[]" type="checkbox" value="matin">Le matin 
<input name="appel[]" type="checkbox" value="apres_midi">Après midi 
<input name="appel[]" type="checkbox" value="soiree">Soirée (17h à 19h)
<input type="submit" value="envoi">
</form>
<?php


/*EN MODE DEBUG*/
$sql='';
if(isset($_POST['appel']) && !empty($_POST['appel'])){
//echo $c=count($_POST['appel']);
$base="academia";
$conn=mysql_connect("localhost", "root", "") or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$db=mysql_select_db($base) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  
  foreach($_POST['appel'] as $k => $appel){
  $appel=mysql_real_escape_string(strip_tags($appel));
  
    /*que les valeurs autorisées*/
    $tableau=array('matin','apres_midi','soiree');
    if (in_array($appel, $tableau, true)) {
    echo $sql.='insert into inscription VALUES("", "'.$appel.'")';
    //$req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    }else{
    }
  
  }

//header('Location: conf_contact.php');exit;
}else{
//rien 
echo 'Choisir une période ?';
}
?>


ex2
Code PHP :
<form action="" method="post">
<font class="textes" > Souhaitez-vous être rappelé :</font>
<input name="appel[]" type="checkbox" value="matin">Le matin 
<input name="appel[]" type="checkbox" value="apres_midi">Après midi 
<input name="appel[]" type="checkbox" value="soiree">Soirée (17h à 19h)
<input type="submit" value="envoi">
</form>
<?php


/*EN MODE DEBUG*/
$sql='';
if(isset($_POST['appel']) && !empty($_POST['appel'])){
//echo $c=count($_POST['appel']);
$base="academia";
$conn=mysql_connect("localhost", "root", "") or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$db=mysql_select_db($base) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  
  foreach($_POST['appel'] as $k => $appel){
  $appel=mysql_real_escape_string(strip_tags($appel));
  
    /*que les valeurs autorisées*/
    $tableau=array('matin','apres_midi','soiree');
    if (in_array($appel, $tableau, true)) {
    $sql='insert into inscription VALUES("", "'.$appel.'")';
    $req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
    }else{
    }
  
  }

mysql_close();
header('Location: conf_contact.php');exit;
}else{
//rien 
echo 'Choisir une période ?';
}
?>


Bonne programmation !
mardi 6 septembre 2011 à 12:05:10 | Re : insérer checkbox dans une BDD avec choix multiple

honey87

Merci pour votre aide mais j'ai un message d'erreur dans la page d'insertion (sachant que je n'ai pas que cette valeur, j'ai d'autre champs) , peut être que j'ai fais une erreur sans faire attention

voilà la code complet de ma page d'insertion, ça ce très généreux de ta part si tu me le refais avec les autres champs que j'ai (je suis encore débutante ), c pour cela j'ai pas pu m&#8217;en sortir

code complet de la page d'insertion :
Code PHP :
<?php
$base="academia";
$conn=mysql_connect("localhost", "root", "");
mysql_select_db($base);

$civilite=$_POST['civilite'];
$nom=$_POST['nom'];
$prenom=$_POST['prenom'];
$email=$_POST['email'];
$tel=$_POST['tel'];
$formation=$_POST['formation'];
$question=$_POST['question'];
$appel=$_POST['appel'];
$naissance=$_POST['naissance'];
$lieu=$_POST['lieu'];
$adresse=$_POST['adresse'];
$situation =$_POST['situation'];
$reference=$_POST['reference'];
$autre_ref=$_POST['autre_ref'];
$date = date("d/m/Y - H:i:s");




$sql='insert into inscription VALUES("", "'.mysql_escape_string($civilite).'","'.mysql_escape_string($nom).'","'.mysql_escape_string($prenom).'","'.mysql_escape_string($email).'","'.mysql_escape_string($tel).'","'.mysql_escape_string($formation).'","'.mysql_escape_string($question).'","'.mysql_escape_string($appel).'","'.mysql_escape_string($naissance).'","'.mysql_escape_string($lieu).'","'.mysql_escape_string($adresse).'","'.mysql_escape_string($situation).'","'.mysql_escape_string($reference).'","'.mysql_escape_string($autre_ref).'","'.mysql_escape_string($date).'")';

$req=mysql_query($sql) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
header("location:conf_contact.php");

?>

mardi 6 septembre 2011 à 14:30:30 | Re : insérer checkbox dans une BDD avec choix multiple

cod57

comme j'ai pas le form complet ...
la table vite fait à refaire, enum exemple pour la civilité


CREATE TABLE IF NOT EXISTS `inscription` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`civilite` varchar(50) NOT NULL,
`nom` varchar(50) NOT NULL,
`prenom` varchar(50) NOT NULL,
`email` varchar(50) NOT NULL,
`tel` varchar(50) NOT NULL,
`formation` varchar(50) NOT NULL,
`question` varchar(50) NOT NULL,
`appel` varchar(50) NOT NULL,
`naissance` varchar(50) NOT NULL,
`lieu` varchar(50) NOT NULL,
`adresse` varchar(50) NOT NULL,
`situation` varchar(50) NOT NULL,
`reference` varchar(50) NOT NULL,
`autre_ref` varchar(50) NOT NULL,
`datejour` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

--
-- Contenu de la table `inscription`
--

test.php

Code PHP :
<?php
if(isset($_POST) && !empty($_POST)){
$base='academia';
$conn=mysql_connect("localhost", "root", "") or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$db=mysql_select_db($base) or die ('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());

$appels='';

if(isset($_POST['appel']) && !empty($_POST['appel'])){
$tableau=array('matin','apres_midi','soiree');
     
  foreach($_POST['appel'] as $k => $appel){
    if (in_array($appel, $tableau, true)) {
    echo $appels.=$appel.' ';
    }else{
    }
  }  
    
}else{
//rien 
}

unset($_POST['appel']);

/*securition du postage*/
foreach($_POST as $k => $v){
$v=mysql_real_escape_string(strip_tags($v));
$_POST[$k]=$v;
}

    extract($_POST);
    echo $sql="

    insert into inscription VALUES (
    NULL,
    '".$civilite."',
    '".$nom."',
    '".$prenom."',
    '".$email."',
    '".$tel."',
    '".$formation."',
    '".$question."',
    '".$appels."',
    '".$naissance."',
    '".$lieu."',
    '".$adresse."',
    '".$situation."',
    '".$reference."',
    '".$autre_ref."',
    NOW()
    )
    ";


  if($req=mysql_query($sql)){
  /*ca marche redirection*/
  echo '<script>alert(\'insertion reussie\');</script>';
  //header('Location: conf_contact.php');exit;
  }else{ 
  die('Erreur SQL !'); /*pas afficher l'erreur sql mysql_error() utilisable par un attaquant*/
  }
    



}else{
//rien de poster
}
?>

<form action="test.php" method="post">

<!-- le reste -->

<font class="textes" > Souhaitez-vous être rappelé :</font>
<input name="appel[]" type="checkbox" value="matin">Le matin 
<input name="appel[]" type="checkbox" value="apres_midi">Aprés midi 
<input name="appel[]" type="checkbox" value="soiree">Soirée (17h à 19h)
<input type="submit" value="envoi">
</form>


Bonne programmation !
mardi 6 septembre 2011 à 14:33:53 | Re : insérer checkbox dans une BDD avec choix multiple

cod57

rermarque : il existe une fonction php serialize et unserialize si tu veux travailler avec des choix multiple et des tableaux de valeurs ...
http://php.net/manual/fr/function.unserialize.php

Bonne programmation !
mardi 6 septembre 2011 à 16:54:13 | Re : insérer checkbox dans une BDD avec choix multiple

honey87

L'insertion marche mais mais quand je valide, il passe pas, il reste dans la page insertion avec ce message affiché :


[color=red]matin matin apres_midi matin apres_midi soiree insert into inscription VALUES ( NULL, 'mlle', 'aaaa', 'aaa', 'aaa', 'aaa', 'Technicienne', 'aaaa', 'matin apres_midi soiree ', 'aaa', 'aaa', 'aaa', 'Employée', 'Forum internet', 'aaa', NOW() ) [/color]


comment faire pour passer à une autre page de confirmation d'envoi de message

mardi 6 septembre 2011 à 18:37:49 | Re : insérer checkbox dans une BDD avec choix multiple

cod57


il faut changer comme ça
Code PHP :
<?php
if($req=mysql_query($sql)){
  /*ca marche redirection*/
  //echo '<script>alert(\'insertion reussie\');</script>';
  header('Location: conf_contact.php');exit;
  }else{ 
  die('Erreur SQL !'); /*pas afficher l'erreur sql mysql_error() utilisable par un attaquant*/
  }
?>

Bonne programmation !
mardi 6 septembre 2011 à 19:29:08 | Re : insérer checkbox dans une BDD avec choix multiple

kohntark

Membre Club

voilà la code complet de ma page d'insertion, ça ce très généreux de ta part si tu me le refais avec les autres champs que j'ai (je suis encore débutante ), c pour cela j'ai pas pu m&#8217;en sortir



Raison de plus, si tu es débutante, de chercher à le faire toi même, c'est comme cela qu'on apprend.
"Etre généreux" c'est aider et tenter de faire progresser, pas écrire du code à ta place.

Par ailleurs le point 9 du règlement dit ceci :

On ne demande pas un programme tout fait, on ne demande que de l'aide sur un problème concret.



Il dit également cela :

Inutile de demander du "code tout cuit", vous n'obtiendrez aucune réponse.


... malheureusement ça n'arrive que très rarement

Résultat :
Dans 90% des cas ça n'aide aucunement le débutant qui se contente de faire un copié / collé sans rien avoir compris au code.
Progression === aide === null

... tout porte à croire d'ailleurs que tu entres dans ces 90%.


Et pour éviter tout amalgame :
Si je tiens ce discours c'est pour toi et, par extension, pour les débutants, ... perso je m'en balance.



Cordialement,

Kohntark -


Cette discussion est classée dans : code, checkbox, bdd, insérer, choix


Répondre à ce message

Sujets en rapport avec ce message

checkbox bdd [ par louisc59 ] Bonjour a tous, Merci de bien vouloir m'aidez ;) Jai fais ce code: [code=php] while ($donnée = mysql_fetch_array($réponse)) echo"   Etre notifié po integrer données venant de ma bdd dans le code "class de bbcode" par the_angel [ par cid0u ] Bonjour, j'essai d'integrer des données venant de ma bdd dans le script que j'ai trouvé ici meme , mais je n'y arrive pas, il y aurait-il quelqu'un p PDO serveur BDD distant [ par TheGorgo ] Bonjour, Je cherche à me connecter à un serveur de base de données distante en utilisant Doctrine. Lorsque je veux générer mon schèma de données, j'a comment fait on pour insérer du code HTML dans un textarea ? [ par MEHDI1643 ] je veux insérer le code html dans un champs textarea, suivant l'action de utilisateur dans une liste le modéle html s'affiche dans la champ textarea TABLE BDD [ par begueradj ] Azul, J'ai à ajouter un produit à l'une des 4 catégories prédéfinies à partir d'un [code=html]...[/code] Et lorsque je posete le [code=html]....[/cod récupérer les valeurs d'un checkbox [ par samydz120 ] Bonjours, comment est ce qu'on peux récupérer dans la BDD toutes les valeurs cochés d'un checkbox, voici le code html: Administratif <input type=" Aide // code source // liste + checkbox [ par snakeoli27 ] Bonjour, Hyper-novice avec PHP/MySQL, je recherche à créer une simple page web, avec la possibilité de (un)checker une liste affichée ... J'm'explique Problème pour insérer des valeurs dans BDD MYSQL [ par fredo35m ] Bonjour,j'ai un soucis pour insérer des valeurs dans ma base de données, en effet mon programme fonctionne bien hormis lorsque mon champ à insérer con [BAR]Ajouter un Code / Choix catégorie [ par wiwiwiwi ] Bonjour, Voila j'ai crée récemment un petit bout de code (ok un énorme :D ) et je souhaitais le proposer... Mais je ne sais pas dans quel catégorie Ne pas accepter les doubles email dans la BDD [ par honey87 ] Bonjour, je suis entrain de faire l'insertion dans la bdd pour un formulaire d'inscription, et je voudrais que le champ "email" soit unique : c'est à


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,359 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales