IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

changer le nom d'une class dans une boucle


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 18
    Points
    18
    Par défaut changer le nom d'une class dans une boucle
    Bonjour,

    Je vois que ce message n'est pas terminé et j'ai le meme probleme !
    je précise, que je viens tout juste de me mettre aux class php...

    j'ai une class par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class Amis {
       public $prenom;
       public $nom;
       etc....
     
        public __construct() {
           $this->prenom=$prenom;
           $this->nom=$nom;
        }
    }
    et j'ai mes Amis dans une BDD, table 'amis' avec id, prenom et nom...

    comment j'affiche mes resultats via une requete sql et avec la classe ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    // include connexion sql
    $sql_amis = "SELECT * FROM amis order by nom asc";
    $req_amis = $mysqli->query($sql_amis) or die('Erreur SQL amis !<br />'.$sql_amis.'<br />'.mysqli_error());
    if (!$req_amis->num_rows) {
    	echo '<p class="alerte">il n\'y a pas d\'amis</p>';
    } else {
    	$row_amis = $req_amis->fetch_assoc();
     
            while ($row_amis = $req_amis->fetch_assoc()) {
     
                 $amis= new Amis();
                 echo $amis->nom.' '.$amis->prenom.'<br />;
     
            }
    }
    du coup le $amis ne va pas s'incrémenter a chaque amis de la requete ???
    comment ca se passe a ce niveau ?

    je trouve pas ce que je veux sur google (a part ce forum). a chaque fois c des class de connexion, ou des exemples de pizza ou de voiture mais sans base de données.

    merci d'avance pour l'aide

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Re ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        public __construct() {
           $this->prenom = $prenom;
           $this->nom = $nom;
        }
    Ici, dans le constructeur, $prenom et $nom sont inexistants, donc il y erreur.

    Comme ceci par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
        public __construct($nom, $prenom) {
           $this->nom = $nom;
           $this->prenom = $prenom;
        }
    Puis dans la boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            while ($ami = $req_amis->fetch_assoc()) {
                 $amis[] = new Amis($ami['nom'], $ami['prenom']);
            }
    Par rapport à ce que tu fais, il serait mieux de nommer cette classe Ami (au singulier) car il s'agit d'une seule personne.
    $amis (au pluriel ci-dessus) est un tableau contenant plusieurs Objets Ami (classe Ami).

    Ceci dit, tout dépend de ce qu'on veut faire, on peu par exemple, créer une classe Amis (au pluriels) qui va prévoir de récupérer tous les amis, et chaque ami sera un Objet Ami (classe Ami).
    C'est juste pour exemple.

    Sache aussi que faire une requête SQL, c'est interroger sa Base De Donnée, et par conséquent on voit se profiler un Objet Database (ou Db).
    Par ailleurs, au lieu d'utiliser les fonctions mysql_*, oriente toi plutôt vers PDO, ou MySQLi Objet, tu seras déjà dans un contexte Objet à ce niveau là.
    [EDIT]
    $mysqli->query($sql_amis)
    J'avais pas fais gaffe.
    J'ai rien dis donc pour MySQLi

    Attention tout de même.
    Tu fais : $req_amis->fetch_assoc() et après $row_amis->nom, or fetch_assoc renvoit un tableau associatif.
    Faudrait plutôt faire fetch_object() pour obtenir les attributs.
    [/EDIT]

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 24
    Points : 18
    Points
    18
    Par défaut
    Merci RunCodePhp pour tous ces conseils !

    effectivement, j'ai modifié mon constructeur, et ca marche mieux !
    Ensuite, pour la requete que tu m'as donné, il me fait une erreur.
    il me dit que la variable creer a partir d'une classe ne peut pas etre un array...
    mais c pas tres grave, je suis en train d'essayer autre chose...

    des que ca marche je mettrai la solution ici.

    Pour ce qui est du singulier, c vrai que c'est beaucoup plus clair ! merci

    et oui pour Mysqli, je m'y mets aussi en meme temps

    merci encore !

Discussions similaires

  1. [Débutant] Référence au nom d'une classe dans une classe
    Par Dedechseb dans le forum VB.NET
    Réponses: 9
    Dernier message: 03/08/2012, 15h42
  2. Eval d'une propriété d'une classe dans une classe
    Par bizet dans le forum ASP.NET
    Réponses: 4
    Dernier message: 28/10/2008, 09h43
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. [POO] Utilisation d'une classe dans une classe !
    Par Okinou dans le forum Langage
    Réponses: 3
    Dernier message: 16/02/2006, 14h34
  5. Une classe dans une classe...
    Par Baquardie dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 30/09/2005, 19h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo