|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 22 ![]() |
Bonjour,
Je débute dans la POO, et j'ai un problème au niveau d'une de mes fonctions qui consiste a insérer des valeurs récupérer dans un formulaire, puis a les insérer dans ma Base de données. Tous fonctionne assez bien, seulement lorsque mes valeurs sont inserer, celle ci ne contienne pas mes champs mais seulement des 0 Pourtant lorsque j'utilise un print_r mon code m'affiche les valeurs que j'ai rentré dans mon formulaire. (Ma page vendre fait appel au formulaire que j'ai sur scriptAnnonce.php) Voici quelque screen afin que vous y voyait un peu plus clair. Merci |
|
|
00
|
|
|
#2 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Hello
Déjà tu ne dois pas utiliser mysql_error si tu utilise PDO, il y a PDO::errorCode et PDO::errorInfo pour ça. Ensuite, sache qu'il est très dangereux d'enregistrer des données sans les vérifier car les données POST peuvent être changées à la volée par un utilisateur un peu malin (pas beaucoup c'est ça qui est terrible - il y a une légende urbaine parmi la communauté PHP qui est de croire $_POST plus sécurisé que $_GET: ce n'est pas le cas, les données proviennent dans les deux cas de l'utilisateur et donc ne sont pas sûres !) Bon le problème en lui même vient du fait que ton tableau de remplacement pour le prepare statement est faux. $_GET ou $_POST sont des tableaux associatifs dont la clé est le nom du paramètres alors que PDOStatement->execute attends un tableau dont les clées sont les noms des placeholders (je ne trouve pas d'équivalent français) mis dans la requête. Exemple: Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 22 ![]() |
D'accord, je te remercie déjà d'y jeter un coup d'oeil.
Mais simplement ce petit projet et à des fins personnel donc si les données ne sont pas sécurisées ce n'est pas très grave mais je prends note. |
|
|
00
|
|
|
#4 | ||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
J'en profite pour attirer ton attention sur un point: le prepare statement est créé et détruit à chaque appel de ta méthode. Donc si par exemple tu appelles cette méthode 100x dans le déroulement d'une requête, le statement est créé puis détruit 100x ce qui est complêtement inutile et bousille les performances.
Une bonne manière de procéder est de mettre les statements (les objets PDOStatement donc) en tant que membres statiques protégés de la classe qui les utilisent (une classe donnée n'a pas en général à changer ces statements). ça ressemble à ça: Code :
Tu trouvera des exemples et des tutos sur les singleton et sur PDO un peu partout.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||
|
10
|
|
|
#5 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 22 ![]() |
Je suis en train de modifier mon code en fonction de ce que tu m'a dit.
|
|
|
00
|
|
|
#6 | ||
|
Invité régulier
![]() Inscription : février 2011 Messages : 22 ![]() |
J'ai tout a fait comprit ce que tu voulais dire, cependant j'ai du mal au niveau du DATABASE dans ta fonction j'ai du mal a voir comment l'on pourrait faire appel a ma PDO
Est ce que je doit me connecter avec une fonction de ce type ? Code php :
|
||
|
|
00
|
|
|
#7 | ||||
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
En fait la classe Database est un Singleton pour PDO, c'est une classe qui ne peut être instanciée qu'une et une seule fois. L'avantage c'est que de n'importe où dans le code on peut accéder à l'objet PDO sans se soucier de la porté.
Mon Singleton perso c'est: Code :
Code :
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
||||
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 22 ![]() |
En effet ceci a l'air très pratique, mais légèrement complexe et vu que je ne débute que..Du coup si possible je préféré rester sur la connection que j'ai établie.
Bref j'ai modifier le code que tu ma donner mais ceci insert toujours des valeurs = a 0. Voici le screen de la modif |
|
|
00
|
|
|
#9 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Fait
a cet endroit.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
10
|
|
|
#10 | |
|
Invité régulier
![]() Inscription : février 2011 Messages : 22 ![]() |
J'ai rajouter ta ligne a ma fonctions, voici ce que sa m'affiche:
Citation:
Par contre l'insertion insère toujours des valeurs = a 0 |
|
|
|
00
|
|
|
#11 |
![]() ![]() Benjamin DelespierreDéveloppeur Web Inscription : février 2010 Messages : 2 984 ![]() |
Tu n'as pas compris mon post précédent: il faut que les index (les clés) du tableau passé ($inputs) soient préfixés par ':' (':titre' par exemple et non 'titre'). Sinon le statement insère des données fausses.
Tu as une typo, c'est: "Votre annonce à été postée"
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même). Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...". Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug. Les boutons et existent, servez-vous en
|
|
10
|
|
|
#12 |
|
Invité régulier
![]() Inscription : février 2011 Messages : 22 ![]() |
Daccord, je te remercie de ton aide, tout marche très bien !
Merci |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com