Bonjour,
je commence seulement à m'intéresser à la poo et je dois dire que je suis depuis quelques jours dans une impasse.
Je ne dois surement pas tout comprendre ou alors, je bloque sur un truc que je n'ai pas intégré...
En ce moment, l'idée est de faire une requête dans une DB, de récupérer les résultats dans un objet et de pouvoir, bien sur, utiliser ces résultats plus tard dans le code.

J'utilise pour ce faire un fichier Specialite.php :
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
<?php
class Specialite 
	{   
    private $id = Null;    
    private $libelle = Null; 
 
	function assign($row) {
	if (isset($row['id_specialite']))
    {
		$this->setIdSpecialite($row['id_specialite']); 
	}
	if (isset($row['libelle']))
    {
		$this->setLibelle($row['libelle']); 
	}
	}
 
    function getIdSpecialite() {
        return $this -> id;
    }
 
    function setIdSpecialite($id) {
        $this -> id = $id;
    }
 
    function getLibelle() {
        return $this -> libelle;
    }
 
    function setLibelle($libelle) {
        $this -> libelle = $libelle;
    }
}
?>
Un autre fichier SpecialiteDAO.php :
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
<?php
class SpecialiteDAO {
    /**
     * Recuperation de la liste des specialite
     * @return la liste des Specialite
     */
    function getListeSpecialites() {
			try
			{
			$bdd = new PDO('mysql:host=localhost;dbname=xxxxxxx', 'root', 'xxxxxxxxx');
			}
			catch (Exception $e)
			{
        	die('Erreur : ' . $e->getMessage());
			}
 
			$q = "SELECT * FROM specialite";
            $q_result = $bdd -> query($q);
			if (!$q_result) die (" ECHEC : " . mysql_error());
 
			//Traitement			
			$result = Null;
			$i = 0;
 
			//Traitement
			while ($q_row = $q_result -> fetch(PDO::FETCH_ASSOC)) {	
 
								$result[$i] = new Specialite();
								$result[$i] -> assign($q_row);
								$i++;
							}
			//Nettoyage
			$q_result -> closeCursor(); // Termine le traitement de la requête;		
         	return (object)$result; 
 	}    
}
?>
Et enfin la page d'affichage :
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
 
<?php
// Recuperation de la liste des specialites :
$SpecialiteDAO = new SpecialiteDAO();
$spec = $SpecialiteDAO -> getListeSpecialites();
$speMAX = ????? //Je ne sais comment récupérer le nombre d'objets retournés :(
//var_dump($spec);
?>
<select id="specialite">
                <option id_spec="0" selected>Indifférent</option>                
                <?php 
				$i=0;
				for ($i=0; $i<=$speMAX; $i++) {                    
                ?>
                <option id_spec="<?php echo $spec -> getIdSpecialite(); ?>"><?php echo $spec -> getLibelle(); ?></option>
                <?php } ?>
            </select>
Le var_dump commenté me retourne ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
object(stdClass)#13 (9) { [0]=> object(Specialite)#4 (2) { ["id:private"]=> string(1) "1" ["libelle:private"]=> string(11) "Cardiologue" } [1]=> object(Specialite)#5 (2) { ["id:private"]=> string(1) "2" ["libelle:private"]=> string(8) "Chir. CV" } [2]=> object(Specialite)#6 (2) { ["id:private"]=> string(1) "3" ["libelle:private"]=> string(14) "Chir digestive" } [3]=> object(Specialite)#7 (2) { ["id:private"]=> string(1) "4" ["libelle:private"]=> string(11) "Generaliste" } [4]=> object(Specialite)#8 (2) { ["id:private"]=> string(1) "5" ["libelle:private"]=> string(11) "Gynecologue" } [5]=> object(Specialite)#9 (2) { ["id:private"]=> string(1) "6" ["libelle:private"]=> string(12) "Orthopediste" } [6]=> object(Specialite)#10 (2) { ["id:private"]=> string(1) "7" ["libelle:private"]=> string(11) "Pneumologue" } [7]=> object(Specialite)#11 (2) { ["id:private"]=> string(1) "8" ["libelle:private"]=> string(10) "Radiologue" } [8]=> object(Specialite)#12 (2) { ["id:private"]=> string(1) "9" ["libelle:private"]=> string(12) "Rhumatologue" } }
J'ai tous mes éléments.

Plusieurs choses donc :
je ne sais comment récupérer la valeur de ma variable $specMAX censée me faire la sortie de boucle.
Pire, je ne sais comment afficher les valeurs id ou libelle de mon objet.

Si une âme charitable pouvait éclairer ma lanterne et m'indiquer mes erreurs.
Merci