Besoin d'aide en php
Bonjour j'ai toujours le meme probleme en fait
je veux creer deux liste déroulante (1 jour et 1 mois) et creer une zone de texte pour l'année.
Je veux ensuite mettre tout ceci dans mùon champs Nom_Date
(dans ma table j'ai : champs($Nom_Date => $nom_date))
Le code que j'ai est celui ci
if ($action == 'visualiser'){
echo "$ligne[6]";
}
else {
echo '<select name="jour" value="'.$i.'">';
for($i=1;$i<=31;$i++){
echo '<option >'.$i.'</option>';
}
echo'</select>';
echo'<select name="mois" value="'.$ligne[7].'"><option>Janvier</option><option>Fevrier</option><option>Mars</option><option>Avril</option><option>Mai</option><option>Juin</option><option>Juillet</option><option>Aout</option><option>Septembre</option><option>Octobre</option><option>Novembre</option><option>Decembre</option></select>';
echo'<INPUT type="text" Name="année" value="'.$ligne[6].'"></INPUT>';
if(isset($_POST['valider'])){
$nom_date=$_POST['jour']."/".$_POST['mois']."/".$_POST['année'];
}
Et j'ai une fonction qui permet d'inserer les valeurs de ma table
mais seulement cela ne marche pas, rien ne se met dans ma table
je veux creer deux liste déroulante (1 jour et 1 mois) et creer une zone de texte pour l'année.
Je veux ensuite mettre tout ceci dans mùon champs Nom_Date
(dans ma table j'ai : champs($Nom_Date => $nom_date))
Le code que j'ai est celui ci
if ($action == 'visualiser'){
echo "$ligne[6]";
}
else {
echo '<select name="jour" value="'.$i.'">';
for($i=1;$i<=31;$i++){
echo '<option >'.$i.'</option>';
}
echo'</select>';
echo'<select name="mois" value="'.$ligne[7].'"><option>Janvier</option><option>Fevrier</option><option>Mars</option><option>Avril</option><option>Mai</option><option>Juin</option><option>Juillet</option><option>Aout</option><option>Septembre</option><option>Octobre</option><option>Novembre</option><option>Decembre</option></select>';
echo'<INPUT type="text" Name="année" value="'.$ligne[6].'"></INPUT>';
if(isset($_POST['valider'])){
$nom_date=$_POST['jour']."/".$_POST['mois']."/".$_POST['année'];
}
Et j'ai une fonction qui permet d'inserer les valeurs de ma table
mais seulement cela ne marche pas, rien ne se met dans ma table
15 réponses
-
Bonjour,
le mieux pour recuperer plusieurs variables de formualaire dans un champ SQL :<select name="date[jour]"> ... </select> <select name="date[mois]"> ... </select> <select name="date[anne]"> ... </select>
tu recupère comme suit :$mavar=implode('/',$_POST[date]);
NB: Je te deconseil de stoker des dates dans un BD autement qu'au format date ou datetime. Aucune utilité. pas de comparaison, classement, calculs possible
Je te conseil plutot de fromater ta date lors de la requete select avec
DATE_FORMAT(date,format) , ou en php avec strftime()
Voir le manuel php : http://fr.php.net/manual/fr/function.strftime.php
La doc Mysql : http://dev.mysql.com/doc/mysql/fr/date-and-time-functions.html -
ta fonction pour insérer les valeurs est dans la même page où tu as afficher le $date ou dans une autre ?
-
J'ai fait des echo et mon $date récupère bien les valeurs que je veux.
Ensuite dans ma fonction pour inserer les valeurs le $cle correspond bien a $Nom_Date mais il n'y a rien dans mon $valeur. -
est-ce que tu as bien rajouter les trucs soulignés dans ton code :
if ($action == 'visualiser'){ echo "$ligne[6]"; } else { echo "<form action=\"opopop.php\" method=POST>"; echo '<select name="jour" value="'.$i.'">'; for($i=1;$i<=31;$i++){ echo '<option >'.$i.'</option>'; } echo'</select>'; echo'<select name="mois" value="'.$ligne[7].'"><option>Janvier</option><option>Fevrier</option><option>Mars</option><option>Avril</option><option>Mai</option><option>Juin</option><option>Juillet</option><option>Aout</option><option>Septembre</option><option>Octobre</option><option>Novembre</option><option>Decembre</option></select>'; echo'<INPUT type="text" Name="année" value="'.$ligne[6].'"></INPUT>'; echo "</form>"; }
et il faut que tu mettes :if(isset($_POST['valider'])){ $nom_date=$_POST['jour']."/".$_POST['mois']."/".$_POST['année'];
dans la page opopop.php -
Je viens de faire les modifications et j'ai toujurs rien dans ma table.
Si t'as une autre idée...sinon merci kan meme -
ben il faut que tu mettes
if(isset($_POST['valider'])){ $nom_date=$_POST['jour']."/".$_POST['mois']."/".$_POST['année'];
dans la page "opopop.php" dans l'exemple que je t'ai mis. mais il faut que tu crées ton formulaire dans la page où il y a les <select>
et pour les noms, evites de mettre des accents (comme pour "année" mets plutot "annee" même si c'est moins joli ;-) -
ben je pense pas que ca influe parcke mon NOm_Date est de type varchar donc...
Mais surotut comment faire pour recuperer les trois valeurs dans mon champs Nom_Date -
euh, je ne crois pas qu'en SQL tu ai le droit de mettre dans un champs date (d'ailleurs le type de ton champ est date ou varchar ?) une date avec "janvier" dedans. ce doit être du style '21/04/2005'
donc soit tu fais une correspondance dans une fonction pour janvier->01 ou bien tu mets directement dans ton select "01", "02",... au lieu de janvier févirer,... -
Ben en fait c'est pour un site internet donc tout est fractionné, la construction du formulaire ce fait dans un autre fichier.
J'ai mon formulaire bidule qui contient la creation des liste déroulante,etc...
et j'ai un autre fichier fonction qui permet l'envoie de ces données dans la base.
Mon probleme est que je veux récuperer les 3 valeurs (jour pmois année) dans un seul champs de ma table bidule qui se nomme nom_date. -
alors la ya un bug je vois pas ta réponse j'ai que les deux premiers messages.....
-
ah d'accord, en fait c'est que tu appelles la même page lors de la validation du formulaire, c'est bien ça ?
d'ailleurs je ne vois pas la construction de ton formulaire dans ton code
comme :<form action="opopop.php" method=POST> ...</form>
comme ça tu récup tes variables dans la page opopop.php avec $mois = $_POST['mois']; et si tes variables ne sont pas définies, tu rediriges sur la page d'avant, si elles sont définies tu exécutes ta requête. -
ben justement je sais pas trop comment faire.
Si je peux ne pas utiliser les $_POST ca me va. -
en effet ça a l'air d'être ok pour la requête. par contre il y a qq chose que je ne comprends pas ds ta page, car tu mets des select pour sélectionner la date, et la date tu la récupères avec la méthode $_POST. tu prends la quelle alors ???
-
voici le code qui genere ma requete
if ($action == 'ajouter' || ($action == 'visualiser' && $num_enr == '')){
if ($status == "ok"){
$requete = "INSERT INTO $objet set";
foreach($champs as $cle => $valeur ){
if(($cle==Nom_Primer && $objet==resultats_analyses)||($cle==Nom_Sequence && $objet==alignements)||($cle==Nom_Tissu && $objet==resultats_analyses)){
$prim = isset($_POST['prim']) ? $_POST['prim'] : '';
foreach($prim as $val)
{
$valeur.=" $val /";
} $VLAS .=", $cle='$valeur ' ";
}
else{
$VLAS .=", $cle ='$valeur' ";
}
}
$VLAS=substr( $VLAS, 1);
$requete .=$VLAS;
echo $requete;
(ce code marche pour tout le formulaire donc je ne pense pas que ce soit la qu'uil y est une erreur) -
tu px poster le code où il y a ta requête ?