A quoi ca sert -> en php

Résolu
Utilisateur anonyme -  
 Utilisateur anonyme -
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
 
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
 
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 4232 Date d'inscription   Statut Modérateur Dernière intervention   185
 
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
Utilisateur anonyme
 
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 4232 Date d'inscription   Statut Modérateur Dernière intervention   185
 
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
Utilisateur anonyme
 
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 4232 Date d'inscription   Statut Modérateur Dernière intervention   185
 
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
 
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 4232 Date d'inscription   Statut Modérateur Dernière intervention   185
 
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
 
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 4232 Date d'inscription   Statut Modérateur Dernière intervention   185
 
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