Problème "UPDATE" SQL - SQL/NoSQL - Programmation
Marsh Posté le 05-06-2017 à 15:33:10
Bonjour,
Plusieurs choses apparaissent, dans le code fourni rien ne vérifie si le formulaire est correctement rempli, ainsi les variables POST peuvent être vides. Bon je suppose que cette partie du code n'a pas été transmise.
Secundo je ne vois pas trop ce que viennent faire les :
Code :
|
Probablement des restes de copier/coller.
Tertio, et je pense que c'est là que réside le problème, les variables précisant les valeurs de l'instruction WHERE ne sont pas ajoutées au tableau lors de l’exécution des requêtes.
Les erreurs sont-elles affichées? Parce que ça aiderait un peu plus et je trouve ça bizarre que par exemple :
Code :
|
Ne renvoie aucune erreur puisque là la requête n'est même pas correctement formulée pour le paramétrage de ID_client. Au passage ça n'a m'étonnerait que tu veuilles updater la valeur de ID_client.
Marsh Posté le 08-06-2017 à 13:35:40
Rien ne vérifie si le formulaire est correctement rempli simplement car l'utilisateur n'a pas forcément besoin de modifier toutes ses infos en même temps. Un changement de numéro n'arrive pas forcément en même temps qu'un changement d'adresse.
Pour les "lastinsertid" c'était bien un reste de copier/coller.
L'erreur dans la quête a été corrigée.
Sinon, pour l'affichage des erreurs, je ne sais pas faire dans ce cas là.
Dois-je simplement faire un echo avec ma variable de session en récupérant un champ en particulier pour voir s'il y a une erreur ?
Par ex :
Code :
|
C'est du PHP que j'utilise pour afficher les infos de mes clients, quand la requête lié n'était pas bonne, j'avais une erreur.
Je ne sais pas si ça fonctionne pareil pour le UPDATE.
Merci pour la réponse en tout cas
Edit : même après correction de la requête, ça ne fonctionne pas
Marsh Posté le 08-06-2017 à 17:49:30
C'est à toi d'adapter la vérification en fonction de ce que l'utilisateur veut faire.
Dans le code actuel, les formats de données ne sont même pas vérifiés. Le code que tu donnes ne fait pas apparaître un remplissage des champs par les anciennes données, etc. Enfin c'est un autre point.
Peut-on voir le nouveau code corrigé?
Les affichages d'erreurs PHP sont à configurer dans le php.ini :
- error_reporting
- display_errors
Marsh Posté le 08-06-2017 à 19:32:43
En gros, je veux mettre à jour n'importe quelle information concernant un client.
Pour le format des données, c'est pas le plus important, j'ai commencé ce projet avec 0 connaissances en PHP, CSS, HTML et SQL avec un temps assez limité donc c'est pas ma priorité. J'ai un cahier des charges à respecter avec des fonctionnalités à implémenter, je le fais mais le de façon basique pour que ça fonctionne.
J'ai aussi ajouté dans le code de quoi donner les erreurs liées aux dernières requêtes.
Code :
|
Du coup, j'ai un gros paquet d’erreur :
Code :
|
Voici aussi le code du formulaire, au cas ou :
Code :
|
Voilà, merci de m'aider en tout cas
Marsh Posté le 08-06-2017 à 20:57:04
MaybeEijOrNot a écrit : Tertio, et je pense que c'est là que réside le problème, les variables précisant les valeurs de l'instruction WHERE ne sont pas ajoutées au tableau lors de l’exécution des requêtes. |
Tu n'as rien corrigé à ce niveau et c'est d'ailleurs ce qui ressort dans les erreurs affichées :
Code :
|
Dans la préparation de tes requêtes tu fais apparaître un certain nombre de variables via les points d'interrogation et quand tu exécutes les requêtes tu passes en paramètres un tableau de variables qui en contient moins. Ce qui fait que comme je te l'ai précisé, aucune valeur ne ressort pour l'instruction WHERE. Sauf pour ta dernière requête qui est bien construite.
Et je ne sais pas à quoi servent tes :
Code :
|
Aucune variable $link existe, et tu utilises PDO donc tu ne "catch" rien avec ça.
Marsh Posté le 08-06-2017 à 22:16:55
My bad, j'avais pas fait attention au nombre de variable, c'est corrigé, j'ai pris exemple sur la dernière requêtes et ça a l'air bon cette fois-ci :
Code :
|
Problème, toujours la même erreur
Cette histoire d'update est la dernière barrière avant d'avoir mon projet complètement fonctionnel, ça m'embête...
Les :
Code :
|
Servent à afficher les erreurs, sans les variables link, rien ne s'affiche et sans la ligne complète, même chose, pas d'erreurs affichées.
Cette ligne en soit n'est pas bonne mais elle fait quand même ce que je lui demande, c'est le principal
En fait, grâce aux erreurs générées par cette ligne, toutes les autres sont visibles.
Marsh Posté le 08-06-2017 à 22:44:26
Adamentys a écrit : My bad, j'avais pas fait attention au nombre de variable, c'est corrigé, j'ai pris exemple sur la dernière requêtes et ça a l'air bon cette fois-ci :
|
Euh non...
Code :
|
Marsh Posté le 08-06-2017 à 23:01:57
Bah c'est la même chose pour la dernière requête dans ce cas là, non ? Parce que l'erreur pour le nombre de variable, j'ai la même pour cette requête que tu dis pourtant bonne.
Je ne comprends pas...
Code :
|
Je ne peux pas ajouter le ID_client dans les champs à modifier étant donné que c'est grâce à lui que je sais où je vais insérer mes nouvelles infos.
Je viens aussi de voir qu'il y avait une parenthèse de trop dans la première requête, je sais pas si ça a vraiment un quelconque effet, est-ce que c'est ça que tu essayes de me faire voir depuis le début ?
Marsh Posté le 09-06-2017 à 18:00:28
Dans la préparation de ta requête tu mets 4 points d'interrogation pour dire que la requête devra recevoir 4 paramètres.
Quand tu l’exécutes tu ne passes que 3 variables dans ton tableau de paramètres.
Il faut que lors de l’exécution le tableau de paramètres ait la même taille que le nombre de points d'interrogations.
Franchement je ne vois pas comment être plus clair.
Marsh Posté le 09-06-2017 à 21:19:55
Oui, en fait, j'avais compris, j'ai juste pas réussi à m'exprimer.
Mais y'a un truc que je comprends pas, pourquoi est-ce que je dois ajouter une variable qui est celle de mon id alors que je ne veux pas le modifier ? C'est juste pour indiquer où doivent aller les nouvelles infos.
Donc en gros, pour que ça fonctionne, faut que j'ajoute ça à la suite de la liste de variable :
Code :
|
Puis ça :
Code :
|
A la suite des variables de la première requête
Et enfin ça :
Code :
|
A la suite des variables des deux autres requêtes ?
Marsh Posté le 09-06-2017 à 21:34:19
Je ne sais pas comment est structurée ta bdd. Et je ne sais pas comment ta page de formulaire est gérée.
Dans la plupart des cas, les utilisateurs doivent être connectés pour pouvoir mettre à jour leurs informations. Quand un utilisateur se connecte on crée une variable de session qui stocke l'id de l'utilisateur. Ainsi quand il envoi ses nouvelles informations on cherche la bonne ligne à modifier dans la bdd grâce à l'id de l'utilisateur stocké dans la variable session.
Pour la mise à jour des informations, le plus simple (mais pas la meilleure solution) c'est de proposer un formulaire vide et de faire une requête d'update pour chaque champ rempli.
Après pour améliorer un peu, tu peux faire une requête qui interroge la bdd pour récupérer les données de l'utilisateur. Si une variable $_POST est alors vide, on remplace sa valeur par celle récupérée dans la bdd. Cela permet en suite de ne faire qu'une requête d'update avec toutes les infos dedans.
Tu peux aussi faire une gestion par blocs, etc. Il existe plusieurs solutions en fonction de la structure de ta bdd, de la structure des données, des attentes en terme de requêtes à effectuer, etc.
Marsh Posté le 05-06-2017 à 15:09:26
Bonjour à tous, pour mon projet de fin d'année qui consiste à réaliser un site internet et une base de donnée pour la création d'un système de télépéage, je viens demander un peu d'aide sur un problème que je rencontre avec le SQL.
Je veux en fait, faire une MàJ des infos personnelles d'un client. Le client connecté à son compte, doit pouvoir modifier ses infos à tout moment.
Voici donc le formulaire qui permet de rentrer les infos dans la base :
Et ici, les requêtes SQL en PHP :
Le problème c'est que ça ne fonctionne pas, j'ai le même formulaire pour l'inscription mais avec des "INSERT" à la place des "UPDATE" dans le fichier en PHP et tout fonctionne très bien, j'ai aussi un fichier similaire avec un "SELECT" pour afficher le profil de l'utilisateur et pareille, pas de problème, juste un problème avec "UPDATE".
D'après mon prof, les requêtes sont bonnes donc si quelqu'un a un indice sur ce qui ne va pas, je suis preneur.
Merci d'avance
Message édité par Adamentys le 05-06-2017 à 15:09:54
---------------
Topal Achat/Vente | 1° Mod : [Workblog] Pendemic Mod | 2° Mod : [Workblog] Purple Evolution