neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 2011
-
4 mai 2007 à 07:10
saylilo
Messages postés3Date d'inscriptiondimanche 25 janvier 2009StatutMembreDernière intervention30 juillet 2012
-
30 juil. 2012 à 06:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
function connecter()
{
/* se connecter */
$this->connexion = mysql_connect($this->serveur, $this->login, $this->pass) or die ("Connexion impossible");
mysql_select_db($this->base, $this->connexion) or die ("Base introuvable");
}
?>
saylilo
Messages postés3Date d'inscriptiondimanche 25 janvier 2009StatutMembreDernière intervention30 juillet 2012 30 juil. 2012 à 05:56
bonjour a vous , je suis un debutant en php5 et je voudrais faire ma classe de connexion Mysql pour interagir avec d'autre classe . merci de m'indiquer comment je pourrais proceder pour la premiere fois
Manserk
Messages postés1Date d'inscriptionmardi 5 octobre 2010StatutMembreDernière intervention20 juillet 2011 20 juil. 2011 à 10:37
ce sujet est un peut vieux mais bon pas grâve !
comme le dit web2004 ta classe n'est pas un sigleton car elle retourne plusieurs instances de la classe
pour arranger ceci ( ça peut servir on sais jamais ! ) juste remplacer
if ((!isset($instance))) // Si aucune instance de Connexion
$instance = new Connexion($host, $user, $pass, $base); //Alors on en créer une
return $instance; //Dans tous les cas on retourne une instance (soit la nouvelle soit l'existante)
par :
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c($host, $user, $pass, $base);
}
return self::$instance;
et ça marche comme un charme !
web2004
Messages postés12Date d'inscriptionvendredi 6 février 2004StatutMembreDernière intervention27 janvier 2009 27 janv. 2009 à 11:17
c'est bien beau mais ton singleton ne fonctionne pas correctement !!! il insctancie plusieurs fois meme lorsque ton objet existe déja !!! je suppose que tu t'en es rendu compte sinon suffit de tester cette boucle pour s'en apercevoir :
$sql = Connexion::getConnexion('localhost','root','','em');
for($i=0; $i<10; $i++) {
$cnx = Connexion::getConnexion('localhost','root','','em');
echo '';
var_dump($cnx);
echo '
';
}
pour plus de lisiblité ajouter un message "instance n'existait pas" et "instance existait déja" dans ta méthode getConnextion tu verras mieux.
bonne continuation
aeterna
Messages postés6Date d'inscriptiondimanche 8 août 2004StatutMembreDernière intervention26 avril 2011 13 janv. 2009 à 00:23
Bonjour et meilleurs voeux. Je mets tout doucement à la POO et j'aurai aimer savoir à quoi sert concrètement une classe de connexion. Qu'est-ce qui la diffère d'une connexion procédurale et si une âme charitable pouvait m'éclairer via un exemple d'utilisation comme par exemple l'authentification via login et mot de passe qui serait issue d'une classe utilisateur avec l'utilisation des sessions. C'est jouable ? Merci de votre aide. Cordialement, aeterna.
codefalse
Messages postés1123Date d'inscriptionmardi 8 janvier 2002StatutModérateurDernière intervention21 avril 20091 11 mai 2007 à 10:52
@Masternico : En php4, d'après ce que j'en ai entendu parler, tu ne peux pas vraiment faire de classes abstraites, mais tu peux tenter quelque chose qui s'y rapproche, mais ce sera quand meme plus utile et agréable a l'usage (et surtout à la maintenance) de la faire en php5.
@Zefyre : Quelque chose qui aurait été interessant (vraiment un truc tout banal :p), c'est de mettre l'url de redirection (le fichier erreur.php) dans une variable privée, comme ca on a juste a changer une valeur si la page change. Après c'est pas une grosse modification ! :)
masternico
Messages postés487Date d'inscriptiondimanche 5 octobre 2003StatutMembreDernière intervention 1 septembre 2011 10 mai 2007 à 01:58
J'aime bien l'idée de récuperer les erreurs. Il va faloir que j'intègre ça à mon propre source (en fait, qui n'a pas dejà fait son propre petit script de connexion mysql??? ;)
Par contre, abstraction, connais pas... ça marche en php4?
FhX
Messages postés2350Date d'inscriptionmercredi 13 octobre 2004StatutMembreDernière intervention18 avril 20153 6 mai 2007 à 17:10
# public static function getConnexion($host=null, $user=null, $pass=null, $base=null)
# {
# if ((!isset($instance))) // Si aucune instance de Connexion
# $instance = new Connexion($host, $user, $pass, $base); //Alors on en créer une
# return $instance; //Dans tous les cas on retourne une instance (soit la nouvelle soit l'existante)
# }
Pour t'éviter de faire à chaque fois :
maclasse::getConnexion('host', 'user', 'passwd', 'basename');
Alors qu'un simple :
maclasse::getConnexion(); peut suffir :)
webdeb
Messages postés488Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention31 mars 20094 4 mai 2007 à 13:37
Ce n'est pas si mal. Le code est propre et soigné. Présence des attributs privés, des setters, getters et d'un singleton. Néanmoins il manque des méthodes pour récupérer les résultats sous différentes formes (array, row, assoc, object) et la gestion des erreurs devrait être plus poussée.
Malgré tout ça reste un code d'une bonne qualité. Je te mets 8/10 ;)
Je suis entrain d'écrire ma classe d'abstraction de BDD qui se base sur le principe de PDO. J'espère que je pourrais vous en faire part très prochainement ici :)
cs_exar
Messages postés286Date d'inscriptionvendredi 5 décembre 2003StatutMembreDernière intervention22 avril 20121 4 mai 2007 à 12:39
D'accord avec les deux premiers commentaires, mais c'est déjà vraiment pas mal.
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 4 mai 2007 à 09:42
un peu plus d'abstraction aurait sympa.
pourquoi garde tu en mémoire name, host, user et pass.
Tu ne dois pas faire de redirection dans ta classe.
fait simplement un throw new Exception( 'message ');
neigedhiver
Messages postés2480Date d'inscriptionjeudi 30 novembre 2006StatutMembreDernière intervention14 janvier 201119 4 mai 2007 à 07:10
Salut,
Je n'ai eu que le temps de survoler.
Je vais te faire la même remarque que celle qu'on m'a faite pour ma premièr base : c'est dommage qu'il n'y ait pas d'abstraction et que tu te cantonnes à MySQL...
30 juil. 2012 à 06:01
<?php
class Mysql
{
var $login;
var $pass;
var $serveur;
var $base;
var $connexion;
function __construct()
{
$this->login = "root";
$this->pass = "";
$this->serveur = "localhost";
$this->base = "festayresdatabase";
$this->connecter();
}
function connecter()
{
/* se connecter */
$this->connexion = mysql_connect($this->serveur, $this->login, $this->pass) or die ("Connexion impossible");
mysql_select_db($this->base, $this->connexion) or die ("Base introuvable");
}
?>
30 juil. 2012 à 05:56
20 juil. 2011 à 10:37
comme le dit web2004 ta classe n'est pas un sigleton car elle retourne plusieurs instances de la classe
pour arranger ceci ( ça peut servir on sais jamais ! ) juste remplacer
if ((!isset($instance))) // Si aucune instance de Connexion
$instance = new Connexion($host, $user, $pass, $base); //Alors on en créer une
return $instance; //Dans tous les cas on retourne une instance (soit la nouvelle soit l'existante)
par :
if (!isset(self::$instance)) {
$c = __CLASS__;
self::$instance = new $c($host, $user, $pass, $base);
}
return self::$instance;
et ça marche comme un charme !
27 janv. 2009 à 11:17
$sql = Connexion::getConnexion('localhost','root','','em');
for($i=0; $i<10; $i++) {
$cnx = Connexion::getConnexion('localhost','root','','em');
echo '';
var_dump($cnx);
echo '
';
}
pour plus de lisiblité ajouter un message "instance n'existait pas" et "instance existait déja" dans ta méthode getConnextion tu verras mieux.
bonne continuation
13 janv. 2009 à 00:23
11 mai 2007 à 10:52
@Zefyre : Quelque chose qui aurait été interessant (vraiment un truc tout banal :p), c'est de mettre l'url de redirection (le fichier erreur.php) dans une variable privée, comme ca on a juste a changer une valeur si la page change. Après c'est pas une grosse modification ! :)
10 mai 2007 à 01:58
Par contre, abstraction, connais pas... ça marche en php4?
6 mai 2007 à 17:10
# {
# if ((!isset($instance))) // Si aucune instance de Connexion
# $instance = new Connexion($host, $user, $pass, $base); //Alors on en créer une
# return $instance; //Dans tous les cas on retourne une instance (soit la nouvelle soit l'existante)
# }
Pour t'éviter de faire à chaque fois :
maclasse::getConnexion('host', 'user', 'passwd', 'basename');
Alors qu'un simple :
maclasse::getConnexion(); peut suffir :)
4 mai 2007 à 13:37
Malgré tout ça reste un code d'une bonne qualité. Je te mets 8/10 ;)
Je suis entrain d'écrire ma classe d'abstraction de BDD qui se base sur le principe de PDO. J'espère que je pourrais vous en faire part très prochainement ici :)
4 mai 2007 à 12:39
4 mai 2007 à 09:42
pourquoi garde tu en mémoire name, host, user et pass.
Tu ne dois pas faire de redirection dans ta classe.
fait simplement un throw new Exception( 'message ');
et quand tu appeles ta fonction (hors classe);
try{
$sql = Connexion::getConnexion($n,$f,$d,$s);
}catch(Exception $e){
$e->getMessage();
}
4 mai 2007 à 07:10
Je n'ai eu que le temps de survoler.
Je vais te faire la même remarque que celle qu'on m'a faite pour ma premièr base : c'est dommage qu'il n'y ait pas d'abstraction et que tu te cantonnes à MySQL...
Sinon, ça a l'air très propre et clair.
Je tâcherai de regarder plus en détail ce soir.