Bonjour,
Pour recoder une appli PHP4 en PHP5, je suis a la recherche de la meilleure façon de faire :
L'une des page de mon appli a pour but de d'afficher un tableau avec toutes les voiture disponibles dans la base de données.
Actuellement, c'est codé de la façon suivante :
De cette façon, 1 requête => 1 boucle => 100 voiture affichée et tout le monde est content.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $q = 'SELECT ID, couleur, marque, modele FROM Voiture'; $g = mysql_query($q); while ($r = mysql_fetch_array($g)){ echo ' <tr> <td>'.$r['ID'].'</td> <td>'.$r['couleur'].'</td> <td>'.$r['marque'].'</td> <td>'.$r['modele'].'</td> </tr>'; }
Dans la conversion Objet, j'ai évidemment créé une classe Voiture et un programme principal :
Le souci, vous l'aurez certainement compris est que pour le coup, j'ai non plus 1 mais 101 requêtes ! Je me félicite pour l'optimisation...
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 Class Voiture{ public $ID , $couleur , $marque , $voiture; public function __construct($id){ $q = select * from voiture where id = $id; $g = mysql_query($q); $r = mysql_fetch_array($g); $this->ID = $r['ID']; $this->couleur = $r['couleur']; $this->marque = $r['marque']; $this->modele = $r['modele']; } // mon but n'est pas de faire du MVC, donc je mets la méthode d'affichage à cet endroit :-) public function AfficheVoiture(){ echo ' <tr> <td>'.$this->ID.'</td> <td>'.$this->couleur.'</td> <td>'.$this->marque.'</td> <td>'.$this->modele.'</td> </tr>'; } } //Programme principal : $q = 'SELECT ID FROM Voiture'; $g = mysql_query($q); while ($r = mysql_fetch_array($g)){ $v = new Voiture($r['ID']); $v->AfficheVoiture(); }
Je me dis que y'a un gros souci de conception. J'imagine qu'on doit utiliser un tableau et initialiser mes instance de voiture via les lignes du tableau, mais du coup je me dis qu'il y a peut être une méthode reconnue pour ce genre de problématique dont je ne suis pas le seul à y être confronté...
Vos avis d'experts ?
Merci de votre aide !
Partager