Page 1 sur 1

Insérer plusieurs valeurs d'un formulaire dans un même champ

Posté : 07 mars 2011, 15:17
par Boub
But : Insérer plusieurs valeurs d'un formulaire dans un même champ

Bonjour à tous,
J'ai un formulaire avec une partie "logiciels métiers" et une liste de logiciels avec chacun une checkbox.
<?php
require ("includes/connect.php");
// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$select =		'SELECT * ';
$select = $select.'FROM	cda_create_accountapps ORDER by applimetiers ASC';
$result = mysql_query($select) or die ('Erreur : '.mysql_error() );
$total = mysql_num_rows($result);
// si on a récupéré un résultat on l'affiche.
while($data = mysql_fetch_array($result)) 
    {
    // debut du tableau
	echo '<td class="tdlogmetiers"><input type="checkbox" name="logicielsmetiers" value="'.$data["applimetiers"].'"/> '.$data["applimetiers"].'</td>';
if ($i == 6) { 
echo '</tr><tr>';
$i = 0;
}
else {
   $i++;
}
}
?>
Vue graphique :
Image

Je souhaiterai insérer ces valeurs dans un même champ mysql séparée par une virgule par exemple, plutôt que de créer un champ par logiciel (amené à évoluer avec le temps...)

Je récupére les valeurs grace à un fichier validation.php
$logicielsmetiers = $_POST['logicielsmetiers'];
Pouvez-vous m'aider svp, j'ai eu beau chercher je n'ai pas trouvé de réponse à ma question.

Merci d'avance.
Boub

Re: Insérer plusieurs valeurs d'un formulaire dans un même champ

Posté : 07 mars 2011, 15:59
par misterflo
Il ne faut pas que tu es plusieurs checkbox avec le même attribue name, chaque case doit avoir son propre et unique name.
Ensuite en php tu vérifie si telle ou telle case a été cochée, donc si elle est initialisée (avec un isset par exemple) et tu récupère sa valeur avec un $_POST['name_du_champ'] (qui contiendra la valeur de l'attribue value, si l'attribue value existe sur ce champ bien sur !) .

Pour tout mettre dans une seule variable tu peux concaténer le tout comme ca :
$variable = ''; //On pense à l'initialiser car " .= "
if (isset($_POST['test'])) { $variable .= htmlspecialchars($_POST['test']) . "," ; }
if (isset($_POST['test2'])) { $variable .= htmlspecialchars($_POST['test2']) . "," ; }
etc...
ou alors tu peux directement mettre la valeur que tu veux, sans mettre d'attribue value, ce qui donnerai quelque chose comme :
$variable = ''; //On pense à l'initialiser car " .= "
if (isset($_POST['test'])) { $variable .= "Mon texte ici" . "," ; }
if (isset($_POST['test2'])) { $variable .= "Mon second texte ici" . "," ; }
etc...

Re: Insérer plusieurs valeurs d'un formulaire dans un même champ

Posté : 07 mars 2011, 16:08
par ZoiDrums
Tout à fait...

Le mieux serait donc pour toi de "construire" dynamiquement les attributs NAME de tes checkbox, par exemple en utilisant un compteur :
$o = 0;

while($data = mysql_fetch_array($result)) {
    $o++;
    // debut du tableau
    echo '<td class="tdlogmetiers"><input type="checkbox" name="logicielsmetiers"'.$o.' value="'.$data["applimetiers"].'"/> '.$data["applimetiers"].'</td>';
    if ($i == 6) { 
        echo '</tr><tr>';
        $i = 0;
    } else {
        $i++;
    }
}
Comme ça, par la suite tu peux boucler sur tes éléments "logicielsmetiers0" à "logicielsmetiersX" pour récupérer les VALUE de ceux-ci et le concaténer dans une seul variable...

Re: Insérer plusieurs valeurs d'un formulaire dans un même champ

Posté : 07 mars 2011, 16:34
par Boub
Merci pour vos réponses très utiles, j'ai bien compris
par contre, le problème est que lorsque je vais rajouter un logiciel dans la base de données, je devrait éditer le fichier validation.php pour l'ajouter également dedans. Pas moyen d'automatiser cela ?

Merci d 'avance !

Re: Insérer plusieurs valeurs d'un formulaire dans un même champ

Posté : 07 mars 2011, 16:59
par ZoiDrums
Si, grâce à ce que je t'ai dit...
Ta requête va boucler sur les technologies et les afficher tous suels. Les éléments checkbox auront un NAME généré du style de logicielsmetiers12 et seuls les VALUE auront les valeurs récupérés depuis la base.

Quand tu va vérifier si les checkbox sont cochés, tu vas récupérer ensuite les VALUE de ceux-ci, à savoir le nom de la technologie...

Tout est dynamique (selon ta BDD)

Re: Insérer plusieurs valeurs d'un formulaire dans un même champ

Posté : 07 mars 2011, 17:14
par macgawel
Merci pour vos réponses très utiles, j'ai bien compris
par contre, le problème est que lorsque je vais rajouter un logiciel dans la base de données, je devrait éditer le fichier validation.php pour l'ajouter également dedans. Pas moyen d'automatiser cela ?

Merci d 'avance !
Question con...
Ce n'est pas possible de faire une table avec les logiciels ?
Genre :
TableLogiciels (ID_logiciel *, Nom_logiciel)
TableDeBase (ID *, ...)
TableDeLiaison (ID, ID_Logiciel)

Du coup, pour les checkboxes tu récupères les éléments de ta table TableLogiciels, et pour l'insertion tu te limites à la table TableDeLiaison...

Re: Insérer plusieurs valeurs d'un formulaire dans un même champ

Posté : 07 mars 2011, 17:33
par NR1G7
Si, grâce à ce que je t'ai dit...
Quand tu va vérifier si les checkbox sont cochés, tu vas récupérer ensuite les VALUE de ceux-ci, à savoir le nom de la technologie...
Tout est dynamique (selon ta BDD)
Désolé je débute.
J'ai bien compris que l'affichage de la liste des logiciels se faisait dynamiquement et chaque checkbox à sa propre ID.
par contre ce que je ne comprends pas c'est comment générer une vérification dynamiquement.
$variable = ''; //On pense à l'initialiser car " .= "
if (isset($_POST['test'])) { $variable .= "Mon texte ici" . "," ; }
Question con...
Ce n'est pas possible de faire une table avec les logiciels ?
Genre :
TableLogiciels (ID_logiciel *, Nom_logiciel)
TableDeBase (ID *, ...)
TableDeLiaison (ID, ID_Logiciel)
Un table existe déjà avec la liste des logiciels et leur ID

Merci bien :)

Re: Insérer plusieurs valeurs d'un formulaire dans un même champ

Posté : 08 mars 2011, 23:17
par Invité
Finalement j'ai réussi en utilisant cette méthode très simple !
Merci à vous pour votre aide, bonne soirée

http://actuel.fr.selfhtml.org/articles/ ... /index.htm

Page Formulaire :
<input type="checkbox" name="logicielsmetiers[]" value="'.$data["applimetiers"].'"/>
Validation :
$logicielsmetiers = $_POST['logicielsmetiers'];
$logicielsmetiers_text = implode(', ',$logicielsmetiers);