Condenser le code

Messages postés
41
Date d'inscription
vendredi 15 juillet 2005
Statut
Membre
Dernière intervention
4 juin 2017
- - Dernière réponse : nagaD.scar
Messages postés
4265
Date d'inscription
samedi 8 septembre 2007
Statut
Membre
Dernière intervention
29 août 2018
- 30 nov. 2016 à 15:35
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.


--
Afficher la suite 

1 réponse

Messages postés
14522
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
12 août 2019
133
0
Merci
Peut être avec une boucle for ?
seyvapul
Messages postés
41
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>
nagaD.scar
Messages postés
4265
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
Commenter la réponse de NHenry