Salut

Je voudrais afficher le résultat d'une jointure entre la table categories et table sous-categories mais j'ai pas réussi , voici le code

SousCategorie.Class.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
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
 
class SousCategorie
{
    protected $_id ;
    protected $_nom ;
    protected $_descr ;
    protected $_idCat ;
 
 
    // Un tableau de données doit être passé à la fonction (d'où le préfixe « array »).
    public function __construct(array $donnees)
    {
        $this->hydrate($donnees);
    }
 
    // hydrate prend les valeurs des setters pas les getters
    public function hydrate(array $donnees)
    {
        foreach ($donnees as $key => $value)
        {
            // On récupère le nom du setter correspondant à l'attribut.
            $method = 'set'.ucfirst($key) ;
 
            // Si le setter correspondant existe.
            if (method_exists($this, $method))
            {
                // On appelle le setter.
                $this->$method($value);
            }
        }
    }
 
    // Les getters
    public function id()
    {
        return $this->_id ;
    }
 
    public function nom()
    {
        return $this->_nom ;
    }
 
    public function descr()
    {
        return $this->_descr ;
    }
 
    public function idCat()
    {
        return $this->_idCat ;
    }
 
    //Les setters
    public function setIdSousCat($id)
    {
        $this->_id = (int) $id ;
    }
 
    public function setNomSousCat($nom)
    {
        if (is_string($nom) && strlen($nom) <= 30)
        {
            $this->_nom = $nom ;
        }
    }
 
    public function setDescrSousCat($descr) // id de sous-catégorie
    {
        if (is_string($descr) && strlen($descr) <= 200)
        {
            $this->_descr = $descr ;
        }
    }
 
    public function setIdCat($idCat) // Id de catégorie
    {
        $this->_idCat = (int) $idCat ;
    }
 
}
?>
SousCategorieManager.Class.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
<?php
class SousCategorieManager
{
    private $_db; // Instance de PDO
 
    public function __construct($db)
    {
    $this->setDb($db);
    }
 
    public function setDb(PDO $db)
    {
        $this->_db = $db;
    }
 
    //fonction getList tous le table
    public function getList()
    {
        $sousCategories = array();
        $q = $this->_db->prepare('SELECT *
                                  FROM souscategories s
                                  LEFT JOIN categories c on s.idCat = c.idCat
                                  ORDER BY s.idSousCat');
 
        $q->execute();
 
        while ($donnees = $q->fetch(PDO::FETCH_ASSOC))
            {
                $sousCategories[] = new SousCategorie($donnees);
            }
                return $sousCategories;
    }
 
}
 
?>
Affichage

sous-categorie.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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
session_start();
include("../redirection.php");
// On enregistre notre autoload.
function chargerClasse($classname)
{
require ('../classes/'.$classname.'.Class.php');
}
spl_autoload_register('chargerClasse') ;
 
include('../db.php') ;
 
$managerObject = new SousCategorieManager($db);
 
$sousCategories = $managerObject->getList();
 
 
?>
 
                <table cellpadding="0" cellspacing="0" border="0" class="stdtable stdtablequick stdtablecb">
 
                    <thead>
                        <tr>
                            <th class="head0">ID</th>
                            <th class="head1">Nom</th>
                            <th class="head0">Déscription</th>
                            <th class="head1">Catégorie</th>                           
                            <th class="head0" style="text-align:center">Modifier</th>
                            <th class="head1" style="text-align:center">Supprimer</th>
                        </tr>
                    </thead>
 
<?php
foreach ($sousCategories as $unSousCat)
    echo '
 
                        <tr>
                            <td>',$unSousCat->id(),'</td>
                            <td>',htmlspecialchars($unSousCat->nom()),'</td>
                            <td>',htmlspecialchars($unSousCat->descr()),'</td>
                            <td>le nom de catégorie</td>
                            <td class="center">
                                <a href="./edit.php?id=',$unSousCat->id(),'" class="toggle"><img src="../images/edit.png" width=18" /></a></td>
                            <td class="center">
                                <a href="./delete.php?id=',$unSousCat->id(),'" class=""><img src="../images/trash.png" /></a></td>
                        </tr>';
 
 
?>
                    </tbody>
                </table>
Je voudrais afficher le nom de categorie dans la page sous-catégorie sachant que j'ai crée aussi des Class pour le categorie, pouvez-vous m'aider s'il vous plait ?

Merci d'avance