Probleme avec Menu

salut a tous je veux afficher des donneé a partir de la base de donneé sous forme de menu horizontale ou verticale
voile mon code qui affiche sous forme d'une liste déroulante avec un boutton pour aller au catégorie qui contient des produit

<?php
$categories = $DB->query('SELECT * FROM categories');
?>

<form id="filtre" action="produits.php" method="post">
<select name="categorie" id="categorie">
<option value="0">Tous les produits</option>
<?php foreach ($categories as $c): ?>
<option value="<?php echo $c->id ?>"><?php echo $c->name; ?></option>

<?php endforeach ?>
</select>
<input type="submit" value="Filtrer">
</form>

2 réponses

  1. Bonjour,

    Si tu veux faire des listes déroulantes faciles, il n'y a pas mieux que télécharger class.liste.php ( https://www.phpclasses.org/package/2625-PHP-Generate-form-select-inputs-from-MySQL-queries.html )

    Tu mets la classe dans le répertoire de ton appli ou dans un répertoire de librairies (genre /lib). C'est tout.
    Pour faire ta liste, tu as besoin de savoir ce que tu veux et où le prendre. Pour ça, un fichier de définition de liste. Exemple: fichier de définition de liste de clients (clients.def.php : le '.def.php' est obligatoire):
    <?php
    // Définition d'une liste de clients (clients.def.php)
    $table  = "Clients";
    $champs = "idcli,nom,prenom";
    $ordre  = "nom,prenom;           // optionnel
    // $where  = "...condition...";  // optionnel
    $texte  = "-- Choisir le client --";
    ?>


    Dans ton code : insérer la classe, instancier la liste puis l'écrire
    <?php
    ...
    require("lib/class.liste.php");    // insertion classe
    $LDclients = new liste("clients"); // instancier. clients.def.php lu
    $LDclients->write();               // écrire la liste
    $LDclients->write(12);             // écrire la liste avec présélection
    ...
    ?>


    Le nom du contrôle sera idcli (mais tu peux changer. lire la doc)
    <select name='idcli'>
    <option value='null'>-- Choisir le client --
    <option value='25'>ARTEBOIS jean
    ...
    </select>
    1. Merci pour la réponse mais mon code au dessus de la liste déroullante est correcte je veux une menu verticale ou horizontale
    2. https://www.commentcamarche.net/contents/504-tableau-html-table

      ça devrais t'aider ;)
    3. Merci
    4. UPDATE :

      <?php
      $var = array(
          "titre1" => "Menu 1",
          "titre2" => "Menu 2",
      );
      
      if (!empty($var))
      {
      ?>
      
      <form id="filtre" action="produits.php" method="post">
      <select name="categorie" id="categorie">
      <option value="0">Tous les produits</option>
      <?php
      
      $i=1;
      while($i <= count($var))
      {
       echo '<option value="' . $var["titre" . $i] . '"> '. $var["titre" . $i] . '</option>';
       $i++;
      }
      ?>
      </select>
      <input type="submit" value="Filtrer">
      </form>
      
      <?php
      }
      ?>
      


      J'ai bricoler ça pour toi , ça devrais nettement mieux t'aider ;)
  2. C'est quoi ta question? Où est le soucis...??
    1. je veux afficher des donneé a partir de la base de donneé sous forme de menu horizontale ou verticale
      voile mon code qui affiche sous forme d'une liste déroulante avec un boutton pour aller au catégorie qui contient des produit
    2. <?php foreach ($categories as $c): ?>
      <?php echo $c->id; ?> : <?php echo $c->name; ?><br/>
      <?php endforeach ?>

      Non...??
    3. Merci pour la réponse votre solustion est correcte mais il manque le lien je veux que l'orsque un client clique sur une catégorie il affiche les produits de cette catégoeir