A quoi ca sert -> en php
Résolu/Fermé
Utilisateur anonyme
-
Modifié par kimhd le 18/03/2013 à 09:35
Utilisateur anonyme - 19 mars 2013 à 08:17
Utilisateur anonyme - 19 mars 2013 à 08:17
6 réponses
Utilisateur anonyme
18 mars 2013 à 14:48
18 mars 2013 à 14:48
Cela est utilisée en programmation orientée objet, pour utiliser une propriété ou une méthode d'un objet.
Ici "a" doit être une variable de l'objet $b, en faisant :
$b -> a = instruction;
Tu affecte à la variable "a" de l'objet $b la valeur de "instruction"
Ici "a" doit être une variable de l'objet $b, en faisant :
$b -> a = instruction;
Tu affecte à la variable "a" de l'objet $b la valeur de "instruction"
Utilisateur anonyme
18 mars 2013 à 15:50
18 mars 2013 à 15:50
merci kyser mais regarde la fonction suivante:
var $a;
$b->a = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
mysql_select_db(DB_NAME, $b->a) or die(mysql_error());
et maintenant je veux ajouter mysql_query("SET NAMES 'utf8'"); en utiliisant l'objet $b et sa variable a
comment je dois faire ? sachant que j'appelle $a->b dans des autres fonctions
var $a;
$b->a = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
mysql_select_db(DB_NAME, $b->a) or die(mysql_error());
et maintenant je veux ajouter mysql_query("SET NAMES 'utf8'"); en utiliisant l'objet $b et sa variable a
comment je dois faire ? sachant que j'appelle $a->b dans des autres fonctions
Bionik
Messages postés
4232
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
184
18 mars 2013 à 16:03
18 mars 2013 à 16:03
Salut,
Tout d'abord, pourquoi ne pas stocker le résultat de ta requête dans une variable simple en faisant directement:
$query = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
mysql_select_db(DB_NAME, $query) or die(mysql_error());
Secondo, t'es en train de faire ce qu'on appelle un ANTI-PATTERN, c'est à dire une mauvaise pratique, utilises donc l'API PDO pour te connecter à MySQL et faire tes requêtes SQL.
Tout d'abord, pourquoi ne pas stocker le résultat de ta requête dans une variable simple en faisant directement:
$query = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die(mysql_error());
mysql_select_db(DB_NAME, $query) or die(mysql_error());
Secondo, t'es en train de faire ce qu'on appelle un ANTI-PATTERN, c'est à dire une mauvaise pratique, utilises donc l'API PDO pour te connecter à MySQL et faire tes requêtes SQL.
Utilisateur anonyme
Modifié par kimhd le 18/03/2013 à 16:21
Modifié par kimhd le 18/03/2013 à 16:21
bon j'intègre un script open source orienté objet avec ses classes, et j'ai réussi de le modifier pour répondre a mes besoins, et si je modifie la structure de cette fonction, je serai obligé de modifier toutes les fonctions qui faire appel a $b->a
alors je veux juste intégrer mysql_query("SET NAMES 'utf8'"); dans cette fonction de connexion a bdd pour resoudre le probléme d'accent dans la base de données
alors je veux juste intégrer mysql_query("SET NAMES 'utf8'"); dans cette fonction de connexion a bdd pour resoudre le probléme d'accent dans la base de données
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bionik
Messages postés
4232
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
184
18 mars 2013 à 16:30
18 mars 2013 à 16:30
Tu peux tout me même créer ton propre fichier et l'inclure si besoin est pour faire tes requêtes, ça donnerait quelque chose comme ceci:
Tu peux aller plus loin en ajoutant une méthode qui te permettrai de faire les requêtes:
class DB { private static $_dsn = "mysql:host=ton_hote;dbname=nom_de_la_base"; private static $_username = "ton_username"; private static $_password = "ton_password"; public $db; public function __construct($dsn = null, $username = null, $password = null) { if ($dsn != null || $username != null) { self::$_dsn = $dsn; self::$_username = $username; self::$_password = $password; } try { $this->db = new PDO(self::$_dsn, self::$_username, self::$_password); $this->db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES UTF8'); } catch (PDOExeption $e) { die('Erreurs lors de la connexion a la base de donnees' . $e->getMessage()); } }
Tu peux aller plus loin en ajoutant une méthode qui te permettrai de faire les requêtes:
public function query($stmt, $data = null) { $req = $this->db->prepare($stmt) ; $req->execute($data) ; $req->closeCursor() ; return $req ; }
Utilisateur anonyme
Modifié par kimhd le 18/03/2013 à 17:10
Modifié par kimhd le 18/03/2013 à 17:10
regarde la structure:
class MABDD
{
var $connection;
function MABDD() {
$this->connection = mysql_connect(DB_HOST DB_USER,
DB_PASSWORD) or die(mysql_error());
mysql_select_db(DB_NAME, $this->connection) or die(mysql_error());
}
function query($query) {
$a = mysql_query($query, $this->connection);
return $a;
}
function Close() {
mysql_close($this->connection);
}
}
$database = new MABDD;
alor je veux intégrer mysql_query("SET NAMES 'utf8'"); dans cette classe
mercii mes amis ^^
class MABDD
{
var $connection;
function MABDD() {
$this->connection = mysql_connect(DB_HOST DB_USER,
DB_PASSWORD) or die(mysql_error());
mysql_select_db(DB_NAME, $this->connection) or die(mysql_error());
}
function query($query) {
$a = mysql_query($query, $this->connection);
return $a;
}
function Close() {
mysql_close($this->connection);
}
}
$database = new MABDD;
alor je veux intégrer mysql_query("SET NAMES 'utf8'"); dans cette classe
mercii mes amis ^^
Bionik
Messages postés
4232
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
184
Modifié par Bionik le 18/03/2013 à 17:24
Modifié par Bionik le 18/03/2013 à 17:24
Tu peux dans ta fonction query, appliquer utf8_encode aux résultats de la requêtes,
c'est comme appliquer un "SET NAMES UTF8"
c'est comme appliquer un "SET NAMES UTF8"
function query($query) { $a = mysql_query($query, $this->connection); return utf8_encode($a); }
Bionik
Messages postés
4232
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
184
18 mars 2013 à 17:46
18 mars 2013 à 17:46
Remarque, dans la classe que je t'ai donné on récupére en UTF8, regarde la ligne ou c'est écrit:
$this->db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES UTF8');
$this->db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, 'SET NAMES UTF8');
Bionik
Messages postés
4232
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
184
18 mars 2013 à 18:44
18 mars 2013 à 18:44
La classe BD te permet de te connecter à la base de données, tu remplaces juste les identifiants par ceux que t'utilises pour te connecter à ta base. Tu instancies ensuite un objet de cette classe pour faire tes requêtes mais à priori ça marche puisque c'est ce que j'utilise pour faire mes requêtes :)