POO en PHP ----> MysQLi, problème, AIDE
                    
        
     
             
                    guillaume_74
    
        
    
                    Messages postés
            
                
     
             
            116
        
            
                                    Statut
            Membre
                    
                -
                                     
nadia -
        nadia -
        Bonjour,
je suis en train de coder une petite application PHP de gestion de stock... étant jusque la en procédural, je suis en train de le faire migrer en objet.
Cependant, j'ai des erreurs qui me dérange...
juste un petit exemple de ce que je fais:
voila, j'ai synthétisé mon code, ma question est la suivante: Est-ce possible au moins d'accéder a un attribut en tant que résultat de requete? ou bien non? (en procédural ca marche très bien! je me sers de $total pour faire une pagination)
ou bien ptètre que je fais une erreur de syntaxe, enfin voila, j'espère que quelqu'un pourrait m'aider
Merci a tout ceux qui prendront la peine de répondre et même lire :)
                
            
                
    
    
    
        je suis en train de coder une petite application PHP de gestion de stock... étant jusque la en procédural, je suis en train de le faire migrer en objet.
Cependant, j'ai des erreurs qui me dérange...
juste un petit exemple de ce que je fais:
class MaClasse
{
   private  $connexion;
   private $resultatRequete;
   function __construct() 
   {
      include("params.inc.php");
      $this->connexion = new mysqli(HOST, USER, PASSWORD, BASE);
    }
   function faireRequeteExecute()
   {
       $this->resultatRequete = $this->connexionbdd->query("select * from maTable");//execution de la requete
	$total = $this->resultatRequete->num_rows;
	return $total; // en faisant un echo, j'ai effectivement le résultat que je devais avoir==>27
   }
   function afficheResultat()
   {
        while($row = $this->resultatRequete->fetch_object())
	 {
            echo "champs 1: row[0]<br />";
            echo "champs 2: row[1]<br />";
          }
   }   // et la, j'ai l'erreur: Fatal error: Call to a member function fetch_object() on a non-object
voila, j'ai synthétisé mon code, ma question est la suivante: Est-ce possible au moins d'accéder a un attribut en tant que résultat de requete? ou bien non? (en procédural ca marche très bien! je me sers de $total pour faire une pagination)
ou bien ptètre que je fais une erreur de syntaxe, enfin voila, j'espère que quelqu'un pourrait m'aider
Merci a tout ceux qui prendront la peine de répondre et même lire :)
        A voir également:         
- POO en PHP ----> MysQLi, problème, AIDE
- Realme gt 7t - Guide
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Code gt - Guide
- Gt recovery sms - Télécharger - Récupération de données
4 réponses
                        
                    je ne comprends pas trop a ta question mais si tu veux accéder directement a des éléments après avoir instancié l'objet,
il ne faut pas les mettre en private, laisse les en public.
Ou sinon, pour respecter l'encapsulation, creer des getVariable et SetVariables :)
    
                il ne faut pas les mettre en private, laisse les en public.
Ou sinon, pour respecter l'encapsulation, creer des getVariable et SetVariables :)
                        
                    Oui je sais bien, mais c'est pas le soucis (j'ai taper mon exemple juste la dans l'intant)
Ce qui m'énerve... c'est que si je faisais:
Et ben ça marche... la je ne comprends pas le problème :s
et a l'appel de la fonction, j'utilise bien le même objet...
    
                Ce qui m'énerve... c'est que si je faisais:
function faireRequeteExecute()
   {
       $this->resultatRequete = $this->connexionbdd->query("select * from maTable");//execution de la requete
	$total = $this->resultatRequete->num_rows;
        while($row = $this->resultatRequete->fetch_object())
	 {
            echo "champs 1: $row->champ1<br />";
            echo "champs 2: $row->champ2<br />";
          }
	return $total; 
   }
Et ben ça marche... la je ne comprends pas le problème :s
et a l'appel de la fonction, j'utilise bien le même objet...
                        
                    Bonjour,
Je pense que, si j'ai bien compris ton questionnement, tu n'as pas dû bien comprendre a quoi sert "private" dans la POO.
Ma réponse se base sur l'hypothèse que la méthode "faireRequeteExecute()" est membre de ta classe.
Le fait qu'un attribut soit privé ou public n'a de sens que vis à vis de l'extérieur de l'objet. A l'intérieur, même un attribut privé est public (Dieu merci, sinon on aurait des difficultés à y avoir accès).
Donc, dans ta méthode membre, tu y a donc accès.
dans l'exemple ci dessous, n'importe quel compilateur/interpreteur générera une erreur.
$var = new MaClasse();
$var2 = $var->resultatRequete = $var->connexionbdd->query("select * from maTable");
Je souhaite avoir répondu à ta question.
Bonnes fêtes,
    
                Je pense que, si j'ai bien compris ton questionnement, tu n'as pas dû bien comprendre a quoi sert "private" dans la POO.
Ma réponse se base sur l'hypothèse que la méthode "faireRequeteExecute()" est membre de ta classe.
Le fait qu'un attribut soit privé ou public n'a de sens que vis à vis de l'extérieur de l'objet. A l'intérieur, même un attribut privé est public (Dieu merci, sinon on aurait des difficultés à y avoir accès).
Donc, dans ta méthode membre, tu y a donc accès.
dans l'exemple ci dessous, n'importe quel compilateur/interpreteur générera une erreur.
$var = new MaClasse();
$var2 = $var->resultatRequete = $var->connexionbdd->query("select * from maTable");
Je souhaite avoir répondu à ta question.
Bonnes fêtes,
