Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/03/2011, 14h48   #1
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 95
Points : 25
Points : 25
Par défaut Insérer plusieurs valeurs d'un formulaire dans un même champ mysql

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.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
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++;
}
}


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...)

Pouvez-vous m'aider svp, j'ai eu beau chercher je n'ai pas trouvé de réponse à ma question.

Merci d'avance.
Boub
Boub.J est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 15h37   #2
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
tu fais un champs de type SET dans mysql avec les valeurs possible ('lundi','mardi','mercredi') par exemple.

de l'autre coté tu transforme toutes tes checkbox html pour qu'elle te remplissent un tableau en php, on va dire pour simplifier $_POST['checkbox'].

pour mettre a jour tu linearises $_POST['checkbox'] à l'aide d'un vaillant
Code :
1
2
 
implode( $_POST['checkbox'], ',' );
le probleme c'est que pour l'instant $_POST['checkbox'] contient plutot quelque chose du genre array('abel' => 'on', 'oracle'= 'on') ce qui ne donnera pas le résultat attendu (on, on). Solution


Code :
1
2
3
4
5
6
7
8
9
10
11
 
//$connexion = ....;
$answer = $_POST['checkbox'];
function my_walker(&$item1, $key, $connexion )
{
    // ici n'importe quel version objet peut prendre la place de $connexion
    $item1 = mysql_real_escape_string( $key, $connexion ) ;
}
 
$normalise = array_walk( $answer, 'my_walker', $connexion );
$sql_data = '\''.implode('\',\'', $normalise ) .'\'';
j'ai pas testé mais ça devrait marcher. Le top serai d'y mettre une fonction anonyme... pour php 5.3 seulement.

bon en plus on pourrait essayer de virer les réponses "forgée" du genre "toto" => "on" mais la base de donnée refusera de les inserer. sauvés !
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 15h40   #3
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
Citation:
<input type="checkbox" name="logicielsmetiers" value="'.$data["applimetiers"].'"/>
c'est faux ça. il faut faire

Code :
'<input type="checkbox" name="logicielsmetiers[]" value="'.htmlspecialchar($data["applimetiers"]).'"/>'
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 15h46   #4
Membre Expert
 
Avatar de gene69
 
Inscription : janvier 2006
Messages : 951
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : janvier 2006
Messages : 951
Points : 1 063
Points : 1 063
Code :
1
2
3
4
5
6
7
8
9
{
id = uniqid('label');
$value = htmlspecialchar($data["applimetiers"]);
echo '
<td class="tdlogmetiers">
   <input type="checkbox" id="',$id,'" name="logicielsmetiers[',$value,']" />
   <label for="',$id,'">',$value,'</label>
</td>';
}
si tu fais comme ça tu peux cliquer sur le mot et ça coche la case et ça coute pas plus cher.
pour le html faudrait tester.
__________________
PHP fait nativement la validation d'adresse électronique Vous êtes perdu en PHP? rassurez-vous ici (en)
Utilisez le bouton résolu!
gene69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/03/2011, 15h48   #5
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 95
Points : 25
Points : 25
Merci j'essaye dès que possible
Boub.J est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/03/2011, 15h53   #6
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 95
Points : 25
Points : 25
J'ai essayé mais je n'y arrive pas.
Je ne comprends pas à quoi correspond
dans ton code ?
Merci !
Boub.J est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/03/2011, 11h30   #7
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 95
Points : 25
Points : 25
J'ai compris, par contre j'ai ça :

Code :
1
2
3
Warning: array_walk() [function.array-walk]: The argument should be an array in /homez.354/souliers/www/cda/validation.php on line 42
 
Warning: implode() [function.implode]: Invalid arguments passed in /homez.354/souliers/www/cda/validation.php on line 43
Boub.J est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2011, 22h14   #8
Nouveau Membre du Club
 
Inscription : janvier 2008
Messages : 95
Détails du profil
Informations forums :
Inscription : janvier 2008
Messages : 95
Points : 25
Points : 25
Finalement j'ai réussi en utilisant cette méthode très simple !
Merci à vous pour votre aide, bonne soirée

Page Formulaire :
Code :
<input type="checkbox" name="logicielsmetiers[]" value="'.$data["applimetiers"].'"/>
Validation :
Code :
1
2
$logicielsmetiers = $_POST['logicielsmetiers'];
$logicielsmetiers_text = implode(', ',$logicielsmetiers);
Boub.J est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h43.


 
 
 
 
Partenaires

Hébergement Web