Bonjour,

J'ai une base de données dans ce format :

Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
CREATE TABLE `jeux_concours` (
  `id` int(7) NOT NULL,
  `nom` varchar(100) CHARACTER SET utf8 NOT NULL,
  `date_ajout` date NOT NULL,
  `date_fin` date NOT NULL,
  `cat1` int(10) NOT NULL,
  `cat2` int(10) NOT NULL,
  `cat3` int(10) NOT NULL,
  `cat4` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;

J'ai un formulaire à choix multiple comme suit :

Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<label for="exampleFormControlSelect2">Catégorie(s)</label>
           <select multiple class="form-control" id="categories" value="categories" name="categories[]">
                 <option value=cat1>Argent et bons d'achat</option>
                 <option value=cat2>Voyages et séjours</option>
                 <option value=cat3>Moyens de locomotion</option> 
                 <option value=cat4>Produits de beauté</option>
          </select>

Ce que je souhaite faire, c'est récupérer les valeurs sélectionnées dans le formulaire, puis les ajouter dans la bdd.

En gros, si le formulaire retourne cat1 et cat4, je voudrai que dans la bdd les champs cat1 et cat4 aient pour valeur 1

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
//si le formulaire est soumis
if (isset($_POST['nom'])) 
{
	$nom = $_POST['nom'];
	$categories = $_POST['categories'];
 
	//var_dump($categorie); // Array
 
//renvoie ca1cat2cat3 suivant ce qui est sélectionné
for ($i=0; isset($_POST['categories'][$i]); $i++)
    echo $_POST['categories'][$i];
 
}
Du coup le for renvoie cat1cat3 si je sélectionne ces 2 catégories. Par contre je suis bloqué car je ne sais pas comment séparer ces données et les ajouter dans la base...

Avec une boucle cela renvoie les données entières à chaque fois je pense.

Merci pour votre aide