Bonjour cher tous , je débute en programmation et j'ai besoin de votre aide pour la gestion d'un espace membre pour des commerciaux en PHP. Pour cela j'ai certains tutoriels de grafikart à ce sujet qui m'ont très bien aider d’ailleurs .

En effet, Ce que je souhaiterais faire c'est de permettre à chaque membre d'afficher sa liste de clients qu'il aurait eu à enregistrer et aussi le modifier.

De ce fait j'ai pu déjà créer les différentes tables membre et client qui sont les suivantes :

  • Membre( id, pseudo, mail, motdepasse)
  • Client(id_client, id_menbre, fonction, email, contact, ville, produit, prix, payer, reglement, date)

<!-- PAGE afficher_liste_client.php -->

<div class="panel panel-info ">
           <div class="panel-heading">
               liste des clients
           </div>
           <a href="enregistrer_client.php"><button class="btn btn-info"><i class="fa fa-plus"></i> ajouter des clients</button></a>

           <table class="table table-striped">

               <tbody>
                   <?php
                   include ('include/dbbconnect.php');

                   if(isset($_SESSION['id'])) {

                       $query = "SELECT * FROM membre WHERE INNER JOIN client ORDER BY 1";
                       $ps = $con->prepare($query);
                       $ps->bindParam(':id', $_SESSION ['pseudo']);
                       $ps->setFetchMode(PDO::FETCH_ASSOC);

                       $doHeader = true;

                       if ($doHeader) {

                           echo "<table>";
                           echo "<thead><tr><th>nom</th><th>entreprise</th><th>fonction</th><th>email</th><th>contact</th><th>ville</th></tr>                                   </thead>";
                           foreach ($ps as $row) {
                               echo "<tr>";

                              <td><?=$row ['nom'];?></td>
                              <td><?=$row ['entreprise'];?></td>
                              <td><?=$row ['fonction'];?></td>
                              <td><?=$row ['email'];?></td>
                              <td><?=$row ['contact'];?></td>
                              <td><?=$row ['ville'];?></td>
                              <td><?=$row ['produit'];?></td>
                              <td><?=$row ['prix'];?></td>
                              <td><?=$row ['payer'];?></td>
                              <td><?=$row ['reglement'];?></td>
                              <td><?=$row ['caisse'];?></td>
                              <td><?=$row ['date'];?></td>

                               echo "</tr>\n";
                           }

                           echo "</table>";
                       } else {
                           echo "<p> Error</p>";
                       }

                   }
                   ?>
                 </p>

           <br/>

               </tbody>
           </table>
       </div>
   </div>

La page du formulaire d'ajout de client a été crée, l'ajout des donnée se font sans aucun problème dans la base de donnée.
Mais rien ne s'affiche lorsque je lance la page ( afficher_liste_client.php ), je ne sait pas quoi faire .
Merci d'accorder de l'importance à ce poste .

Merci beaucoup d'avance de votre aide

8 réponses


Bonjour,

C'est au niveau de la requête SQL que ça coince.
Il faut bien sélectionner les clients en fonction de l'id du membre or dans la requête, il n'y a pas cette id.

Premièrement, ta requête n'est pas correcte

$query = "SELECT * FROM membre INNER JOIN client ON client.id_membre=membre.id WHERE membre.id = :id ORDER BY client.id_client DESC";
$ps = $con->prepare($query);
$ps->bindParam(':id', $_SESSION ['id']);
$ps->setFetchMode(PDO::FETCH_ASSOC);

Devrait faire l'effet escompté :)

@Kareylo pourquoi faire une jointure ? Pourquoi ne tout simplement pas faire ceci :

$query = "SELECT * FROM client WHERE id_membre = :id ORDER BY id_client DESC";
$ps = $con->prepare($query);
$ps->bindParam(':id', $_SESSION ['id']);
$ps->setFetchMode(PDO::FETCH_ASSOC);

Enfin après je trouve ça plus simple,

Note:
@O. SASHA
Client(id_client, id_menbre, fonction, email, contact, ville, produit, prix, payer, reglement, date)

c'est normal que le champ s'appelle id_menbre et non id_\membre ?

@AlexJM Lui qui partait sur une jointure, on sait jamais qu'il ait besoin des infos de la table membre

De plus, le 1er "echo du < tr>" est fermé trop vite.

Sans oublier son

$doHeader = true;

Qui n'est jamais modifie et qui vaudra toujours true. Autant virer la condition

 if ($doHeader) {

Par ailleurs l'auteur du sujet ne donne pas signe de vie, les reponses que nous donnons l'aide vraiment ?

O. SASHA
Auteur

Merci à tous pour vos différentes réponses je corrige et je vous fais un retour

@Kareylo ah d'accord, non je demandais car je connais certaines personnes qui partent directement sur une jointure même si il n'y en a pas spécialement besoin