Condenser le code

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

3 réponses

NHenry 14274 Messages postés vendredi 14 mars 2003Date d'inscriptionModérateurStatut 18 octobre 2018 Dernière intervention - 29 nov. 2016 à 18:37
0
Merci
Peut être avec une boucle for ?
seyvapul 41 Messages postés vendredi 15 juillet 2005Date d'inscription 4 juin 2017 Dernière intervention - 29 nov. 2016 à 18:53
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 4269 Messages postés samedi 8 septembre 2007Date d'inscription 29 août 2018 Dernière intervention - 30 nov. 2016 à 15:35
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

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.