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
Bonjour,
a quoi ça sert -> en php ?
par exemple:

var $a;
$b -> a = instruction;

et c'est quoi son altérnatif ?

est ce que je peux la remplacer par ceci:
$a= instruction;
$b=$a;


A voir également:

6 réponses

Utilisateur anonyme
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"
2
Utilisateur anonyme
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
0
Bionik Messages postés 4234 Date d'inscription jeudi 19 août 2010 Statut Modérateur Dernière intervention 3 août 2016 183
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.
0
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bionik Messages postés 4234 Date d'inscription jeudi 19 août 2010 Statut Modérateur Dernière intervention 3 août 2016 183
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:

 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 ;
          }

0
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 ^^
0
Bionik Messages postés 4234 Date d'inscription jeudi 19 août 2010 Statut Modérateur Dernière intervention 3 août 2016 183
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"

function query($query) {  
    $a = mysql_query($query, $this->connection);  
    return utf8_encode($a);  
} 
0
Utilisateur anonyme
18 mars 2013 à 17:35
j'ai essayé ça, mais aucun effet, en plus il me fait un problème d'upload, j'ai essayé ausii d'intégrer utf8_encode() et utf8_decode() quand j'interoge la bdd, mais ausii sans succès
0
Bionik Messages postés 4234 Date d'inscription jeudi 19 août 2010 Statut Modérateur Dernière intervention 3 août 2016 183
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');
0
Utilisateur anonyme
18 mars 2013 à 18:07
la classe DB ne permet aucun accès a la bdd, je ne sais pas ou est l'erreur, il me reste que modifier tout les classe qui ont un accès a la base avec une simple requête, merci bionik, c'est vrmt sympaa ;)
0
Bionik Messages postés 4234 Date d'inscription jeudi 19 août 2010 Statut Modérateur Dernière intervention 3 août 2016 183
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 :)
0