récupérer un date via formulaire et l'insérer ds champ date [RESOLU]

récupérer un date via formulaire et l'insérer ds champ date [RESOLU] - PHP - Programmation

Marsh Posté le 25-01-2006 à 16:46:14    

Bonjour à tous!
 
désolé de poser une question de débutant, mais en fouinant j'ai pas trouvé de solution à mon problème, qui est le suivant :  
 
je souhaite récupérer une date via un formulaire. elle est sous la forme de 3 variables : $jour $mois $année.
je concatène ensuite ces $_POST['annee'], $_POST['mois'], $_POST['jour'] avec des "-"  afin d'obtenir une nouvelle variable, qui est de la même forme que le champs date de mysql, à savoir 0000-00-00.
 
je tente d'insérer cette nouvelle variable dans le champ date de ma BDD.
 
et là je n'ai aucune erreur de la part d'sql, mais quand j'affiche le contenu de ce champ, j'obtiens invariablement la réponse : 0000-00-00, la valeur par défaut, ce qui me prouve que ma variable n'a pas été intégrée.
 
je me doute qu'il ne suffit pas d'écrire une variable de la forme 1234-56-78 pour qu'elle soit reconnue comme une date. mais comment faire pour qu'elle soit reconnue comme une date?
 
je connais un peu la fonction date(). c'est sur que c'est super pour récupérer la date à l'instant présent. mais là elle est imposée par un formulaire...
 
vous voyez mon problème?
j'imagine que je suis pas le premier à me retrouver confronté à cette situation...
 
alors si vous avez des suggestions, des tutos qui reprennent exactement ce problème...
je vous remercie d'avance!!!


Message édité par flock86 le 26-01-2006 à 14:20:42
Reply

Marsh Posté le 25-01-2006 à 16:46:14   

Reply

Marsh Posté le 25-01-2006 à 17:18:46    

C'est quoi le type de colone?
C'est quoi la requette type qui est envoyé à mysql? Fait un echo de la requette pour être de nous montrer ce qui est vraiment envoyé.
T'as pensé à mettre des " autour de la date?

Reply

Marsh Posté le 25-01-2006 à 17:24:17    

bon je vous envoie la page complete de mon code, tout y est :
 
 
<?php
//connexion à la BDD
mysql_connect("localhost", "root", "" );
mysql_select_db("bddessai1" );  
 
//récupération de la date déjà dans la base pour la mettre ailleurs plus tard
$recupdate = mysql_query ('SELECT Date_expiration FROM tablessai1 WHERE Identifiant="'.$_POST['id'].'"') or die(mysql_error());
 
//définition de la variable compatible avec le format date de mysql
$bonnedate=$_POST['an'] . '-' . $_POST['mois'] . '-' . $_POST['jour'];
//test de la  date
echo $bonnedate;
 
if (isset ($_POST['Jour'])AND isset($_POST['mois']) AND isset( $_POST['annee']))
{
//le visiteur vient de rentrer les données
//elles doivent rentrer dans la BDD à date d'expiration en fonction de l'identifiant
 
//la variable $bonnedate remplacera l'élément dans la case date_expiration pour l'identifiant donné
$requete1 = mysql_query ('UPDATE tablessai1 SET Date_expiration=$bonnedate WHERE Identifiant="'.$_POST['id'].'"') or die(mysql_error());
 
 
 
}
else // si le visiteur n'a pas rentré la date, on affiche le formulaire
{
?>
<p>Indiquez la date d'expiration (jj/mm/aaaa) :</p>
 
<form method="post" action="essaidate.php">
<p>
 <input type="text" name="id" />  
    <input type="text" name="jour" size="2" maxlength="2" />  
    <input type="text" name="mois" size="2" maxlength="2" />  
    <input type="text" name="an" size="4" maxlength="4" /><br /><br />
    <input type="submit" value="Envoyer" />
</p>
</form>
<?
}
//test de l'affichage de la nouvelle date rentrée
$requete2 = mysql_query ('SELECT Date_expiration FROM tablessai1 WHERE Identifiant="'.$_POST['id'].'"') or die(mysql_error());
while ($donnees = mysql_fetch_array($requete2) )
{
 echo $donnees['Date_expiration']; //et là j'ai la date 0000-00-00 d'origine, qui n'est pas modifiée GRRRR
}
mysql_close();
?>
 
 
soyez indulgents je suis une bille qui transpire quand elle tape du code !
 
le type de colone je vois pas trop ce que tu veux dire : la colonne dans mysql est de type date.
 
 
merci de vous pencher sur la question, ça réchauffe le coeur!


Message édité par flock86 le 25-01-2006 à 17:26:58
Reply

Marsh Posté le 25-01-2006 à 17:29:15    

Rajoute un " avant et aprés $bonnedate dans ta requette SQL, ca ira mieux comme ça vu que ce que tu veux lui envoyer, c'est une date sous forme de texte, par une soustraction.
Et en passant, sort là de la requette tout comem t'as fait pour $_POST['id'] sinon c'est le texte "$bonnedate" que t'envéras et pas le contenu de la variable $bonnedate.
 
Si t'avais fait un echo de la requette, t'aurais compris dessuite une des deux erreurs. D'ailleur je suis étoné que mysql n'ai pas retourné de message d'erreur.

Reply

Marsh Posté le 25-01-2006 à 17:32:08    

ok merci !! je vais faire un essai de suite!
 

Reply

Marsh Posté le 25-01-2006 à 17:40:51    

flock86 a écrit :

ok merci !! je vais faire un essai de suite!


 
bon j'ai essayé et ça n'a pas l'air de fonctionner. je récupère toujours 0000-00-00 quand je fais ma dernière requete sql.
 
voici ce que j'ai modifié  à la ligne 20 :  
 
$requete1 = mysql_query ('UPDATE tablessai1 SET Date_expiration="'.$bonnedate.'" WHERE Identifiant="'.$_POST['id'].'"') or die(mysql_error());  
 
peut-être n'ais-je pas tout compris dans les conseils prodigués?

Reply

Marsh Posté le 25-01-2006 à 18:08:28    

rajoute un

Citation :

echo 'UPDATE tablessai1 SET Date_expiration="'.$bonnedate.'" WHERE Identifiant="'.$_POST['id'].'"'


Tu pouras voir si ta requette contient bien les données que t'espéres.

Reply

Marsh Posté le 26-01-2006 à 09:26:06    

omega2 a écrit :

rajoute un

Citation :

echo 'UPDATE tablessai1 SET Date_expiration="'.$bonnedate.'" WHERE Identifiant="'.$_POST['id'].'"'


Tu pouras voir si ta requette contient bien les données que t'espéres.


 
ok merci!
j'execute :  
 
ça ne m'affiche rien de plus ni données ni erreurs...  
 
voici mon code :  
 
<?php
//connexion à la BDD
mysql_connect("localhost", "root", "" );
mysql_select_db("bddessai1" );  
 
//récupération de la date déjà dans la base pour la mettre ailleurs plus tard
$recupdate = mysql_query ('SELECT Date_expiration FROM tablessai1 WHERE Identifiant="'.$_POST['id'].'"') or die(mysql_error());
 
//définition de la variable compatible avec le format date de mysql
$bonnedate=$_POST['an'] . '-' . $_POST['mois'] . '-' . $_POST['jour'];
//test de la récupération des dates via le formulaire
echo $bonnedate;
 
if (isset ($_POST['Jour'])AND isset($_POST['mois']) AND isset( $_POST['annee']))
{
//le visiteur vient de rentrer les données
//elles doivent rentrer dans la BDD à date d'expiration en fonction de l'identifiant
 
//la variable $bonnedate remplacera l'élément dans la case date_expiration pour l'identifiant donné
$requete1 = mysql_query ('UPDATE tablessai1 SET Date_expiration="'.$bonnedate.'" WHERE Identifiant="'.$_POST['id'].'"') or die(mysql_error());  
echo 'UPDATE tablessai1 SET Date_expiration="'.$bonnedate.'" WHERE Identifiant="'.$_POST['id'].'"';
 
 
 
 
}
else // si le visiteur n'a pas rentré la date, on affiche le formulaire
{
?>
<p>Indiquez la date d'expiration (jj/mm/aaaa) :</p>
 
<form method="post" action="essaidate.php">
<p>
 <input type="text" name="id" />  
    <input type="text" name="jour" size="2" maxlength="2" />  
    <input type="text" name="mois" size="2" maxlength="2" />  
    <input type="text" name="an" size="4" maxlength="4" /><br /><br />
    <input type="submit" value="Envoyer" />
</p>
</form>
<?
}
//test de l'affichage de la nouvelle date rentrée
$requete2 = mysql_query ('SELECT Date_expiration FROM tablessai1 WHERE Identifiant="'.$_POST['id'].'"') or die(mysql_error());
while ($donnees = mysql_fetch_array($requete2) )
{
 echo $donnees['Date_expiration']; //et là j'ai la date 0000-00-00 d'origine, qui n'est pas modifiée GRRRR
}
mysql_close();
?>

Reply

Marsh Posté le 26-01-2006 à 11:12:35    

Par hasard, il te réafficherait pas le formulaire? (passage dans le "else" )
 
Et je viens de réaliser un truc, t'envoie et t'utilises $_POST['an'] mais tu testes l'existance de $_POST['annee']. Y aurait pas une erreur par là?

Reply

Marsh Posté le 26-01-2006 à 11:25:32    

ouaaahhh!  
ben si il me réaffiche le formulaire! (???)  
 
et oui désolé pour cette faute à la c** pour ['an'] et ['annee'] j'ai honte!  
 
je vérifie ça...
 
bon y'a vraiment un truc qui va toujours pas...
en mettant ['an'] normalement, il devrait alors considérer que ma variable est bien créée (en plus je l'affiche et ça marche) donc il ne devrait pas continuer jusqu'au else.
donc je ne devrais pas voir mon formulaire!!
rhaaa!!
bo'del de me'de!!
 :fou:
 
[après un bon repas]
 
ça y est je pense que ça marche!!
encore une fois je mérite des baffes!!!!
nom formulaire = Jour
nom dans $bonnedate = $jour...
 
j'ai fait un echo de l'insertion de ma variable $bonnedate et ça marche, comme tu me l'avais conseillé!!
En plus, elle est bien reconnue en tant que telle, car si j'envoie des caractères non numérique ça devient 0000-00-00.
 
bon ben je pensais qu'il était nécessaire de déclarer une variable au format date pour la traiter avec  sql ensuite, mais apparemment une série de chiffres est directement reconnu comme tel...
 
COOL!!!
 
merci omega2, grâce à toi j'ai compris comment repérer mes erreurs!! :jap:  
 
 
 
 


Message édité par flock86 le 26-01-2006 à 14:18:09
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed