Forum avec pdo
Résolu/Fermé
ClR555
-
Modifié par ClR555 le 10/04/2011 à 01:05
theshadoo Messages postés 786 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 3 mai 2016 - 12 avril 2011 à 00:36
theshadoo Messages postés 786 Date d'inscription samedi 26 mai 2007 Statut Membre Dernière intervention 3 mai 2016 - 12 avril 2011 à 00:36
A voir également:
- Forum avec pdo
- Code iptv 2024 forum ✓ - Forum TNT / Satellite / Réception
- Forum convertisseur youtube mp3 ✓ - Forum Logiciels
- Comment ralentir un compteur linky forum - Accueil - Objets connectés
- Youppie forum - Forum Réseaux sociaux
- Voisin solitaire avis forum - Forum Consommation & Internet
2 réponses
theshadoo
Messages postés
786
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
3 mai 2016
123
10 avril 2011 à 12:27
10 avril 2011 à 12:27
Que tu utilises la class PDO ou bien du procédural avec des requêtes mysql, l'organisation n'est en rien différente ....
Cela n'a rien avoir avec comment s'organiser avec pdo, si après tu as des erreurs sql c'est autres choses.
une piste : Créer des fonctions de tes requêtes en PDO et place tes fichiers dans un dossier précis, comme ca lorsque tu as besoin tu appelles tes fonctions PDO si besoin.
L'organisation d'un site dynamique est l'une des choses les plus importantes il est vrai.
Cela n'a rien avoir avec comment s'organiser avec pdo, si après tu as des erreurs sql c'est autres choses.
une piste : Créer des fonctions de tes requêtes en PDO et place tes fichiers dans un dossier précis, comme ca lorsque tu as besoin tu appelles tes fonctions PDO si besoin.
L'organisation d'un site dynamique est l'une des choses les plus importantes il est vrai.
Bonjour,
N'ayant pas eut de réponse, j'ai fait ce que j'ai pu en reprenant pas à pas, mais sans réussir à mettre comme il faut mes requetes dans des fonctions.
En revanche tout est presque enfin fonctionnel... :) :) :)
il ne reste qu'une chose :
Updater mes messages...
la commande sql marche seule dans php myAdmin, mais dans mon code, j'ai une erreur du type :
"Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in C:\wamp\www\Maroc\forum_reno.php:70 Stack trace: #0 C:\wamp\www\Maroc\forum_reno.php(70): PDOStatement->execute() #1 {main} thrown in C:\wamp\www\forum_reno.php on line 70"
Il me dit que le nombre de variables données n'est pas le bon... et pourtant...(voyez par vous même...)
Voici mon morceau de code qui coince (souligné et en gras).
Quelqu'un aurait-il une idée?
N'ayant pas eut de réponse, j'ai fait ce que j'ai pu en reprenant pas à pas, mais sans réussir à mettre comme il faut mes requetes dans des fonctions.
En revanche tout est presque enfin fonctionnel... :) :) :)
il ne reste qu'une chose :
Updater mes messages...
la commande sql marche seule dans php myAdmin, mais dans mon code, j'ai une erreur du type :
"Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in C:\wamp\www\Maroc\forum_reno.php:70 Stack trace: #0 C:\wamp\www\Maroc\forum_reno.php(70): PDOStatement->execute() #1 {main} thrown in C:\wamp\www\forum_reno.php on line 70"
Il me dit que le nombre de variables données n'est pas le bon... et pourtant...(voyez par vous même...)
Voici mon morceau de code qui coince (souligné et en gras).
Quelqu'un aurait-il une idée?
$msg_id=$_POST['msg_id']; //SI ENVOI ID PAR POST == MODIF if(!empty($_POST['msg_id'])) { //SI ID de MSG, de MSG_EXP, existe bien $rq_msg_id=$connexion->prepare('SELECT COUNT(msg_txt) AS nbr_id_itou FROM messages WHERE msg_exp = :msg_exp AND msg_id = :msg_id'); $rq_msg_id->bindParam(':msg_exp', $msg_exp, PDO::PARAM_INT); $rq_msg_id->bindParam(':msg_id', $msg_texte, PDO::PARAM_INT); $rq_msg_id->execute(); if ($rs_msg_id = $rq_msg_id->fetch()) { if($rs_msg_id['nbr_id_itou']==1) { //req pour modif les msg $data = array( 'msg_id'=> $msg_id, 'msg_txt' => $msg_texte ); $sql = 'UPDATE messages SET msg_txt = :msg_txt, msg_modif_der = NOW() WHERE msg_id = :msg_id'; } //SINON ID INCONNU else { $result_crea_msg='<p class="msg_erreur">Le message identifié n\'est pas enregistré dans la base de données. <br/>Si vous validez un message, il sera considéré comme votre nouveau message. <br/>Pour plus d\'informations, consultez la page d\'aide à l\'utilisation du site. </p>'; $msg_id=''; } } } //SINON PAS D'ID == NOUVEAU MESSAGE else { $data = array( 'msg_exp' => $msg_exp, 'msg_txt' => $msg_texte ); $sql = 'INSERT INTO messages(msg_id, msg_exp, msg_txt, msg_date, msg_modif_der) VALUES(NULL, :msg_exp, :msg_txt, NOW(), NULL)'; } //REQUETE SELON RESULTATS try { $req = $connexion->prepare($sql); // requete en fonction du choix ajout ou modif $req->execute($data); // donnée en conséquence $result_crea_msg= '<p class="msg_ok">Enregistrement ajouté !</p>'; $msg_texte=''; } catch(Exception $e) { die('Erreur : '.$e->getMessage()); }
theshadoo
Messages postés
786
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
3 mai 2016
123
11 avril 2011 à 19:19
11 avril 2011 à 19:19
En fait il faut de base structurer son site :
voilà comment je procède mais j'ai plusieurs autre façon de faire c'est un exemple
- admin
- core (ce sont mes librairies de fonctions quand je code en procédurale mais tu peux le nommer comme tu veux, lib, library etc...)
- www /
- images
- javascript
- css
- configuration.php (fichier comportant toutes la configue du site pour se connecter à la bdd)
- index.php (c'est dans ce fichier que je vais mettre tout le code qui va me permettre d'inclure mon fichier de configuration, mes fichiers de fonction
ex:
require_once('/core/ajout.sql.php'); ...
et aussi il va me permettre d'appeler les pages de mon theme qui se trouvent dans www/ en fonctione de l'url
voilà comment je procède mais j'ai plusieurs autre façon de faire c'est un exemple
- admin
- core (ce sont mes librairies de fonctions quand je code en procédurale mais tu peux le nommer comme tu veux, lib, library etc...)
- www /
- images
- javascript
- css
- configuration.php (fichier comportant toutes la configue du site pour se connecter à la bdd)
- index.php (c'est dans ce fichier que je vais mettre tout le code qui va me permettre d'inclure mon fichier de configuration, mes fichiers de fonction
ex:
require_once('/core/ajout.sql.php'); ...
et aussi il va me permettre d'appeler les pages de mon theme qui se trouvent dans www/ en fonctione de l'url
theshadoo
Messages postés
786
Date d'inscription
samedi 26 mai 2007
Statut
Membre
Dernière intervention
3 mai 2016
123
12 avril 2011 à 00:36
12 avril 2011 à 00:36
no problems j'aurais aimé que l'on me dise cela quand j'ai débuté en php à l'époque alors autant faire gagner du temps à d'autres
Modifié par ClR555 le 11/04/2011 à 02:52
Je crois que j'éprouve des soucis aussi lorsque j'utilise mes variables, entre le exec() et le execute et puis j'ai du mal à me servir des requetes préparées, dont je ne me sers qu'une fois au final... la pagaille quoi. je vais reprendre donc.
Une petite question supplémentaire quand même au sujet de ton conseil:
" une piste : Créer des fonctions de tes requêtes en PDO et place tes fichiers dans un dossier précis, comme ca lorsque tu as besoin tu appelles tes fonctions PDO si besoin. "
C'est à ça que tu penses?
fonctions > pdo > select.php
Juste pour savoir si je pars dans la bonne direction... ; )
Sinon, on m'a dit que comme pdo était une classe, il ne fallait pas l'utiliser dans des fonctions, pour ne pas faire des fonctions de fonctions (c'est ce que j'avais initialement fait pour la pagination). Voilà, je voulais savoir ce que tu en pensais...
Merci de ton temps.
Tous les conseils sont évidemment les bienvenus, je rame pas mal...
Merci encore, et bonne soirée à tous
11 avril 2011 à 19:10
Il y a quelques autres façons de faire aussi mais si tu veux le faire d'une façon simple, si tu n'es pas sur un trop gros projet en php tu peux faire comme cela :
un dossier où tu auras toutes tes fonctions :
-bibliotheque
- ajout.sql.php
- suppr.sql.php
- edit.sql.php
- select.sql.php
- pagination.php
- ....
tu vois le genre. le but est de pouvoir y accéder de n'importe où l'on en aura besoin tant dans le backoffice que le frontoffice
j'espère t'avoir aidé