IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

afficher des sous onglets avec un foreach [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut afficher des sous onglets avec un foreach
    Bonjour à tous et à toutes.
    J'aimerais faire un menu horizontal avec des foreach alimentés par une bdd.
    C'est les sous onglets qui me pose problèmes car je ne sais pas comment faire pour que les balises <ul> et </ul> soit pris en compte qu’une seul fois.
    Voici le contenu du array $onglet
    Array ( [accueil] => Accueil [page_contact] => Contact [rubrique_1] => Rubrique 1 [test] => test [test-1] => test 1 [test-2] => test 2 [fenetres] => Fenêtres )
    Celui du array sous_onglet
    Array (
    [accueil] => Array (
    [0] => Array ( [nom_onglet] => Accueil [lien_onglet] => accueil [cor_lien_menu] => accueil [nom_s_ong] => Accueil bis [lien_s_ong] => accueil_bis )
    [1] => Array ( [nom_onglet] => Accueil [lien_onglet] => accueil [cor_lien_menu] => accueil [nom_s_ong] => Accueil Bis 2 [lien_s_ong] => accueil_bis_2 ) )

    [page_contact] => Array (
    [0] => Array ( [nom_onglet] => Contact [lien_onglet] => page_contact [cor_lien_menu] => [nom_s_ong] => [lien_s_ong] => ) )

    [rubrique_1] => Array (
    [0] => Array ( [nom_onglet] => Rubrique 1 [lien_onglet] => rubrique_1 [cor_lien_menu] => rubrique_1 [nom_s_ong] => Sous onglet rubrique [lien_s_ong] => sous_onglet_rubrique ) )
    [test] => Array (
    [0] => Array ( [nom_onglet] => test [lien_onglet] => test [cor_lien_menu] => [nom_s_ong] => [lien_s_ong] => ) )
    [test-1] => Array (
    [0] => Array ( [nom_onglet] => test 1 [lien_onglet] => test-1 [cor_lien_menu] => [nom_s_ong] => [lien_s_ong] => ) )
    [test-2] => Array (
    [0] => Array ( [nom_onglet] => test 2 [lien_onglet] => test-2 [cor_lien_menu] => [nom_s_ong] => [lien_s_ong] => ) )
    [fenetres] => Array ( [0] => Array ( [nom_onglet] => Fenêtres [lien_onglet] => fenetres [cor_lien_menu] => [nom_s_ong] => [lien_s_ong] => ) ) )
    Voici mon code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    $req_menu_hor = $bdd->prepare("SELECT nom_onglet, lien_onglet, cor_lien_menu, nom_s_ong, lien_s_ong FROM menu 
    	LEFT JOIN sous_menu ON menu.lien_onglet = sous_menu.cor_lien_menu WHERE auth_view <= :auth_view_level");
    	$req_menu_hor->bindValue('auth_view_level', $level, PDO::PARAM_INT);
    	$req_menu_hor->execute();
    	$onglet = array(); // déclare le tableau
    	$sous_onglet = array();
     
    	while ($res_menu_hor = $req_menu_hor->fetch())
    		{
    			$onglet[$res_menu_hor['lien_onglet']] = $res_menu_hor['nom_onglet']; // alimente le tableau
    			$sous_onglet[$res_menu_hor['lien_onglet']][] = $res_menu_hor;
    		}
    	$req_menu_hor->closeCursor();
    	//print_r ($onglet);
    	//print_r ($rubrique);	
    	echo"<div id='cssmenu'><ul>";
    	$dernier_onglet = end($onglet);
     
    	foreach ($onglet as $key => $values)
    		{
    			echo '<li class="has-sub';if(urlencode($key) == $page) {echo' active';} if ($key === $dernier_onglet) {echo' last';}echo'">';
    			echo'<a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'"><span>'.stripslashes($values).'';
     
    				echo'</span></a>';
    			echo'</li>';
    		}
    echo"</ul></div>";
    Merci de votre aide.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ou est le foreach pour les sous-onglets ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Désolé de ma réponse tardive, j'ai du m’absenter.
    Merci de ton aide; j'avais enlevé volontairement le second foreach car à force de faire des tests c'était incompréhensible.
    Voici mon code de dépars avec le second foreach
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    $req_menu_hor = $bdd->prepare("SELECT nom_onglet, lien_onglet, cor_lien_menu, nom_s_ong, lien_s_ong FROM menu 
    	LEFT JOIN sous_menu ON menu.lien_onglet = sous_menu.cor_lien_menu WHERE auth_view <= :auth_view_level");
    	$req_menu_hor->bindValue('auth_view_level', $level, PDO::PARAM_INT);
    	$req_menu_hor->execute();
    	$onglet = array(); // déclare le tableau
    	$sous_onglet = array();
     
    	while ($res_menu_hor = $req_menu_hor->fetch())
    		{
    			$onglet[$res_menu_hor['lien_onglet']] = $res_menu_hor['nom_onglet']; // alimente le tableau
    			$sous_onglet[$res_menu_hor['lien_onglet']][] = $res_menu_hor;
    		}
    	$req_menu_hor->closeCursor();
    	//print_r ($onglet);
    	//print_r ($sous_onglet);	
    	echo"<div id='cssmenu'><ul>";
    	$dernier_onglet = end($onglet);
     
    	foreach ($sous_onglet as $key => $values)
    		{
    			echo '<li class="has-sub';if(urlencode($key) == $page) {echo' active';} if ($key === $dernier_onglet) {echo' last';}echo'">';
    			echo'<a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'"><span>'.stripslashes($onglet[$key]).'';
    			$lastKey = array_pop(array_keys($cles[$valeurs['cor_lien_menu']]));
    			echo'<ul>';
    						foreach ($values as $value)
    							{
    								echo '<li><a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'&amp;prod='.urlencode($value['lien_s_ong']).'" title="accédez au page du commerce." style="color:#fff">
    								'.stripslashes($value['nom_s_ong']).'</a></li>';
    							}
    						echo'</ul>';
    				echo'</span></a>';
    			echo'</li>';
    		}
    echo"</ul></div>";
    Le souci c'est qu'il y a un sous onglet vierge qui s’ouvre sous les onglets qui normalement n'en on pas.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton UL s'ouvre ligne 25 et se ferme ligne 31.
    A quoi correspond le UL fermé ligne 35 ?
    Même chose pour la fermeture de LI ligne 33.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    l' UL ligne 25 ouvre les sous onglets et celui ligne 31 les fermes.
    Ces Ul devrais se mettre uniquement si il y a des sous onglet à afficher.(si cor_lien_menu n'est pas vide)
    Ces UL devrais s'afficher qu'une seule fois même si il y a plusieurs LI (sous onglet) à l’intérieure.

    le UL fermé ligne 35 correspond à la fermeture du menu général.
    il est ouvert ligne 17.

    Même chose pour la fermeture de LI ligne 33, il ferme les onglet.

    J'arrive à afficher se qui correspond à : lien_onglet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sous_onglet[$key]['0']['lien_onglet']
    Comment faire pour afficher cor_lien_menu en remplacent ['0'] par une variable car des fois il peut y avoir plusieurs ligne ['0']['1']

    Si je comprend comment afficher cor_lien_menu j'arriverais à tous faire mais y a rien à faire j'y arrive pas.

  6. #6
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    J'ai bien réduit mon script mais je sais toujours pas comment faire avec mes UL.
    Si quelqu'un a une solution je suis preneur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    $req_menu_hor = $bdd->prepare("SELECT nom_onglet, lien_onglet, cor_lien_menu, nom_s_ong, lien_s_ong FROM menu 
    	LEFT JOIN sous_menu ON menu.lien_onglet = sous_menu.cor_lien_menu WHERE auth_view <= :auth_view_level AND auth_view <= :auth_view_level ORDER BY ordre_aff, ordre_s_ong ASC");
    	$req_menu_hor->bindValue('auth_view_level', $level, PDO::PARAM_INT);
    	$req_menu_hor->execute();
    	$onglet = array(); // déclare le tableau
    	$sous_onglet = array();
     
    	while ($res_menu_hor = $req_menu_hor->fetch())
    		{
    			$onglet[$res_menu_hor['lien_onglet']] = $res_menu_hor['nom_onglet']; // alimente le tableau
    			$sous_onglet[$res_menu_hor['lien_onglet']][] = $res_menu_hor;
    		}
    	$req_menu_hor->closeCursor();
    	//print_r ($onglet);
    	//print_r ($sous_onglet[$key]);	
    	echo"<div id='cssmenu'><ul>";
    	$dernier_onglet = end($onglet);
    	foreach ($sous_onglet as $key => $resultat_values)
    		{
    			//print_r ($sous_onglet[$key]);	
    			$lastKey = array_pop(array_keys($sous_onglet[$key]));
    			echo '<li class="has-sub';if(urlencode($key) == $page) {echo' active';} if ($key === $dernier_onglet) {echo' last';}echo'">';
    			echo'<a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'"><span>'.stripslashes($onglet[$key]).'';
    			foreach($resultat_values as $values)
    				{
    					echo'<ul>';
    					echo '<li><a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'&amp;prod='.urlencode($values['cor_lien_menu']).'" 
    					title="accédez au page du commerce." style="color:#fff">'.stripslashes($values['nom_s_ong']).'  - '.$values.'</a></li>';
    					echo'</ul>';				
    				}
    			echo'</span></a>';
    			echo'</li>';
    		}

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    La première question est : est-ce que le code source HTML que tu obtiens est celui que tu attends ?
    Si non, que devrait-il être ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je verrais bien quelque chose dans ce genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    	echo"<nav id='cssmenu'>";
    	echo"<ul>";
    	$dernier_onglet = end($onglet);
     
    	foreach ($onglet as $key => $onglet_val)
    		{
    			//print_r ($sous_onglet[$key]);	
    	// (???)		$lastKey = array_pop(array_keys($sous_onglet[$key]));
    			echo '<li class="has-sub';if(urlencode($key) == $page) {echo' active';} if ($key === $dernier_onglet) {echo' last';}echo'">';
     
    			echo'<a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'"><span>'.htmlspecialchars($onglet_val['nom_ong']).'</span></a>';
     
    			if( count($sous_onglet[$key]) > 0 )
    			{
    				echo'<ul>';
    				foreach($sous_onglet[$key] as $ss_onglet_val)
    				{
    					echo '<li><a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'&amp;prod='.urlencode($ss_onglet_val['cor_lien_menu']).'" 
    					title="accédez au page du commerce." style="color:#fff">'.htmlspecialchars($ss_onglet_val['nom_s_ong']).'</a></li>';
    				}
    				echo'</ul>';				
    			}
    			echo'</li>';
    		}
     
    	echo"</ul>";
    	echo"</nav>";

  9. #9
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Encore merci à tous les deux pour votre aide.
    Ton ne fonctionne pas jreaux62 mais je vais creuser avec le count.
    Ca me semble une bonne idée.

    Voici le code html fonctionnel de dépars
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <div id='cssmenu'>
    <ul>
       <li><a href='#'><span>Home</span></a></li>
       <li class='active has-sub'><a href='#'><span>Products</span></a>
          <ul>
             <li class='has-sub'><a href='#'><span>Product 1</span></a>
                <ul>
                   <li><a href='#'><span>Sub Product</span></a></li>
                   <li class='last'><a href='#'><span>Sub Product</span></a></li>
                </ul>
             </li>
             <li class='has-sub'><a href='#'><span>Product 2</span></a>
                <ul>
                   <li><a href='#'><span>Sub Product</span></a></li>
                   <li class='last'><a href='#'><span>Sub Product</span></a></li>
                </ul>
             </li>
          </ul>
       </li>
       <li><a href='#'><span>About</span></a></li>
       <li class='last'><a href='#'><span>Contact</span></a></li>
    </ul>
    </div>
    Le code actuel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    $req_menu_hor = $bdd->prepare("SELECT nom_onglet, lien_onglet, cor_lien_menu, nom_s_ong, lien_s_ong FROM menu 
    	LEFT JOIN sous_menu ON menu.lien_onglet = sous_menu.cor_lien_menu WHERE auth_view <= :auth_view_level AND auth_view <= :auth_view_level ORDER BY ordre_aff, ordre_s_ong ASC");
    	$req_menu_hor->bindValue('auth_view_level', $level, PDO::PARAM_INT);
    	$req_menu_hor->execute();
    	$onglet = array(); // déclare le tableau
    	$sous_onglet = array();
     
    	while ($res_menu_hor = $req_menu_hor->fetch())
    		{
    			$onglet[$res_menu_hor['lien_onglet']] = $res_menu_hor['nom_onglet']; // alimente le tableau
    			$sous_onglet[$res_menu_hor['lien_onglet']][] = $res_menu_hor;
    		}
    	$req_menu_hor->closeCursor();
    	//print_r ($onglet);
    	//print_r ($sous_onglet[$key]);	
    	echo"<div id='cssmenu'><ul>";
    	$dernier_onglet = end($onglet);
    	foreach ($sous_onglet as $key => $resultat_values)
    		{
    			echo '<li class="has-sub';if(urlencode($key) == $page) {echo' active';} if ($onglet[$key] === $dernier_onglet) {echo' last';}echo'">';
    			echo'<a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'"><span>'.stripslashes($onglet[$key]).'';
    			foreach($resultat_values as $values)
    				{
     
    				  	echo'<ul>';
    					echo '<li><a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'&amp;prod='.urlencode($values['cor_lien_menu']).'" 
    					title="accédez au page du commerce." style="color:#fff">'.stripslashes($values['nom_s_ong']).'</a></li>';
    					echo'</ul>';				
    				}
    			echo'</span></a>';
    			echo'</li>';
    		}
    	echo"</ul></div>";

  10. #10
    Invité
    Invité(e)
    Par défaut
    C'est sûr, si tu te contentes d'un copier-coller...

    Il n'y a pas que le "count" à voir dans mon code.

    Citation Envoyé par Sergio_zero Voir le message
    ...Ton ne fonctionne pas...
    C'est sûr qu'avec ça, on est bien avancé...
    Dernière modification par Invité ; 01/04/2016 à 10h40.

  11. #11
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Je te remercie jreaux62 de prendre de ton temps pour m'aider mais si c'est pour me traiter de débile juste bon à faire des copier coller je me débrouillerais sans toi.
    Je me couche à pas d'heure depuis une semaine pour essayer de faire fonctionner ce truc mais je n'y arrive pas.
    Voila pourquoi je demande de l'aide.
    Ton code ne peut pas fonctionner car le premier foreach ne cible pas le bon array.
    Par contre l'idée du count me parait bien, reste à savoir l'exploiter.

    voici donc le script en perpétuel modif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
    echo"<div id='cssmenu'><ul>";
    	$dernier_onglet = end($onglet);
    	foreach ($sous_onglet as $key => $resultat_values)
    		{
    			//print_r ($sous_onglet[$key]);	
    			echo '<li class="has-sub';if(urlencode($key) == $page) {echo' active';} if ($onglet[$key] === $dernier_onglet) {echo' last';}echo'">';
    			echo'<a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'"><span>'.stripslashes($onglet[$key]).'';
    			foreach($resultat_values as $values)
    				{
     
    					if( $values['nom_s_ong'] != '')
    						{
    							if( $categorie1 != $values['cor_lien_menu'])
    								{
    									$categorie1 = $values['cor_lien_menu'];
    									echo'<ul>';
    								}
     
    							echo '<li><a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'&amp;prod='.urlencode($values['cor_lien_menu']).'" 
    							title="accédez au page du commerce." style="color:#fff">'.stripslashes($values['[nom_s_ong] ']).'</a></li>';
    							$fin = count($sous_onglet[$key]);
    							for($i=0;$i==$fin;$i++)
    								{
    									echo'</ul>';
    								}
    						}								
    				}
    			echo'</span></a>';
    			echo'</li>';
    		}
    	echo"</ul></div>";

  12. #12
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    les menus arborescents sont assez délicats à gérer en html.
    L'idée principale c'est de rapatrier en une seule requête la totalité du menu.
    Le but c'est de disposer des répétitions des nommages des éléments parents pour gérer les ouvertures et fermetures des éléments enfants.
    À partir d'un résultat de ce genre :
    niv1     | niv2     | niv3      | niv4       | niv5  | lien
    ----------------------------------------------------------------------
    Home     |          |           |            |       | home.php
    Products |          |           |            |       | products.php
    Products | Product1 |           |            |       | products.php
    Products | Product1 | Product11 |            |       | products.php
    Products | Product1 | Product11 | Product111 |       | products.php
    Products | Product2 |           |            |       | products.php
    Products | Product2 | Product21 |            |       | products.php
    Products | Product3 |           |            |       | products.php
    About    |          |           |            |       | about.php
    Contact  |          |           |            |       | contact.php
    il est assez facile de générer le html qui va bien.
    Pourrais-tu fournir un résultat tangible de ce genre avec ton SQL ?

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sergio_zero Voir le message
    ... je me débrouillerais sans toi.
    Message reçu.

    Par contre, si tu répondais aux questions qui te sont posées, ça permettrait d'avancer :
    Citation Envoyé par sabotage Voir le message
    La première question est : est-ce que le code source HTML que tu obtiens est celui que tu attends ?
    Si non, que devrait-il être ?

  14. #14
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Voici mes tables sql.
    Il y en a deux, j'ai fait une jointure : LEFT JOIN sous_menu ON menu.lien_onglet = sous_menu.cor_lien_menu.

    Structure de la table `menu`
    id  ordre_aff   nom_onglet  lien_onglet     auth_view       page_exist 
    1   1           Accueil     accueil         0                   0   
    2   2           Contact     page_contact    0                   0   
    3   30          Rubrique 1  rubrique_1      0                   0   
    7   70          Fenêtres    fenetres        3                   0 
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    CREATE TABLE IF NOT EXISTS `menu` (
      `id` int(11) NOT NULL,
      `ordre_aff` int(11) NOT NULL,
      `nom_onglet` varchar(50) COLLATE latin1_general_ci NOT NULL,
      `lien_onglet` varchar(50) COLLATE latin1_general_ci NOT NULL,
      `auth_view` int(1) NOT NULL,
      `page_exist` int(1) NOT NULL DEFAULT '0'
    ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;

    Structure de la table `sous_menu`

    id_s    cor_id  cor_lien_menu   ordre_s_ong     nom_s_ong               lien_s_ong              auth_view_s     pages_exist 
    1        1          accueil        10           Accueil bis             accueil_bis                 0                   0 
    2        1          accueil        20           Accueil Bis 2           accueil_bis_2               0                   0 
    3        3          rubrique_1     30           Sous onglet rubrique    sous_onglet_rubrique        0                   0   

    Voici le nouveau code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    echo"<div id='cssmenu'><ul>";
    	$dernier_onglet = end($onglet);
    	foreach ($sous_onglet as $key => $resultat_values)
    		{
    			//print_r ($sous_onglet[$key]);	
    			$last_key = end(array_keys($sous_onglet[$key]));
    			echo '<li class="has-sub';if(urlencode($key) == $page) {echo' active';} if ($onglet[$key] === $dernier_onglet) {echo' last';}echo'">';
    			echo'<a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'"><span>'.stripslashes($onglet[$key]).' - '.$last_key.'';
     
    			foreach($resultat_values as $cle => $values)
    				{
    					if( $values['nom_s_ong'] != '')
    						{
    							if( $cle === 0)
    								{
    									echo'<ul>';
    								}
    							echo '<li><a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'&amp;prod='.urlencode($values['cor_lien_menu']).'" 
    							title="accédez au page du commerce." style="color:#fff">'.stripslashes($values['nom_s_ong']).' - '.$cle.' - '.$last_key.'</a></li>';
    							$fin = count($sous_onglet[$key]);
    							if($cle === $last_key)
    								{
    									echo'</ul>';
    								}
    						}								
    				}
    			echo'</span></a>';
    			echo'</li>';
    		}
    	echo"</ul></div>";
    J'y suis presque.

  15. #15
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Désolé jreaux62 mais je n'ai pas vu ta question.
    J'ai le cerveau qui fume

  16. #16
    Invité
    Invité(e)
    Par défaut
    Ce n'était pas "ma" question, mais celle de sabotage, quelques messages plus haut.
    Citation Envoyé par Sergio_zero Voir le message
    Désolé jreaux62 mais je n'ai pas vu ta question.
    Cela dit,... tu n'y réponds toujours pas...

    => Afficher le code source généré (HTML) permet, souvent, de voir ce qui ne va pas, et donc de trouver des pistes pour corriger le code.


    Un exemple ?
    echo'</span></a>'; (ligne 27) n'est pas correctement placé dans ton code.
    Il doit être avant le foreach (comme je l'ai fait dans "mon" code).
    Donc ligne 9.

    [OUPS !] Désolé !!!
    J'ai continué à participer...

  17. #17
    Membre régulier
    Homme Profil pro
    Educateur spécialisé
    Inscrit en
    Janvier 2012
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Educateur spécialisé
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2012
    Messages : 208
    Points : 118
    Points
    118
    Par défaut
    Merci jreaux62 je vient de voir la question de sabotage.
    Non le résultat obtenu n'était pas celui attendu.
    Je pense avoir réussi.
    Merci de votre aide.
    Je met le code final qui a l'air de fonctionner.
    Je fait des tests et viendrais corriger si besoins.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    echo"<div id='cssmenu'><ul>";
    	//$dernier_onglet = end($onglet);
    	$dernier_onglet = end(array_keys($onglet));
    	foreach ($sous_onglet as $key => $resultat_values)
    		{
    			//print_r ($sous_onglet[$key]);	
    			$last_key = end(array_keys($sous_onglet[$key]));
    			echo '<li class="has-sub';if(urlencode($key) == $page) {echo' active';} if ($key == $dernier_onglet) {echo' last';}echo'">';
    			echo'<a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'"><span>'.stripslashes($onglet[$key]).'';
     
    			foreach($resultat_values as $cle => $values)
    				{
    					if( $values['nom_s_ong'] != '')
    						{
    							$prem_key = 0;
    							if( $cle === $prem_key)
    								{
    									echo'<ul>';
    								}
    							echo '<li><a href="'.ROOTPATH.'/index.php?page='.urlencode($key).'&amp;prod='.urlencode($values['cor_lien_menu']).'" 
    							title="accédez a la page'.stripslashes($values['nom_s_ong']).'">'.stripslashes($values['nom_s_ong']).' - '.$cle.' - '.$last_key.'</a></li>';
    							if($cle === $last_key)
    								{
    									echo'</ul>';
    								}
    						}								
    				}
    			echo'</span></a>';
    			echo'</li>';
    		}
    	echo"</ul></div>";
    Merci jreaux62 de ta participation qui me fait réfléchir et avancé.

  18. #18
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Sergio_zero Voir le message
    Merci jreaux62 de ta participation qui me fait réfléchir et avancé.

  19. #19
    Invité
    Invité(e)
    Par défaut
    Toujours mal placé :
    echo'</span></a>';

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. afficher des donnees argb avec direct3d
    Par d'Oursse dans le forum Windows
    Réponses: 2
    Dernier message: 29/07/2007, 17h22
  2. [XI] construire des sous-rapports avec un seul paramétre de saisie
    Par campia dans le forum SAP Crystal Reports
    Réponses: 14
    Dernier message: 15/06/2007, 14h56
  3. Comment gérer des sous ensembles avec des "enum" ?
    Par ogattaz dans le forum Langage
    Réponses: 2
    Dernier message: 30/05/2007, 10h29
  4. Problème d'affiche d'une list avec c:forEach
    Par lili2704 dans le forum Struts 1
    Réponses: 2
    Dernier message: 19/03/2007, 17h49
  5. [Debutant] Afficher des chaines unicodes avec println
    Par MichaelB dans le forum Langage
    Réponses: 2
    Dernier message: 10/01/2007, 19h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo