Aller au contenu

Update ne fonctionne plus


Yavuz

Sujets conseillés

Bonjour amis hubiens (cela me plaît plus)/hubois,

Avez-vous déjà eu un UPDATE qui ne fonctionne plus du jour au lendemain sans raison.

Je précise que la requête fonctionnait depuis plus 1 an et maintenant quand la requête est exécutée, 3 champs sur 10 ne sont pas mis à jours.

Auriez vous une idée ?

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Merci Ernestine,


$LesNews->executerRequete("UPDATE table SET champsA='".$_POST['champsA']."', champsB='".$_POST['champsB']."' ,champs='".$_POST['champs']."',champs='".$_POST['champs']."',champs1='".$_POST['champs']."',champs='".$_POST['champs']."',champs1='".$_POST['champs']."', champsC='".$champsC."' ,champs='".$champs."', champs='".$champs."' WHERE champs='".$champs."'");

Le champsA, champsB, champsC ne se mets pas à jours.

  • Le champsA est un texte, j'enregistre un texte avec HMTL
  • Le champsB est un texte, j'enregistre une url
  • Le champsC est un varchar(200), j'enregistre un email

Je suis chez ovh et dans tous les cas toutes les variables sont remplies.

Veux tu plus d'infos ?

Si oui lesquelles ?

Lien vers le commentaire
Partager sur d’autres sites

Quel drôle de nommage !

Dans ton premier message, tu nous informes que 3 champs sur 10 ne sont pas mis à jour. Or si on regarde ta requête, on voit bien dix champs qui sont mis à jours, mais sur les dix, ils y en a qui sont plusieurs fois les mêmes :

- le champ nommé "champs" est updaté 5 fois, tantôt avec la valeur de $champs et tantôt avec la valeur de $_POST['champs']

- le champ nommé "champs1" est updaté 2 fois avec la valeur de $_POST['champs']

Au final, tu mets à jour seulement 5 champs : champs, champsA, champsB, champsC, champs1

C'est un véritable charabia, un bon nettoyage s'impose ;) Et commencer par attribuer de vrais noms aux champs (par exemple : "url", "email", etc, plutôt que "champs1", "champsA", etc)

Essaie aussi de faire un var_dump($_POST); pour vérifier que le $_POST contient les bonnes valeurs, parce que si ça se trouve, c'est là que ça coince.

Lien vers le commentaire
Partager sur d’autres sites

Je suppose que tu as remplacé les noms réels des champs par des noms génériques, mais c'est vrai que là ça ne fait pas beaucoup de sens. En particulier, tu ne nous dis pas si les autres champs sont modifiés ou pas, et surtout si la condition est toujours valable (ce qui est vraisemblablement le problème). Autre possibilité, ça manque très fortement d'escapes tout ça, donc il suffit de peu de chose pour que la requête parte en vrille...

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

Merci Ernestine et Jcaron, effectivement j'ai modifié volontairement le nom des champs.

Je viens de faire un test banal avec la requête au strict minimum :

La valeur de $_POST['test']='test'; (via le formulaire - input)

"UPDATE nomtable SET name='test' WHERE id='12'" c'est OK

"UPDATE nomtable SET name='".$_POST['test']."' WHERE id='12'" erreur

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Que contient $_POST['test']? Quel est le message d'erreur?

Comme déjà précisé, concaténer $_POST['test'] directement dans ta requête sans l'escaper, c'est ouvrir la porte à toutes sortes de problèmes (en particulier des injections SQL qui peuvent faire beaucoup de dégâts, mais aussi simplement empêcher certaines requêtes de fonctionner).

Jacques.

Lien vers le commentaire
Partager sur d’autres sites

Merci Jcaron, j'ai bien appliqué tes conseils mais rien ne fais. Le pire, même l'exemple plus haut ne fonctionne plus.

C'est hallucinant, des requêtes imbriquées deux lignes plus bas fonctionnent mais plus celui là. Il a donné l'âme 1,5 ans après.

Je vais continuer a chercher si d'autres on eu un problème similaire.

Lien vers le commentaire
Partager sur d’autres sites

J'ai une bonne et une mauvaise nouvelle.

La bonne, j'ai trouvé le problème ainsi qu'une solution temporaire.

La mauvaise, c'est que le problème vient d'une erreur html dans la page dont je n'arrive pas à trouver.

Je vous mets dans le contexte :

Pour faire simple et pour ne pas me casser la tête avec les cas particuliers, je ne contrôle pas (aucune condition) si une valeur est vide ou pas, pour la mise à jour d'une table de ma base de donnée.

Le problème :

Firefox/IE recharge la page automatiquement (à la Gérard Majax ni vu ni connu) lorsqu'ils se heurtent à une erreur html.

Étant donné que je ne contrôle pas si une variable est vide ou pas (cas particuliers), lorsque que le navigateur rencontre un problème, il recharge la page.

Les valeurs des variables sont perdus et j'ai un update avec les valeurs vides.

La solution :

Source qui date de 2006 !! : 1er forum qui renvoi vers le second forum

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...