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 :

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>';
}
De cette façon, 1 requête => 1 boucle => 100 voiture affichée et tout le monde est content.

Dans la conversion Objet, j'ai évidemment créé une classe Voiture et un programme principal :

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();
}
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...

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 !