UPDATE mysql ===> champs vide non voulus
9 messages
• Page 1 sur 1
- Stellvia
- WRInaute occasionnel

- Messages: 451
- Inscription: 28 Déc 2004
UPDATE mysql ===> champs vide non voulus
Helo...
Bon je précise tout de suite que mon problème est très très bisard.... limite je me demande si mon pc est pas possédé par un démon
parce que franchement c'est du grand n'importe quoi.
Suite à un formulaire je fait un update :
Le champs num est alors vidé.
Donc j'ai fait un echo de ma requete et la variable num est bien attribué :
De plus si je copie la requete dans phpmyadmin cela fonctionne.
Alors maintenant j'ai encore plus bisard, êtes-vous assis ?
Si je fait un F5 sur la page ( donc avec les variable post encore dans le navigateur qui me demande si je veux renvoyer les infos ) , CELA FONCTIONNE.
L'update vide mes champs la premère fois, et les remplis correctement avec un F5.
....
....
....
....
....................................

Ca fait 5 h que je bloque la dessus, j'ai tout essayé, limite j'ai envie de me reconvertir en jardinier tellement je suis blasé. Mon problème est tout simplement INCOMPREHENSIBLE, j'ai jamais vu ca....
PS : MySQL: 5.0.44
Bon je précise tout de suite que mon problème est très très bisard.... limite je me demande si mon pc est pas possédé par un démon
Suite à un formulaire je fait un update :
- Code: Tout sélectionner
mysql_query("UPDATE portable SET num='$numero' where id='$id'") or die ('Erreur : '.mysql_error());
Le champs num est alors vidé.
Donc j'ai fait un echo de ma requete et la variable num est bien attribué :
- Code: Tout sélectionner
mysql_query("UPDATE portable SET num='06865432XX' where id='7635'") or die ('Erreur : '.mysql_error());
De plus si je copie la requete dans phpmyadmin cela fonctionne.
Alors maintenant j'ai encore plus bisard, êtes-vous assis ?
Si je fait un F5 sur la page ( donc avec les variable post encore dans le navigateur qui me demande si je veux renvoyer les infos ) , CELA FONCTIONNE.
L'update vide mes champs la premère fois, et les remplis correctement avec un F5.
....
....
....
....
....................................

Ca fait 5 h que je bloque la dessus, j'ai tout essayé, limite j'ai envie de me reconvertir en jardinier tellement je suis blasé. Mon problème est tout simplement INCOMPREHENSIBLE, j'ai jamais vu ca....
PS : MySQL: 5.0.44
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: UPDATE mysql ===> champs vide non voulus
commence ta page par :
Tu verras si tu as une petite couille.
Et échappe tes variables correctement :
devrait être (même si id doit être un entier)
Le rajout du ";" n'est pas obligatoire mais ça reste plus "propre"
- Code: Tout sélectionner
ini_set('display_errors', true);
error_reporting(E_ALL);
Tu verras si tu as une petite couille.
Et échappe tes variables correctement :
- Code: Tout sélectionner
mysql_query("UPDATE portable SET num='$numero' where id='$id'") or die ('Erreur : '.mysql_error());
devrait être (même si id doit être un entier)
- Code: Tout sélectionner
mysql_query("UPDATE portable SET num='" . mysql_real_escape_string($numero) . "' where id='" . mysql_real_escape_string($id) . ";'") or die ('Erreur : '.mysql_error());
Le rajout du ";" n'est pas obligatoire mais ça reste plus "propre"
- Stellvia
- WRInaute occasionnel

- Messages: 451
- Inscription: 28 Déc 2004
Re: UPDATE mysql ===> champs vide non voulus
Merci d'essayer de m'aider.
Alors j'ai rajouter le code pour les erreurs je n'ai aucune sortie, aucune erreurs. ( meme pas de Notice )
De ce coté ca a l'air d'aller.
J'utilise déja mysql_real_escape_string mais je l'avais enlever ici dans un soucis de simplicité ( a noter que dans les 2 cas c'est le meme problème )
Il faut :
- soit faire un F5 pour que l'update fonctionne
- soit refaire une seconde fois un update ( on retourne sur le formulaire, on repost, et ca marche )
Pour avoir a nouveau le bug je suis obligé à chaque fois d'effacer la ligne dans mysql et d'en recrée une nouvelle, car l'update ne fonctionne pas uniquement la premiere fois, apres c'est bon.
C'est complétement invraisemblable.
Ta derniere ligne avec le ; sumplémentaire ne fonctionne pas chez moi ( il n'y a même pas d'erreur d'ailleurs... ca ne change rien, ca ne vide pas le champs non plus )
Alors j'ai rajouter le code pour les erreurs je n'ai aucune sortie, aucune erreurs. ( meme pas de Notice )
De ce coté ca a l'air d'aller.
J'utilise déja mysql_real_escape_string mais je l'avais enlever ici dans un soucis de simplicité ( a noter que dans les 2 cas c'est le meme problème )
Il faut :
- soit faire un F5 pour que l'update fonctionne
- soit refaire une seconde fois un update ( on retourne sur le formulaire, on repost, et ca marche )
Pour avoir a nouveau le bug je suis obligé à chaque fois d'effacer la ligne dans mysql et d'en recrée une nouvelle, car l'update ne fonctionne pas uniquement la premiere fois, apres c'est bon.
C'est complétement invraisemblable.
Ta derniere ligne avec le ; sumplémentaire ne fonctionne pas chez moi ( il n'y a même pas d'erreur d'ailleurs... ca ne change rien, ca ne vide pas le champs non plus )
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: UPDATE mysql ===> champs vide non voulus
ça donne bien ce que tu veux un :
Peut-être une var définie deux fois
- Code: Tout sélectionner
echo '<pre>';
print_r($_POST);
echo '</pre>';
Peut-être une var définie deux fois
- Stellvia
- WRInaute occasionnel

- Messages: 451
- Inscription: 28 Déc 2004
Re: UPDATE mysql ===> champs vide non voulus
Julia41 a écrit:ça donne bien ce que tu veux un :
- Code: Tout sélectionner
echo '<pre>';
print_r($_POST);
echo '</pre>';
Peut-être une var définie deux fois
Oui, je sais que ca semble fou...
Je viens de tester à l'instant ca :
- Code: Tout sélectionner
mysql_query("UPDATE portable SET num='$numero' where id='$id'") or die ('Erreur : '.mysql_error());
echo "UPDATE portable SET num='$numero' where id='$id";
L'update mets du vide et ca m'affiche :
UPDATE portable SET num='123456789' where id='1234'
Même topo je fait F5 et ca marche comme par miracle.
Maintenant je change mon code et je mets le mysql query en dur sans variable comme ceci :
- Code: Tout sélectionner
mysql_query("UPDATE portable SET num='123456789' where id='1234'") or die ('Erreur : '.mysql_error());
Ceci fonctionne très bien. ( l'update est fait du premier coup )
Comment un truc pareil est possible........ limite il faut appeller mulder et scully la non ?
Ca me dépasse. Je peux pas lutter contre un bug pareil.
-

UsagiYojimbo - WRInaute accro

- Messages: 8583
- Inscription: 23 Nov 2005
Re: UPDATE mysql ===> champs vide non voulus
Et le test que te propose Julia41, tu as testé ? Ca donne quoi ?
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: UPDATE mysql ===> champs vide non voulus
A mon avis c'est une variable définie 2 fois par exemple
ta_page.php?id=10
avec un register_global à ON ça peut faire couiller.
Je donne des idées en vrac sans plus de détails mais bon.
Tente sinon un simple :
[code]mysql_query("UPDATE portable SET num='" . intval($_POST["numero"]) . "' where id='" . intval($_POST["id"]) . ";")|/code]
Ne connaissans pas trop tes variables peut-être qu'il y a un souchis tout simple. Mais les bugs fantômes sont généralement des bugs "tout bêtes"
ta_page.php?id=10
avec un register_global à ON ça peut faire couiller.
Je donne des idées en vrac sans plus de détails mais bon.
Tente sinon un simple :
[code]mysql_query("UPDATE portable SET num='" . intval($_POST["numero"]) . "' where id='" . intval($_POST["id"]) . ";")|/code]
Ne connaissans pas trop tes variables peut-être qu'il y a un souchis tout simple. Mais les bugs fantômes sont généralement des bugs "tout bêtes"
- Stellvia
- WRInaute occasionnel

- Messages: 451
- Inscription: 28 Déc 2004
Re: UPDATE mysql ===> champs vide non voulus
Register global est a off, mais l'idée etait pertinente j'ai quand meme été vérifié dans le php.ini, et dans php_info, je confime que register global est a off.
echo '<pre>';
print_r($_POST);
echo '</pre>';
m'affiche les bonne variable.
La mon exemple c'est pour des chiffres mais avec du texte c'est pareil :
Ceci fonctionne.
Ca marche pas et ca affiche :
Mais bon j'avance , j'ai changé mon formulaire en GET, et maintenant , apres avoir changer mes $_POST['variable'] en $_GET['variable'] ca fonctionne.
Par contre j'ai absolument pas compris pourquoi POST ne marchais pas surtout quand le echo affiche la même chose..... je vous remercie quand meme d'avoir essayé de m'aider, ca m'a soutenus au moins dans ma démarche, cette connerie m'a tenu en haleine toute la journée....
echo '<pre>';
print_r($_POST);
echo '</pre>';
m'affiche les bonne variable.
La mon exemple c'est pour des chiffres mais avec du texte c'est pareil :
- Code: Tout sélectionner
$variable="pierre";
mysql_query("UPDATE portable SET prenom='$variable' where id='1234'") or die ('Erreur : '.mysql_error());
Ceci fonctionne.
- Code: Tout sélectionner
$variable=$_POST['variable'];
echo "ma variable est $variable";
mysql_query("UPDATE portable SET prenom='$variable' where id='1234'") or die ('Erreur : '.mysql_error());
Ca marche pas et ca affiche :
ma variable est pierre
Mais bon j'avance , j'ai changé mon formulaire en GET, et maintenant , apres avoir changer mes $_POST['variable'] en $_GET['variable'] ca fonctionne.
Par contre j'ai absolument pas compris pourquoi POST ne marchais pas surtout quand le echo affiche la même chose..... je vous remercie quand meme d'avoir essayé de m'aider, ca m'a soutenus au moins dans ma démarche, cette connerie m'a tenu en haleine toute la journée....
-

Julia41 - WRInaute passionné

- Messages: 1765
- Inscription: 31 Aoû 2007
Re: UPDATE mysql ===> champs vide non voulus
Aucune idée de cet éventuel problème, tu as peut-être un unset quelque part. J'avais eu le même genre d'erreur une fois, en changeant le nom des variables il était parti mais je ne suis même pas sûr que ça venait de là ^^
9 messages
• Page 1 sur 1
Lectures recommandées sur ce thème :
- Bug avec MySQL -> update les champs à vide
- 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 2 invités
