problème d'enregistrement

Luna
Invité n'ayant pas de compte PHPfrance

19 juin 2006, 11:52

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.

ViPHP
ViPHP | 2144 Messages

19 juin 2006, 12:04

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.

Luna
Invité n'ayant pas de compte PHPfrance

19 juin 2006, 12:05

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juin 2006, 12:37

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

Invité
Invité n'ayant pas de compte PHPfrance

19 juin 2006, 13:36

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juin 2006, 14:53

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

Eléphant du PHP | 120 Messages

19 juin 2006, 15:13

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 juin 2006, 15:18

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 ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

19 juin 2006, 15:33

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 ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

19 juin 2006, 16:02

effectivement :-k

Mais comme j'utilise jamais de caractère interdit, je n'ai pas à utiliser les ` ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

luna
Invité n'ayant pas de compte PHPfrance

19 juin 2006, 16:20

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

luna
Invité n'ayant pas de compte PHPfrance

20 juin 2006, 08:47

date_envoi='2006 -06-21'
c'était un problème d'espace que j'ajoutais lorsque j'affichai les champs.

merci pour l'aide.