Bonjour à tous,

Je suis débutant en programmation et je souhaiterais avoir votre avis sur deux fonctions que j'ai faite.
J'ai fait une fonction Requete SQL avec un try catch si il y a une erreur et je la rappelle dans mes fonction pour afficher des données.
Ma question est la suivante, le passage par ma boucle while est-il obligé (copie des données dans un tableau), ne peut-on pas faire simplement $listePays = $resultat pour tout copier!
J'ai commenté ma question lignes 27-28!

Merci beaucoup c'est très gentil!
Bonne journée

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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
 
 
        $listePaysOrderByPopDeuxMio = afficheTabHabitantsDeuxMio($bd);
        foreach($listePaysOrderByPopDeuxMio as $ligne){
            echo $ligne['Pays'].' '.$ligne['an_2002'].'<br />';
        }
 
 
 
    // --------------------------------------- function -----------------------------------------------------------------------
 
    function requeteSQL($paramBdPDO, $paramRequete){
        try{
            $reponse = $paramBdPDO->query($paramRequete);
        }
        catch (Exception $e)
        {
            exit('<b>Catched exception at line '. $e->getLine() .' :</b> '. $e->getMessage());
        }
        return $reponse;
    }
 
    function affichePaysOrdreAlph($paramBdPDO){
        $sql = 'SELECT * FROM population ORDER BY pays';
        $resultats = requeteSQL($paramBdPDO, $sql);
        $listePays = array();
        // le while est-il utili ici? Pour moi requete retourne un tableau
        // donc on pourrait le retourner tel quel, mais sa ne marche pas si je ferme le cusor
        while($ligneDonnes = $resultats->fetch()){
            array_push($listePays, $ligneDonnes);
        }
        $resultats->closeCursor();
        return $listePays;
    }
 
    /** Les pays sont répartis entre 4 tableaux en fonction de la population en 2002 : 
     * <1 mio habitants, entre 1 et 10 mio, entre 10 et 100 mio, >1 mio habitants.
     */
    function afficheTabHabitants($paramBdPDO){
        $sql = 'SELECT * FROM population WHERE an_2002 < 1000';
        $resultats = requeteSQL($paramBdPDO, $sql);
 
        $listePays = array();
 
        while($ligneDonnes = $resultats->fetch()){
            array_push($listePays, $ligneDonnes);
        }
        $resultats->closeCursor();
        return $listePays;
    }
 
    function afficheTabHabitantsDeuxMio($paramBdPDO){
        $sql = 'SELECT * FROM population WHERE an_2002 > 1000';
        $resultats = requeteSQL($paramBdPDO, $sql);
 
        $listePays = array();
 
        while($ligneDonnes = $resultats->fetch()){
            array_push($listePays, $ligneDonnes);
        }
        $resultats->closeCursor();
        return $listePays;
    }