Précédent   Forum des professionnels en informatique > PHP > Langage > Débuter
Débuter Forum d'entraide pour débuter en PHP. Avant de poster -> Cours PHP, FAQ PHP, Outils PHP, etc.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/01/2012, 04h00   #1
Invité de passage
 
Inscription : janvier 2007
Messages : 15
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : janvier 2007
Messages : 15
Points : 1
Points : 1
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 :
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 :
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
diice est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/01/2012, 08h38   #2
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 727
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 727
Points : 3 294
Points : 3 294
Re ...

Code :
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 :
1
2
3
4
5
 
    public __construct($nom, $prenom) {
       $this->nom = $nom;
       $this->prenom = $prenom;
    }
Puis dans la boucle :
Code :
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]
__________________
Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/01/2012, 09h52   #3
Invité de passage
 
Inscription : janvier 2007
Messages : 15
Détails du profil
Informations personnelles :
Âge : 36

Informations forums :
Inscription : janvier 2007
Messages : 15
Points : 1
Points : 1
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 !
diice est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h49.


 
 
 
 
Partenaires

Hébergement Web