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
4269
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 

Votre réponse

1 réponse

Messages postés
14456
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
24 mai 2019
130
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
4269
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