Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour
je me mets donc au PDO et souhaite mettre en place ma classe de connexion!
private static $instance;
const $PARAM_hote='localhost';
const $PARAM_port='3306';
const $PARAM_nom_bd='platf_gest';
const $PARAM_utilisateur='root';
const $PARAM_mot_passe='unpass';
public static function getInstance()
{
if(!isSet(self::$instance))
{
try
{
self::$instance = new PDO('mysql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}
catch(Exception $e)
{
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'N° : '.$e->getCode();
}
}
return self::$instance;
}
}
toutefois cela ne fonctionne pas, ou est donc mon erreur please?
Hors ligne
Bonjour,
Rien de plus normal. Tu ne dois pas créer un singleton de PDO mais un singleton de ta classe qui implémente PDO.^^
++
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Bonjour JC
pourrais tu etre un peu plus clair?
merci d'avance
Hors ligne
Oui bien sûr.
Tu crée ta classe myPDO par exemple que tu construis en singleton et tu lui associes une instance de PDO... rien de compliqué.
Le Singleton c'est vraiment la base de la POO en termes de modèle. J'ai peur pour la suite...
private function __construct() {
require('config/myconfig.php'); // accès aux paramètres DB
try {
$this->PDOInstance = new PDO($dsn_filomenu, $db_user, $db_pwd,array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
$this->PDOInstance->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
} catch (PDOException $e) {trigger_error($e->getmessage(),E_USER_WARNING);}
}
public static function getInstance() {
if (is_null(self::$_instance)) {self::$_instance = new myPDO();}
return self::$_instance;
}
}
Aaah ces jeunes faut tout leur dire
Dernière modification par Jc (09-12-2011 21:31:08)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
vaut mieux faire une classe qui hérite de pdo
a++
Hors ligne
Oui c'est une autre possibilité.
EDIT: Et puis l'un n'empêche pas l'autre
Dernière modification par Jc (10-12-2011 18:18:18)
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Bonjour,
Sur les recommandations fondées de JC j'avais pris le temps depuis mon dernier post de remettre à plat ma base de donnée chose que j'ai faites et qui est désormais en cours de finalisation.
J'ai également pris connaissance du doc PDO traduit par Maljuna.
Aussi je me retrouve désormais à devoir programmer ce que je souhaite.
Je vais donc fonctionner par étape.
La première d'entre elle réside donc dans la connexion à la base.
je pense avoir cerner les base d'une connexion classique:
1. try
2. {
3. $conn = new PDO($connStr, 'chef','motdepasse');
4. }
5. catch(PDOException $pe)
6. {
7. die('Connexion impossible à la base de données pour : ' .
8. $pe->getMessage();
9. }
10. $q = $conn->query();
11. if(!$q)
12. {
13. $ei=$conn->errorinfo();
14. die('Requête rejetée pour : '. $ei[2]);
15. }
toutefois en ce qui concerne une classe de connexion je ne suis pas sur d'avoir tout saisi!
En effet, j'ai comparé le script que j'avais mis en 1er post et la réponse de JC ca c'est ok, j'ai bien compris le pourquoi ça ne fonctionnait pas mais toutefois apres l'autre réponse de Pierrot concernant l'héritage de PDO je ne comprend pas.
Dois je conclure que c'est plus adapté?
cela serait il correct?
Class DbConnexion extends PDO {
private $host = "localhost";
private $db = "platf_gest_new";
private $db_user = "root";
private $db_password = "unpass";
private static $PDOinstance = null;
private static $_instance = null;
private function montreErreur($message)
{
echo "<h2>Erreur</h2>";
echo nl2br(htmlspecialchars($message));
exit();
}
private function __contruct() {
try {
$this->PDOinstance = new PDO('mysql:host='.$host.';dbname='.$db, $db_user, $db_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));
$this->PDOInstance->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_WARNING);
}
catch (PDOException $e)
{
montreErreur("Désolé, une erreur s'est produite.
Merci d'essayer plus tard.\n".trigger_error($e->getmessage(),E_USER_WARNING)
."<br />\n N° : ".$e->getCode()
);
}
}
public static function getInstance() {
if (is_null(self::$_instance)) {self::$_instance = new DbConnexion();}
return self::$_instance;
}
}
Vous en remerciant par avance
Hors ligne
Pages :: 1