5546 sujets

Sémantique web et HTML

Bonjour

Je suis entrain de faire un menu de navigation pour un site perso qui fonctionne en position absolute et plus un petit code javascript pour le faire apparaitre uniquement au passage de la souris, je l'ai également placer en php avec un petit appel include : <?php include("aside.php"); ?>
voici le menu : aside.php

<aside onMouseOver="show('div1')" onMouseOut="hide('div1')">

 <div id="div1">
 <a href="globalSurveillance_Part-I.php#gs01"><img src="images/GBI.jpg" width="400" height="289" /></a>
 <a href="globalSurveillance_Part-I.php#gs02"><img src="images/FPA.jpg" width="400" height="289" /></a>
 </div>

<div id="div2">
.................../..
 </div>
</aside>v1"


Mais le truc c'est que j'ai d'autre pages à faire avec ce système.
Mon idée serait de placer TOUTES mes images dans ce fichier, et de faire en sorte que "div1" soit
appelé par la "1ere page", "div2" appelé par la "2eme" page etc.

Ou alors faut t'il concevoir tout cela autrement, en remettant ce code dans la page pricipale.

merci de vos idées
Bonjour,

Si tu utilises un base MySQL, le plus simple est de créer une table "menu_items" avec les champs :
menu_items_id
page
href
src
width
height
order

(order indique l'ordre de l'item sur la page)

et ensuite en début de aside.php, une requête ordonnée par "order ASC",
avec page = $_SERVER['PHP_SELF']
et ensuite parcourir les lignes trouvées pour créer les différentes lignes du menu

du coup on n'a plus besoin de div1 div2 etc, ce sera toujours la même

Ensuite pour se faire plaisir, un petit panneau d'admin pour organiser tranquillement cette table, ou bien aller mettre les mains dans PHPMyAdmin, sympa aussi.

Qu'en penses-tu ?
merci bcp pour la réponse

malheureusement je ne suis pas assez calé en base de donné MySql, alors pour le moment
j'ai trouvé une solution "à mon niveau" qui consiste, en l’occurrence à renommer le fichier aside.php
en menu01.php, menu02.php etc. et à "distribuer" mes includes dans les pages ad hoc.
je me disait qu'un seul fichier .php serait bien, mais je n'ai pas assez de bagage technique pour le réaliser, mais il faut que je travaille les bases de données un de ces 4

Sinon vous pouvez regarder le menu en question ici : http://nahkira.free.fr

merci
petit up !

j'ai cliqué sur mon lien pour vérif. il me dit qu'il n'est pas valide ?

bon, sion copier/coller : nahkira.free.fr
OK, si pas de baseMySQL, on peut utiliser les tableaux PHP (array)
Dans aside.php :

1 - On récupère le nom de la page courante dans la variable $page

$page = substr(strrchr($_SERVER['PHP_SELF'],"/"),1);

2 - On crée le tableau à deux dimensions qui contient les paramètres du menu pour chaque page :


switch($page) {
	case 'page01.php':
	$tableau['lien'][] 	= 'globalSurveillance_Part-I.php#gs01';
	$tableau['image'][]	= 'image/GBI.jpg';
	$tableau['height'][]= '400';
	$tableau['width'][]	= '289';
	
	$tableau['lien'][] 	= 'globalSurveillance_Part-I.php#gs02';
	$tableau['image'][]	= 'image/FPA.jpg';
	$tableau['height'][]= '400';
	$tableau['width'][]	= '289';
	break;
	
	case 'page02.php':
	$tableau['lien'][] 	= 'autre_page1.php#gs01';
	$tableau['image'][]	= 'image/image.jpg';
	$tableau['height'][]= '500';
	$tableau['width'][]	= '300';	
	break;
	
	case 'page03.php':
	$tableau['lien'][] 	= 'autre_page2.php#gs01';
	$tableau['image'][]	= 'image/image2.jpg';
	$tableau['height'][]= '400';
	$tableau['width'][]	= '200';
	
	$tableau['lien'][] 	= 'autre_page3.php#gs01';
	$tableau['image'][]	= 'image/image3.jpg';
	$tableau['height'][]= '400';
	$tableau['width'][]	= '200';
	
	$tableau['lien'][] 	= 'autre_page4.php#gs01';
	$tableau['image'][]	= 'image/image4.jpg';
	$tableau['height'][]= '400';
	$tableau['width'][]	= '200';
	break;
	}

Dans cet exemple, on a 2 liens pour la page 01, 1 lien pour la page 02 et 3 liens pour la page 03

3 - ensuite, toujours dans aside.php, on affiche les liens de la page ainsi :

for ( $i=0; $i!=sizeof($tableau['lien']); $i++){
?>	
 <a href="<? echo $tableau['lien'][$i];?>"><img src="<? echo $tableau['image'][$i];?>" width="<? echo $tableau['width'][$i];?>" height="<? echo $tableau['height'][$i];?>" /></a>	
<? ... suite du script éventuellement ... 


On pourrait mettre dans une page séparée la boucle switch qui affecte les valeurs des menus de chaque page, par exemple items_php qu'on appellerait dans aside.php après avoir récupéré le nom de la page courante :
include('items.php');

C'est une alternative à la base de données, sinon on peut aussi enregistrer les paramètres des menus de chaque page dans un fichier texte simple qu'on lirait dans aside.php, pour récupérer ceux de la page courante.

J'ai vérifié le script en local, c'est bon.

Qu'en penses-tu ?
Modérateur
C'est une option plausible, par contre deux détails

il est plus logique de structurer le tableau ainsi:

$tableau[] = array(
 'lien' => 'globalSurveillance_Part-I.php#gs01',
 'image' => '…',
 'height' => 400,
  'width' => 200,
);
$tableau[] = array(
 'lien' => 'autre_lien.html',
 'image' => '…',
 'height' => 400,
  'width' => 200,
);


Et le plus propre serait de passer par un fichier de descriptions, JSON, XML, INI, etc.
kustolovic a écrit :

il est plus logique de structurer le tableau ainsi:

$tableau[] = array(
 'lien' =&gt; 'globalSurveillance_Part-I.php#gs01',
 'image' =&gt; '…',
 'height' =&gt; 400,
  'width' =&gt; 200,
);
$tableau[] = array(
 'lien' =&gt; 'autre_lien.html',
 'image' =&gt; '…',
 'height' =&gt; 400,
  'width' =&gt; 200,
);



Des clés en français mélangées avec des clés en anglais, les liens mélangés avec le visuel (les images), le tout sans hierarchie : j'aimerais bien que tu développes le "plus logique". Smiley lol

kustolovic a écrit :

Et le plus propre serait de passer par un fichier de descriptions, JSON, XML, INI, etc.


Si on n'a pas besoin de partager le fichier entre plusieurs langages ça n'a rien de "plus propre" d'utiliser un format tiers plutôt qu'une structure de données native du langage dans lequel on va utiliser les données.
Modérateur
le nom des clés je les ai reprises telles quelles, je parlais au niveau de la structure: au lieu d'avoir un tableau d'images un tableau de largeurs etc. on a un tableau d'items qui ont chacun une image, une largeur etc.