problème récupération données formulaire

Eléphanteau du PHP | 20 Messages

06 avr. 2007, 19:11

Bonjour à Tous,

j'ai un formulaire dans lequel je demande à des gens les matières qu'il peuvent enseigner, il peut en avoir plusieurs. J'ai choisi la balise suivante :

<select multiple="matiere">
<option value="Anglais">Anglais</option>
<option value="Français">Français</option>
<option value="Mathématique">Mathématique</option>
<option value="Physique">Physique/Chimie</option>
<option value="Biologie">Biologie</option>
</select>

Le pb c'est que je veux récupérer ces données en php et les envoyer à ma base de données.

et j'ai mis ça...dans le fichier php

Code : Tout sélectionner

<?php // On commence par récupérer les champs if(isset($_POST['nom'])) $nom=$_POST['nom']; else $nom=""; if(isset($_POST['prenom'])) $prenom=$_POST['prenom']; else $prenom=""; if(isset($_POST['phone'])) $phone=$_POST['phone']; else $phone=""; if(isset($_POST['ville'])) $ville=$_POST['ville']; else $ville=""; if(isset($_POST['matiere'])) $matiere=$_POST['matiere']; else $matiere=""; // On vérifie si les champs sont vides if(empty($nom) OR empty($prenom) OR empty($phone) OR empty($ville) OR empty($matiere)) { echo '<font color="red">Attention, remplissez tous les champs svp!!!!</font>'; } // Aucun champ n'est vide, on peut enregistrer dans la table else { // connexion à la base $db = mysql_connect('sql.free.fr', 'login', 'password') or die('Erreur de connexion '.mysql_error()); // sélection de la base mysql_select_db('Professeur_tbl',$db) or die('Erreur de selection '.mysql_error()); // on écrit la requête sql $sql = "INSERT INTO Professeur_tbl(nom, prenom,phone,ville,matiere) VALUES('$nom','$prenom','$phone','$ville','$matiere')"; // on insère les informations du formulaire dans la table mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); // on affiche le résultat pour le visiteur echo 'Vos infos on été ajoutée,vous serez contactez d\'ici peu.'; mysql_close(); // on ferme la connexion } ?>
j'ai un petit souci car si on mets plusieurs choix la variables ne peut pas tout prendre et donc ça ne valide pas.

une petite aide serait la bien venu.

Merci

Eléphant du PHP | 170 Messages

06 avr. 2007, 19:14

J'ai choisi la balise suivante :

<select multiple="matiere">
Je me suis juste arrêté là pour le moment :

Code : Tout sélectionner

<select name="matiere" multiple>

Corriges stp :wink:
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends

Invité
Invité n'ayant pas de compte PHPfrance

06 avr. 2007, 19:39

c'est fait ça marche toujours pas.
:-(

Eléphanteau du PHP | 20 Messages

06 avr. 2007, 20:27

Cette fois ci ça marche mais sur la base de données un seul choix figure
alors que je prend plusieur choix avec "Alt Gr"
dois je configurer la base?

Thus

Eléphant du PHP | 170 Messages

06 avr. 2007, 23:45

Comme ça :

Code : Tout sélectionner

<select name="matiere[]" multiple>
Pour afficher le contenu :
echo print_r($_POST['matiere'],true);
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends

Eléphanteau du PHP | 20 Messages

07 avr. 2007, 00:21

Hello expreg
comme tu peux le voir je ne cherche pas à afficher le champ mais plutot à mettre une condition dessus.

Code : Tout sélectionner

if(isset($_POST['matiere'])) $matiere=$_POST['matiere']; else $matiere="";
dois je stocker les choix multiples sur plusieurs variables ou dois dire à la BDD d'accepter tous les champ et de la configurer en conséquence.

:-)
;-)

Eléphanteau du PHP | 20 Messages

07 avr. 2007, 00:37

j'ai essayé comme ça

Code : Tout sélectionner

<td align="center">Matière?</td> <td align="center"> <select name="matiere[]" multiple> <option value="Anglais">Anglais</option> <option value="Français">Français</option> <option value="Mathématique">Mathématique</option> <option value="Physique">Physique/Chimie</option> <option value="Biologie">Biologie</option> </select> </td>
et sur ma BDD cela affiche array sur la colonne matiere
sans les crochets ça affiche la derniere matière selectionner sur les choix.
Je comprends pas si quelqu'un à rencontrer ce genre de pb, je veux bien en profiter...

Thus

Eléphant du PHP | 170 Messages

07 avr. 2007, 08:34

Code : Tout sélectionner

if isset($_POST['matiere']
est toujours vrai dès que le formulaire est soumis

Pour savoir si une valeur à été selecytionnée dans $_POST matière il faut procéder de la sorte :
<?php
if(!empty($_POST))
{
// si le formulaire a été soumis...

if(is_array($_POST['matiere'])  && count($_POST['matiere'])>=1)
{
// le tableau n'est pas vide, au moins une valeur sélectionnée
}
else
{
// on fait autre chose, on déclare autre chose.
}
?>
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends

Eléphanteau du PHP | 20 Messages

07 avr. 2007, 12:02

Hello expreg
comme tu peux le voir je ne cherche pas à afficher le champ mais plutot à mettre une condition dessus.

Code : Tout sélectionner

if(isset($_POST['matiere'])) $matiere=$_POST['matiere']; else $matiere="";
dois je stocker les choix multiples sur plusieurs variables ou dois dire à la BDD d'accepter tous les champ et de la configurer en conséquence.

:-)
;-)
Merci c'est ok pour la condition effectivement
if(is_array($_POST['matiere']) && count($_POST['matiere'])>=1)
ça à l'air d'aller...
Mais ensuite est ce qu'il existe une variable qui puisse stocker plusieurs constants. jecrois que mon pb est côté BDD. car ça affiche la dernière valeur choisie sur la liste.
Exemple je vais choisir MAthématique et anglais avec alt GR et juste anglais va apparaite sur ma BDD.

est ce que dans ce cas de choix multiple on peut stocker les deux choix dans une variable genre les une à la suite des autre???
OU
Est ce que je dois déclarer plusieurs variable (X variable si j'ai X valeur) et stocker Y valeur dans Y variable et les envoyé?? Exemple : dans ma liste il y a 5 choix, je déclare 5 variable, si je prends 3 choix je les stock dans 3 variable et je les envoie??

je propose mais je sais pas si ça existe???
MERCI
THUS si quelqu'un a eu ce genre de pb...;-)

Eléphant du PHP | 170 Messages

07 avr. 2007, 15:49

J'ai déjà répondu, relis mes réponses avant
Benjamin Franklin a dit :
Tu me dis, j'oublie. Tu m'enseignes, je me souviens. Tu m'impliques, j'apprends

Eléphanteau du PHP | 20 Messages

07 avr. 2007, 22:13

salut Expreg désolé je crois qu'on s'est pas compri...
j'ai bien lu ta réponse et j'ai appliqué ton code. je comprend pas trop car il y a plusieur constante et qu'une variable. Dans ce cas que faut -il mettre dans else{...}. Du côté de ma BDD rien ne s'affiche sur la colonne 'matière'.

dans else dois je mettre une instruction à ma base de données pour qu'elle sache qu'il y a plusieurs plusieur constante et les stocker en conséquence??

Merci @ plus
Phpment votre

Thus