A quoi ca sert -> en php [Résolu/Fermé]

Signaler
Messages postés
88
Date d'inscription
mercredi 13 mars 2013
Statut
Membre
Dernière intervention
22 avril 2014
-
kimhd
Messages postés
88
Date d'inscription
mercredi 13 mars 2013
Statut
Membre
Dernière intervention
22 avril 2014
-
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;


6 réponses

Messages postés
991
Date d'inscription
mercredi 20 février 2013
Statut
Membre
Dernière intervention
24 novembre 2018
91
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 77271 internautes nous ont dit merci ce mois-ci

Messages postés
88
Date d'inscription
mercredi 13 mars 2013
Statut
Membre
Dernière intervention
22 avril 2014
16
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
Messages postés
4521
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
155
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.
Messages postés
88
Date d'inscription
mercredi 13 mars 2013
Statut
Membre
Dernière intervention
22 avril 2014
16
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
Messages postés
4521
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
155
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 ;
          }

Messages postés
88
Date d'inscription
mercredi 13 mars 2013
Statut
Membre
Dernière intervention
22 avril 2014
16
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 ^^
kimhd
Messages postés
88
Date d'inscription
mercredi 13 mars 2013
Statut
Membre
Dernière intervention
22 avril 2014
16
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
Bionik
Messages postés
4521
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
155
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');
kimhd
Messages postés
88
Date d'inscription
mercredi 13 mars 2013
Statut
Membre
Dernière intervention
22 avril 2014
16
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 ;)
Bionik
Messages postés
4521
Date d'inscription
jeudi 19 août 2010
Statut
Modérateur
Dernière intervention
3 août 2016
155
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 :)
kimhd
Messages postés
88
Date d'inscription
mercredi 13 mars 2013
Statut
Membre
Dernière intervention
22 avril 2014
16
c'est bon j'ai trouvez une astuce pour résoudre le problème d'encodage, j'ai essayé d'intèroger ma base avec html_entity_decode(); et ca marché, o_o,

et pour votre class BD, j'ai pris l'habitude de ne pas jetter des astuces de programmation comme cella lol, merci bionik.