Yavuz Posté 14 Novembre 2010 Posté 14 Novembre 2010 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.
Ernestine Posté 14 Novembre 2010 Posté 14 Novembre 2010 Avez-vous déjà eu un UPDATE qui ne fonctionne plus du jour au lendemain sans raison. Non, jamais. Il y a forcément une raison. Merci de donner plus de détails, car je ne vois pas par quelle magie on pourrait t'aider ce coup-là
Yavuz Posté 14 Novembre 2010 Auteur Posté 14 Novembre 2010 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 ?
Ernestine Posté 14 Novembre 2010 Posté 14 Novembre 2010 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.
jcaron Posté 15 Novembre 2010 Posté 15 Novembre 2010 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.
Yavuz Posté 15 Novembre 2010 Auteur Posté 15 Novembre 2010 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.
jcaron Posté 16 Novembre 2010 Posté 16 Novembre 2010 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.
Yavuz Posté 16 Novembre 2010 Auteur Posté 16 Novembre 2010 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.
Yavuz Posté 16 Novembre 2010 Auteur Posté 16 Novembre 2010 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
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant