Condenser le code

Signaler
Messages postés
39
Date d'inscription
vendredi 15 juillet 2005
Statut
Membre
Dernière intervention
4 juin 2017
-
Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
-
Bonjour,
voici mon code :
<nav>
<div id="menu0">
</div>
<div id="menu1">
<ul>
<?php
$val = $link->query('SELECT TITRE FROM bdm_menus where ORDRE = 1');
while ($donnees = $val->fetch()) {
echo $donnees['TITRE'];
}
$val->closeCursor();
?>
<?php
$val = $link->query('SELECT TITRE FROM bdm_sous_menu where MENU = 1 ORDER BY VAL');
while ($donnees = $val->fetch()) {
echo '<li>'.$donnees['TITRE'].'</li>';
}
$val->closeCursor();
?>
</ul>
</div>
<div id="menu2">
<ul>
<?php
$val = $link->query('SELECT TITRE FROM bdm_menus where ORDRE = 2');
while ($donnees = $val->fetch()) {
echo $donnees['TITRE'];
}
$val->closeCursor();
?>
<?php
$val = $link->query('SELECT TITRE FROM bdm_sous_menu where MENU = 2 ORDER BY VAL');
while ($donnees = $val->fetch()) {
echo '<li>'.$donnees['TITRE'].'</li>';
}
$val->closeCursor();
?>
</ul>
</div>
<div id="menu3">
<ul>
<?php
$val = $link->query('SELECT TITRE FROM bdm_menus where ORDRE = 3');
while ($donnees = $val->fetch()) {
echo $donnees['TITRE'];
}
$val->closeCursor();
?>
<?php
$val = $link->query('SELECT TITRE FROM bdm_sous_menu where MENU = 3 ORDER BY VAL');
while ($donnees = $val->fetch()) {
echo '<li>'.$donnees['TITRE'].'</li>';
}
$val->closeCursor();
?>
</ul>
</div>
<div id="menu4">
<ul>
<?php
$val = $link->query('SELECT TITRE FROM bdm_menus where ORDRE = 4');
while ($donnees = $val->fetch()) {
echo $donnees['TITRE'];
}
$val->closeCursor();
?>
<?php
$val = $link->query('SELECT TITRE FROM bdm_sous_menu where MENU = 4 ORDER BY VAL');
while ($donnees = $val->fetch()) {
echo '<li>'.$donnees['TITRE'].'</li>';
}
$val->closeCursor();
?>
</ul>
</div>
<div id="menu5">
<ul>
<?php
$val = $link->query('SELECT TITRE FROM bdm_menus where ORDRE = 5');
while ($donnees = $val->fetch()) {
echo $donnees['TITRE'];
}
$val->closeCursor();
?>
<?php
$val = $link->query('SELECT TITRE FROM bdm_sous_menu where MENU = 5 ORDER BY VAL');
while ($donnees = $val->fetch()) {
echo '<li>'.$donnees['TITRE'].'</li>';
}
$val->closeCursor();
?>
</ul>
</div>
<div id="menu6">
</div>
</nav>

je répète 5 fois la même choses et je n'arrive pas à l'écrire de manière plus courte, ou compacte. Bref si quelqu'un pouvait me donner un coup de main ce ne serait pas de refus.
Le point positif, est qu'il fonctionne.
je voulais passer par une requête préparée du genre :

$val = $link->prepare('SELECT TITRE FROM bdm_menus where ORDRE = ?

mais je n'arrive pas à la mettre en oeuvre pour que cela m'affiche mes champs TITRE.
Merci d'avance pour votre aide.


--

1 réponse

Messages postés
14672
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
15 mai 2020
143
Peut être avec une boucle for ?
Messages postés
39
Date d'inscription
vendredi 15 juillet 2005
Statut
Membre
Dernière intervention
4 juin 2017

Oui, effectivement, avec une boucle je réduit le code, mais je ne trouve pas cela "élégant".

<nav>
<div id="menu0">
</div>
<?php for ($i=1; $i<6; $i++) {?>
<div id="menu<?=$i?>">
<ul>
<?php
$val = $link->query('SELECT TITRE FROM bdm_menus where ORDRE = '.$i);
while ($donnees = $val->fetch()) {
echo $donnees['TITRE'];
}
$val = $link->query('SELECT TITRE FROM bdm_sous_menu where MENU = '.$i.' ORDER BY VAL');
while ($donnees = $val->fetch()) {
echo '<li>'.$donnees['TITRE'].'</li>';
}
$val->closeCursor();
?>
</ul>
</div> <?php }?>

<div id="menu6">
</div>
</nav>
Messages postés
4242
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
16
Salut,
Si la mise en forme ne plait pas à cause du mix html/php tu peux tenter:

<nav>
 <div id="menu0"></div>
<?php 
 $MenuValue = "<ul>";
 for ($i=1; $i<6; $i++) {
  $MenuValue.= "<div id='menu" . $i . "'><ul>";
  $val = $link->query('SELECT TITRE FROM bdm_menus where ORDRE = '.$i);
  while ($donnees = $val->fetch()) {
   $MenuValue .= $donnees['TITRE'];
  }
  $val->closeCursor();
  $val = $link->query('SELECT TITRE FROM bdm_sous_menu where MENU = '.$i.' ORDER BY VAL');
  while ($donnees = $val->fetch()) {
   $MenuValue .= '<li>'.$donnees['TITRE'].'</li>';
  }
  $val->closeCursor();
  $MenuValue .= '</ul></div>';
 }
 echo $MenuValue;
?>

 <div id="menu6"></div>
</nav>


Naga