Valeur d'un champs vide du formulaire [Résolu]

Signaler
Messages postés
18
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
4 novembre 2005
-
Messages postés
18
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
4 novembre 2005
-
Bonjour!

Voila mon problème: dans un formulaire, j'ai deux champs de texte qui me servent à récupérer un horaire ( le premier permet de saisir l'heure et l'autre les minutes ). Je récupère ces 2 valeurs pour avoir l'horaire saisi. Le problème c'est que si ces 2 champs ne sont pas renseignés, le champs horaire dans ma bdd se retrouve à 00:00:00 alors que je voudrais qu'il soir à "Null".

Quelqu'un pourrait il me donner une méthode pour résoudre ce problème?

Merci d'avance.

9 réponses

Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
Voila le problème, tu ne dois pas entourer les variables qui peuvent avoir un champs NULL par des délimiteur " ou ' ou `....

Donc seulement mettre $horairefin. Et pour remédier au problème de mettre ces délimiteurs lorsque c'est pas NULL, tu peux faire ceci :
if ($horairefin==":")
$horairefin =NULL;
else
$horairefin = "'".$horairefin."'";
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
SI tu peux mettre ton champs datetime à NULL, bah il faut qu'il y ait l'option dans la db (pas setté à NOT NULL, mais à NULL)

Donc dans ton code, à toi de vérifier si !isset ou si ==-1 (exemple), bah alors tu écris NULL
Messages postés
18
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
4 novembre 2005

L'option dans la db est bien mise à NULL mais je n'arrive pas à donner la valeur NULL au champs correspondant, je me retrouve systematiquement avec "00:00:00".

Voila le bout de code concerné:
$heure=$HTTP_POST_VARS['heure'];
$minute= $HTTP_POST_VARS['minute'];
$horaire= $heure.":".$minute; 
if ($horairefin==":") {$horairefin =NULL;}



Si quelqu'un pouvait m'aider ca serait cool car j'ai beau chercher un peu partout, pas moyen de comprendre l'erreur... :-/
Messages postés
18
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
4 novembre 2005

oups, remplacer $horairefin à la dernière ligne par $horaire tout court...
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
copie ton INSERT (ou update) pour voir
Messages postés
18
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
4 novembre 2005

En fait , j'insère en une fois toutes les valeurs du formulaire dans la bdd

Ca donne:

$resultat = mysql_query ("INSERT INTO evenement (titre, soustitre, festival, datereelle, datedebut, datefin, heure, heurefin, lieu, site, description, prix, prixspecial, lien, cible, miseenpage, image, theme1, theme2, theme3)
VALUES ("$titre","$soustitre","$titrefestival","$datereelle","$datedebut","$datefin", "$horaire", "$horairefin", "$lieu", "$site", "$description","$prix","$prixspecial","$lien","$cible","$miseenpage","$image", "$themes1", "$themes2", "$themes3")",$dbi);

Messages postés
18
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
4 novembre 2005

Merci de ton aide GRenard mais malheureusement cela ne fonctionne pas, la requête n'est pas envoyée avec ton astuce...
Messages postés
1662
Date d'inscription
lundi 16 septembre 2002
Statut
Membre
Dernière intervention
30 juillet 2008
1
J'Sais pas ske tu fais, mais c'est ca qui faut faire, je fais la même chose (ou presque) pour un INSERT.
Messages postés
18
Date d'inscription
lundi 17 mai 2004
Statut
Membre
Dernière intervention
4 novembre 2005

Tu avais effectivement raison, c'était bien un problème de guillemet!

if ($horairefin==":" )
{$horairefin ='NULL';} 
else {$horairefin=""".$horairefin.""";}


Tout en enlevant les guillemets que j'avais mis pour $horairefin dans la requête d'insertion.

Merci pour ton aide précieuse!