Rechercher : dans
Par :

POO en PHP ----> MysQLi, problème, AIDE

Dernière réponse le 28 déc 2008 à 08:42:20 guillaume_74, le 20 nov 2008 à 20:35:17 
 Signaler ce message aux modérateurs

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:

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 :)
Configuration: Windows XP
Firefox 3.0.4

Meilleures réponses pour « POO en PHP &gt; MysQLi, problème, AIDE » dans :
[PHP] Upload de fichiers VoirLe langage PHP permet de gérer des fichiers envoyés (uploadés) grâce à un formulaire HTML. Formulaire d'envoi de fichiers Configuration de PHP pour permettre l'upload Récupération du fichier avec PHP Formulaire d'envoi de fichiers La...
[PHP] Notice: Undefined index: VoirSi vous utilisez les tableaux $_POST ou $_GET pour récupérer les variables de vos formulaires ou autres, il se peut que vous tombiez sur cette erreur: Notice: Undefined index 'champs du tableau' in 'chemin du fichier php en cours d'execution' on line...
[PHP] Parse error, unexpected T_STRING, expecting ',' or ';' VoirCette erreur, fréquente, se produit notamment lorsqu'un guillemet est présent dans une chaîne délimitée par ce même type de guillemets, par exemple :
Télécharger PHP Edit VoirPHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de fonctionnalités permettant de développer plus efficacement : Coloration syntaxique Auto-complétion des fonctions Débuggeur...
Télécharger PHP FTP Synchronizer VoirLa mise à jour de site web est aussi complexe que sa conception. Alors il faut utiliser le bon outil avec les bon paramètres et une bonne connaissance de programmation pour mettre à jour un site. PHP FTP Synchronizer est une application vous...
PHP - Bases de données VoirPhp permet un interfaçage très simple avec un grand nombre de bases de données. Lorsqu'une base de données n'est pas directement supportée par Php, il est possible d'utiliser un driver ODBC, pilote standard pour communiquer avec les bases de...
PHP - Récupération de données VoirPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des...
PHP - Les fichiers VoirLa gestion des fichiers avec PHP Avec PHP, la création ou la lecture de fichiers est, une fois de plus, assez simple. Il existe une multitude de fonctions dédiées à l'utilisation des fichiers. La communication entre le script PHP et le fichier...

1

foo-bar kaniar, le 20 nov 2008 à 21:00:08

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 :)

Répondre à foo-bar kaniar

2

guillaume_74, le 20 nov 2008 à 21:19:29

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:

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...

Répondre à guillaume_74

3

guillaume_74, le 20 nov 2008 à 21:55:39

Personne n'arrive a comprendre? :S

Répondre à guillaume_74

4

 Deogracia, le 28 déc 2008 à 08:42:20

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,

Répondre à Deogracia