Page 1 sur 1

problème d'enregistrement

Posté : 19 juin 2006, 11:52
par Luna
Bonjour,

Voila, j'ai un souci, j'ai une page de modification qui me créer des erreurs.
J'ai deux champ date datee et datd. Lorque je modifie une seul date, celle non modifié est enregistrée sous la forme 0000-00-00. Si je change les deux date cela fonctionne.

Code : Tout sélectionner

<input name="datd" type="text" id="datd" size="10" maxlength="10"> <input name="datee" type="text" id="datee" size="10" maxlength="10">

Code : Tout sélectionner

if (isset($_POST['datd'])) { list($annee, $mois, $jour) = explode("/", $_POST['datd']); $datd = $jour."-".$mois."-".$annee; } else { $datd = ""; } if (isset($_POST['datee'])) { list($annee, $mois, $jour) = explode("/", $_POST['datee']); $datee = $jour."-".$mois."-".$annee; } else { $datee = ""; }

Code : Tout sélectionner

update `requiere` set date_demande='$datd', quantite='$qt', date_envoi='$datee'......
Toute les autre modification sur le reste du formulaire mais pas c'est deux la.

Voila, jespère que vous pourrez m'aider.

merci d'avance.

Posté : 19 juin 2006, 12:04
par iclo
Vérifies que tu récuperes bien les deux dates issues de ton formulaire, qu'elles aient été modifiée ou pas, en faisaint un simple print des deux variables.
Comme ça, on verra déja mieux d'où peut venir le problème.

Posté : 19 juin 2006, 12:05
par Luna
Pas de problème, quand je fais des echos des variables, cela m'affiche bien les bon truc, que ce soit avant la modif dans la base, ou après.
De plus j'ai essayer ma requete separement et il n'y a pas de problème non plus

merci

Posté : 19 juin 2006, 12:37
par Ryle
Juste une remarque "0000-00-00" est le format de date par défaut de mysql. Il se peut donc que la valeur que tu insères soit vide, soit dans un format ne convenant pas...

affiche la requête générée avant de l'exécuter et montre là nous :)
montre nous également le résultat d'un print_r($_POST) pour voir les données envoyées à ton scripts

Pis sinon, soit dit en passant même si cela marche, il faudrait mieux appeller $jour la variable contenant le jour et $annee celle contenant l'année, sinon cela risque de prêter à confusion à un moment où à un autre:
list($jour, $mois, $annee) = explode("/", $_POST['datd']); // format jj/mm/aaaa
$datd = $annee."-".$mois."-".$jour; // format aaaa-mm-jj

Posté : 19 juin 2006, 13:36
par Invité
le resultat print_r($_post)
Array ( [nom] => détergeant [num] => 3 [numl] => AC1 [cop] => 0 [cod] => 9 [datd] => 15/06/2006 [qt] => 1 [datee] => 16/01/2005 [priv] => 10.00 [urg] => 1 [sub_x] => 53 [sub_y] => 9 )

sinon, je fais comment pour vous faire voir la requête généré ?

uste une remarque "0000-00-00" est le format de date par défaut de mysql. Il se peut donc que la valeur que tu insères soit vide, soit dans un format ne convenant pas...
c'est bizzarre que cela marche certaine fois et d'autre non alors que j'écris la même chose, je reprend le texte en mémoire.

merci

Posté : 19 juin 2006, 14:53
par Ryle
sinon, je fais comment pour vous faire voir la requête généré ?
Il te suffit de placer la requête update dans une variable et de l'afficher avant de l'exécuter :
$sql = "update `requiere` set date_demande='$datd', quantite='$qt', date_envoi='$datee'......"; // ta requête
echo $sql; // l'affichage
mysql_query($sql) or die(mysql_error()); // l'exécution

Posté : 19 juin 2006, 15:13
par rakizm
salut à tous

commence d'abord par enlever les deux cotes dans ta requete sql

Code : Tout sélectionner

update requiere set.....
après on verra si ça marche pas à tous les coups
:o

Posté : 19 juin 2006, 15:18
par zeus
commence d'abord par enlever les deux cotes dans ta requete sql
Pourquoi ? c'est LE caractère qui permet à tous les noms de tables de fonctionner (même avec des espaces ;) )

Ce n'est pas une erreur, au contraire, c'est la norme ;)

Posté : 19 juin 2006, 15:33
par Ryle
au contraire, c'est la norme ;)
J'irais pas jusque là.. la norme c'est de pas utiliser de caractère spéciaux (autre que - ou _) ou de mot clé sql reservé dans ses noms de tables ou de champs :)

Maintenant le ` permet effectivement de protéger leurs noms dans MySql si jamais quelqu'un l'a fait malgré tout (c'est parfois pratique d'avoir un champ date qui s'appelle date, mais c'est mal et il vaut mieux ne jamais croiser les effluves (comprenne qui pourra))

Mais ce n'est absolument pas une norme et oracle, db2, sql server et autre... vous enverront promener si vous tentez de leur en coller, tout comme ils le feront si vous utilisez des mots clés protégés ;)

Posté : 19 juin 2006, 16:02
par zeus
effectivement :-k

Mais comme j'utilise jamais de caractère interdit, je n'ai pas à utiliser les ` ;)

Posté : 19 juin 2006, 16:20
par luna
bon, toujours pas de problèmes ça m'affiche bien la bonne requete
update `requiere` set date_demande='2006-06-16', quantite='2 ', date_envoi='2006 -06-21', nb_fois='1', urgent='1', exceptionnel='1', prix_vente='12.00 ' where code_freq='9' and code_prod='2 ' and matricule_lieux='AC1 '

qui marche si je la lance dans mysql mais pas avec le php, vu que j'ai modifier qu'un champ date.

Je précise que si je modifie l'un ou l'autre des champs j'ai l'erreur, mais pas si je modifie les 2. Si j'en modifie aucun, j'ai 0000-00-00 pour les 2.

merci

Posté : 20 juin 2006, 08:47
par luna
date_envoi='2006 -06-21'
c'était un problème d'espace que j'ajoutais lorsque j'affichai les champs.

merci pour l'aide.