Bug avec MySQL -> update les champs à vide
23 messages
• Page 1 sur 2 • 1, 2
- positivespike
- Nouveau WRInaute

- Messages: 21
- Inscription: 21 Fév 2007
Bug avec MySQL -> update les champs à vide
Bonsoir à tous.
J'ai le problème suivant en tantant un Update dans ma base MySQL :
1) Je récupère et je formate mes variables POST :
2) Je fais l'update dans la base comme ceci :
Résultat :
J'obtiens une mise à 0 de tous les champs
Pourtant quand je fais un echo de mon $sql, j'obtiens bien des valeurs correctes.
Je précise deplus, qu'en local tout marche impecablement, mais sur mon serveur de prod, toutes les variables sont mises à 0
Pour courroner le tout, quand j ecopie colle l'echo de$sql dans le PHPmYAdmin distant, tout marche bien, l'update se fait correctement.
Si quelqu'un a une idée du problème, je lui en serai vraiment reconnaissant
Merci d'avance
J'ai le problème suivant en tantant un Update dans ma base MySQL :
1) Je récupère et je formate mes variables POST :
- Code: Tout sélectionner
$id_journal = $_POST['id_journal'];
$jouri = $_POST['jour_i'];
$moisi = $_POST['mois_i'];
$anneei = $_POST['annee_i'];
$heure = $_POST['heure_i'];
$poids = $_POST['poids_i'];
$poids = str_replace(",", '.', $poids);
$poids = round($poids,2);
$tour_taille = $_POST['tour_taille'];
$tour_taille = str_replace(",", '.', $tour_taille);
$tour_taille = round($tour_taille,2);
$nivalim = $_POST['nivalim'];
$txtalim = $_POST['txtalim'];
$txtalim = str_replace("\n", '<br>', $txtalim);
$nivsport = $_POST['nivsport'];
$txtsport = $_POST['txtsport'];
$txtsport = str_replace("\n", '<br>', $txtsport);
$nivmood = $_POST['nivmood'];
$txtjournal = $_POST['txtjournal'];
$txtjournal = str_replace("\n", '<br>', $txtjournal);
2) Je fais l'update dans la base comme ceci :
- Code: Tout sélectionner
$sql = "UPDATE journal SET `date`='$anneei-$moisi-$jouri',`heure`='$heure',`poids`='$poids',`tour_taille` = $tour_taille,
`alim_mood`='$nivalim',`alim_com`='$txtalim',`act_mood`='$nivsport',`act_com`='$txtsport',`humeur`='$nivmood',`journal`='$txtjournal' WHERE `id`='$idJournal'";
$resultat = mysql_query($sql);
Résultat :
J'obtiens une mise à 0 de tous les champs
Pourtant quand je fais un echo de mon $sql, j'obtiens bien des valeurs correctes.
Je précise deplus, qu'en local tout marche impecablement, mais sur mon serveur de prod, toutes les variables sont mises à 0
Pour courroner le tout, quand j ecopie colle l'echo de$sql dans le PHPmYAdmin distant, tout marche bien, l'update se fait correctement.
Si quelqu'un a une idée du problème, je lui en serai vraiment reconnaissant
Merci d'avance
- positivespike
- Nouveau WRInaute

- Messages: 21
- Inscription: 21 Fév 2007
Merci pour l'astuce, mais ca ne change rien.
J'ai même remarqué quelquechose d'encore plus étrange :
Quand je fais l'update, la première fois tous les champs sont donc mis à 0, mais si j'effectue un rechargement de la page (avec les données POST) La la modif s'effectue sans problème !!
Se peut-il qu'il y ai un problème avec Apache ou MySQL ? Je remarque d'ailleurs des lenteurs sur le site.
J'ai même remarqué quelquechose d'encore plus étrange :
Quand je fais l'update, la première fois tous les champs sont donc mis à 0, mais si j'effectue un rechargement de la page (avec les données POST) La la modif s'effectue sans problème !!
Se peut-il qu'il y ai un problème avec Apache ou MySQL ? Je remarque d'ailleurs des lenteurs sur le site.
-

erestrebian - WRInaute occasionnel

- Messages: 472
- Inscription: 15 Juin 2007
apparemment oui...
tu as essayer de faire émerger un sqlerror et si oui, tu n'as pas d'erreur?
tu as essayer de faire émerger un sqlerror et si oui, tu n'as pas d'erreur?
- positivespike
- Nouveau WRInaute

- Messages: 21
- Inscription: 21 Fév 2007
La j'avoue mon ignorance, faire emerger un sql error c'est equivament d'un " or die(mysqlerror()) " ? si oui , c'est le cas, et je n'ai aucune erreur. si ce n'est pas ca qui fait emerger un mysql error comment dois-je faire ?
Et oui , j'ai exécuté manuellement l'echo du sql dans PHPMYAdmin et là ca marche. MAis comme je le disais, si ke recharge la page avec les variables POST toujours en mémoire, l'UPDATE se fait correctement.
Et oui , j'ai exécuté manuellement l'echo du sql dans PHPMYAdmin et là ca marche. MAis comme je le disais, si ke recharge la page avec les variables POST toujours en mémoire, l'UPDATE se fait correctement.
-

erestrebian - WRInaute occasionnel

- Messages: 472
- Inscription: 15 Juin 2007
a priori, tes variables prennent bien la valeur que tu leur assignes... puisque ça te retourne la requête avec les bonnes valeurs...
et quand tu fais un echo sur $resultat ça affiche 1?
tu as envoyé la requête avec des valeurs fixes (je veux dire sans variable)?
si oui, tu as essayé de passer directement les variables du post directement dans la requête? (tu peux faire " . str_replace("\n", '<br>', $_POST['txtjournal']) . " à la place de passer par $txtjournal)
toutes les valeurs sont mises à 0? ou seulement tour_taille, $nivalim, $txtalim, $nivsport, $txtsport, $nivmood et $txtjournal?
et quand tu fais un echo sur $resultat ça affiche 1?
tu as envoyé la requête avec des valeurs fixes (je veux dire sans variable)?
si oui, tu as essayé de passer directement les variables du post directement dans la requête? (tu peux faire " . str_replace("\n", '<br>', $_POST['txtjournal']) . " à la place de passer par $txtjournal)
toutes les valeurs sont mises à 0? ou seulement tour_taille, $nivalim, $txtalim, $nivsport, $txtsport, $nivmood et $txtjournal?
- positivespike
- Nouveau WRInaute

- Messages: 21
- Inscription: 21 Fév 2007
Toutes champs jouant dans l'UPDATE sont soir mis à
0000-00-00 pour la date
00:00:00 pour l'heure,
0 pour les entiers
RIEN pour les chaines
Les autres champs qui ont pourtant une valeur mais qui n'entrent pas dans l'UPDATE gardent leurs valeurs.
Je n'ai aps encore essayé ceci :
Je le fais et te tiens au courant
Merci
0000-00-00 pour la date
00:00:00 pour l'heure,
0 pour les entiers
RIEN pour les chaines
Les autres champs qui ont pourtant une valeur mais qui n'entrent pas dans l'UPDATE gardent leurs valeurs.
Je n'ai aps encore essayé ceci :
t quand tu fais un echo sur $resultat ça affiche 1?
tu as envoyé la requête avec des valeurs fixes (je veux dire sans variable)?
si oui, tu as essayé de passer directement les variables du post directement dans la requête? (tu peux faire " . str_replace("\n", '<br>', $_POST['txtjournal']) . " à la place de passer par $txtjournal)
Je le fais et te tiens au courant
Merci
-

erestrebian - WRInaute occasionnel

- Messages: 472
- Inscription: 15 Juin 2007
si tu peux également poster un modèle de requête générée...
- positivespike
- Nouveau WRInaute

- Messages: 21
- Inscription: 21 Fév 2007
Alors, voici résumé les faits (attention, c'est bizzare) :
- un echo pour le résultat affiche 1
- Quand je passe des valeurs fixes ca marche
MAIS tres bizarre :
je fais l'update, puis tout de suite apres, je fait une requete sur le poids par exemple et ca affiche le poids correct voulu par l'update.
Cependant, quand je regarde dans PHP MyAdmin, les fameux champs sont à 0.
Un exemple de output :
Avec cet update, j'ai un echo résultat à 1
puis je fais :
et là j'obtiens bien 70, comme demandé dans l'UPDATE
Cependant, je vais voir apres dans PHP MyAdmin, et les valeurs sont à
21519 0000-00-00 00:00:00 850 0 0 0 0 0 0 0
la date a été mise à 0, l'heure aussi et le poids aussi (Les autres étaient à 0 par défaut dans cet exemple)
Puis quand je change de page et que je fais une requete pour obtenis le dernier poids par exemple, il est à 0.
Je précise qu'en local su mon portable tout marche bien.
Sur le serveur distant dédié OVH c'est la que ca foire.
Voila qui est bizarre, tout de suite après l'UPDATE, je fais un SELECT et j'ai la veleur voulue, et quand je vérifie apres, les champs sont à 0.
Merci
PS, voici le code de création de la table journal :
- un echo pour le résultat affiche 1
- Quand je passe des valeurs fixes ca marche
MAIS tres bizarre :
je fais l'update, puis tout de suite apres, je fait une requete sur le poids par exemple et ca affiche le poids correct voulu par l'update.
Cependant, quand je regarde dans PHP MyAdmin, les fameux champs sont à 0.
Un exemple de output :
- Code: Tout sélectionner
UPDATE journal SET `date` = "2007-09-19", heure = "12:52", poids = "70", tour_taille = "100", alim_mood = "1", alim_com = "", act_mood = "", act_com = "TEST", humeur = "3", journal = "TEST" WHERE id = "21519"
Avec cet update, j'ai un echo résultat à 1
puis je fais :
- Code: Tout sélectionner
SELECT poids FROM journal WHERE id = 21519
et là j'obtiens bien 70, comme demandé dans l'UPDATE
Cependant, je vais voir apres dans PHP MyAdmin, et les valeurs sont à
21519 0000-00-00 00:00:00 850 0 0 0 0 0 0 0
la date a été mise à 0, l'heure aussi et le poids aussi (Les autres étaient à 0 par défaut dans cet exemple)
Puis quand je change de page et que je fais une requete pour obtenis le dernier poids par exemple, il est à 0.
Je précise qu'en local su mon portable tout marche bien.
Sur le serveur distant dédié OVH c'est la que ca foire.
Voila qui est bizarre, tout de suite après l'UPDATE, je fais un SELECT et j'ai la veleur voulue, et quand je vérifie apres, les champs sont à 0.
Merci
PS, voici le code de création de la table journal :
- Code: Tout sélectionner
CREATE TABLE journal (
id int(10) NOT NULL auto_increment,
date date default NULL,
heure time default NULL,
client varchar(11) default NULL,
poids double default NULL,
tour_taille double default NULL,
alim_mood char(1) default NULL,
alim_com text,
act_mood char(1) default NULL,
act_com text,
humeur char(1) default NULL,
journal text,
total_calories double default NULL,
total_proteines double default NULL,
total_lipides double default NULL,
total_glucides double default NULL,
total_fruits_legumes double default NULL,
PRIMARY KEY (id)
) TYPE=MyISAM;
-

erestrebian - WRInaute occasionnel

- Messages: 472
- Inscription: 15 Juin 2007
dans un premier lieu, change date en date_qqch car date est un mot réservé...
il n'y a plus aucun contact avec la base de données dans le reste du script? Je trouve cela super bizarre...
il n'y a plus aucun contact avec la base de données dans le reste du script? Je trouve cela super bizarre...
- positivespike
- Nouveau WRInaute

- Messages: 21
- Inscription: 21 Fév 2007
Justement
Je cherche depuis des heures, et il n'y a pourtant plus aucun contact avec l abase de données ailleurs.
D'autant plus que ca ne peut pas être un éventuel autre contact avec l abase pour les raisons suivantes :
1) En local ca marche bien
2) avec de svaleurs entrées en "Dur" ca marche bien
3) Quand je fais un Reload de la page ca annule la mise à 0 précédente et la ca marche nickel.
J'ai jamais vu ca
Help
et merci pour ton aide erestrebian 
D'autant plus que ca ne peut pas être un éventuel autre contact avec l abase pour les raisons suivantes :
1) En local ca marche bien
2) avec de svaleurs entrées en "Dur" ca marche bien
3) Quand je fais un Reload de la page ca annule la mise à 0 précédente et la ca marche nickel.
J'ai jamais vu ca
Help
- positivespike
- Nouveau WRInaute

- Messages: 21
- Inscription: 21 Fév 2007
Salut Rog,
Est ce que tu veux dire que le navigateur aurait du mal avec les variables POST ?
Je pensais que ca n'avait pas d'incidences, mais je précise que j'ai changé l'adresse URL de la page qui effectue ce traitement.
Comment faire pour tester si il s'agit bien d'un problème de cahce du navigateur ?
PS, J'ai effacé mes traces dans Firefox (sessions d'authentifications, cookies, cache) , le problème reste le même.
J'ai l'impression que le problème arrive aussi aux autres internautes qui visitent mon site et qui tentent une modification de leur journal.
Et pour être sur que ca ne soit pas un autre contact avec la base apres, j'ai couper tout le code qui suit l'update., rien à faire, toujours la même chose.
Est ce que tu veux dire que le navigateur aurait du mal avec les variables POST ?
Je pensais que ca n'avait pas d'incidences, mais je précise que j'ai changé l'adresse URL de la page qui effectue ce traitement.
Comment faire pour tester si il s'agit bien d'un problème de cahce du navigateur ?
PS, J'ai effacé mes traces dans Firefox (sessions d'authentifications, cookies, cache) , le problème reste le même.
J'ai l'impression que le problème arrive aussi aux autres internautes qui visitent mon site et qui tentent une modification de leur journal.
Et pour être sur que ca ne soit pas un autre contact avec la base apres, j'ai couper tout le code qui suit l'update., rien à faire, toujours la même chose.
23 messages
• Page 1 sur 2 • 1, 2
Lectures recommandées sur ce thème :
- UPDATE mysql ===> champs vide non voulus
- update champs mysql
- Selectionner un champs non vide dans une base de données
- update d'un champs dans toute la base
- update mysql
- Fonction update mysql
- preg_replace champs "VIDE"
- Pb affichage de champs MySQL: 5.0.51aRecherche :
- Update / Select et Mysql
- UPDATE TABLE MYSQL !
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités



