8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

je suis actuellement en train de me refaire un site, et


J'ai trois problemes:

- les pages n'apparaissent pas toujours quand je clique sur les liens du menu. Je dois parfois recliquez sur le lien

plusieurs fois avant qu'il ne se décide à afficher la page.

- j'ai un bug avec Thickbox, section "sketches", la première fois qu'on clique sur une images elle s'affiche en

double (superposées). si on la ferme puis qu'on reclique dessus, l'affichage est redevenu normal.
Ce que je comprends encore moins c'est que sur la page 3D, qui est un copié-collé de l'autre, y'a pas ce bug..

- quand on clique sur les liens vers les pages qui utilisent Thickbox, la hauteur de l'interligne du menu est

modifiée...
je pensais que c'était à cause de thickbox.css qui redéfinissait l'interligne... mais il n'y a qu'un seul

"line-height" dans ce css (je ne sais d'ailleurs pas à quoi il sert exactement), j'ai essayé en le modifiant mais ça

ne change rien.



voilà l'adresse du site test: http://smuggledpixels.free.fr

(seul les liens 3D et Sketches fonctionnent)


Mon css pour l'interface, etc:

body {
margin: 0;
padding:0;
position: absolute;
width: 100%;
height: 100%;
font-family: verdana, arial, sans-serif;
background-color: #3A2C31;
}

.conteneur {
margin-left: auto;
margin-right: auto;
height: 737px;
width: 957px;
overflow:hidden;
}

.gauche {
position:absolute;

width: 385px;
height: 737px;
background-color: #3A2C31;
}

.menu {
position: absolute;
margin-left: 385px;
width: 187px;
height: 737px;
background-image: url(backgrd_menu.jpg);
}

.droite {
position: absolute;
margin-left: 572px;
width: 385px;
height: 737px;
background-color: #3A2C31;
/*padding: 10px;*/
}

p.fontmenu { 
font-family:"MS Sans Serif";
font-size: 12pt ;
letter-spacing: 3px;
text-align:center;
line-height: 25px;    <--- valeur d'interligne que je souhaite avoir pour le menu
}

a:link, a:visited, a:active {
        color:#5E5657;
		text-decoration: none ;
}

a:hover {
        color:#918A8B;
		text-decoration: none ;
}

.menudecal {
margin-top: 223px;
width: 187px;
}

img
{
border:none;
}



et l'index:

[modifié: voir plus bas]


voilà, c'est peut-être un peu crado tout ça, je sais pas, mais je connaissais rien y'a quelques jours, donc je suis encore un peu perdu, c'est plus du bricolage qu'autre chose :|
Au passage, merci à ceux qui publient les tutos sur ce sites, ils m'ont été bien utiles!
Modifié par JSP (19 Jan 2007 - 16:40)
JSP a écrit :
les pages n'apparaissent pas toujours quand je clique sur les liens du menu. Je dois parfois recliquez sur le lien

Quand ça se produit, il charge bien une page HTML complète, mais dont les blocs div.gauche et div.droit sont vides. Le problème ne vient ni du HTML ni du CSS, mais probablement de la manière dont les contenus sont appelés, donc du code PHP qui tu as écrit ou utilisé.

Edit : ah d'accord... quand le contenu se charge bien dans ces deux div, tu te retrouves avec une page contenant 3 doctypes, 3 éléments html, 3 éléments body, etc.

Je connais quelqu'un qui n'a rien compris au principe des include en PHP. Smiley lol

As-tu suivi le tutoriel sur les include en PHP proposé sur Alsacréations ? Si oui, une petite précision : le titre « Inclure un fichier dans un autre, grâce à CSS et PHP » ne veut pas dire qu'on va inclure une page web entière à l'intérieur d'une zone déterminée d'une page « globale ». Cela signifie que l'on va inclure le code HTML d'un fichier à un endroit précis dans le code HTML d'un autre fichier.

Si on veut, par cette méthode, obtenir une page web qui tiendra la route, peut-on se permettre d'inclure, en plein milieu d'une page HTML correctement formée (doctype, balises html, head et body), le code complet d'une autre page HTML complète (avec là encore doctype, balises html, head et body) ?

Si la réponse n'est pas « évidemment, non ! », tu as quelques soucis à te faire, et des notions de syntaxe HTML à reprendre. Smiley smile

Un conseil pour finir : le PHP est un langage de programmation qui permet (principalement) de générer du code HTML. Cela signifie que lorsque tu obtiens une page « bizarre », le premier réflexe à avoir c'est : quel est le code généré par mon script PHP pour cette page ?
Modifié par Florent V. (18 Jan 2007 - 21:27)
Merci beaucoup Florent,

a écrit :
Je connais quelqu'un qui n'a rien compris au principe des include en PHP.


haha effectivement, en fait, j'ai l'impression que je ne me suis pas assez détaché du fonctionnement des frames, j'ai envisagé l'include PHP exactement de la même manière, et ça se voit Smiley lol

Je vais modifier ça et voir ce que ça donne!
salut,

bon j'ai modifié l'index et les html inclus pour éviter les redondances de balises.
La mise en page est apparemment stable maintenant.

Mais par contre le problème de l'inclusion avec php persiste (c'est ptêtre moi le problème Smiley lol ). Ca se charge une fois sur deux...
voilà le code de l'index:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Jasp Portfolio</title>
<script type="text/javascript" src="thickbox/jquery.js"></script>
<script type="text/javascript" src="thickbox/thickbox.js"></script>
<style type="text/css" media="all">@import "thickbox/thickbox.css";</style>
<style type="text/css" media="all">@import "div.css";
</style>
</head>

<body>
<div class="conteneur">
	<div class="gauche">
		<?php 
		if (!isset($_GET['page'])) $page= 'vide'; 
		 switch($page)
		{
		case '3D': include ('3D/3D_gauche.htm');break;
		case 'sketches': include ('sketches/sketches_gauche.htm');break;
		case 'reel': include ('vide.htm');break;
		case 'misc': include ('vide.htm');break;
		case 'links': include ('vide.htm');break;
		case 'who': include ('vide.htm');break;
		case 'vide': include ('vide.htm');break;
		
		} 
		?>
	</div>
	<div class="menu">
		<div class="menudecal">
		<a href="index.php?page=3D"><p class="fontmenu">3D stuffs</p></a>
		<a href="index.php?page=sketches"><p class="fontmenu">concept sketches</p></a>
		<a href="index.php?page=reel"><p class="fontmenu">showreel</p></a>
		<a href="index.php?page=misc"><p class="fontmenu">miscellaneous</p></a>
		<a href="index.php?page=links"><p class="fontmenu">links</p></a>
		<a href="index.php?page=who"><p class="fontmenu">/who</p></a>
		</div>
	
	</div>
	<div class="droite">
		<?php 
		if (!isset($_GET['page'])) $page= 'vide'; 
	 	switch($page)
		{
		case '3D': include ('3D/3D_droite.htm');break;
		case 'sketches': include ('sketches/sketches_droite.htm');break;
		case 'reel': include ('vide.htm');break;
		case 'misc': include ('vide.htm');break;
		case 'links': include ('vide.htm');break;
		case 'who': include ('vide.htm');break;
		case 'vide': include ('vide.htm');break;
		}
		?>
	</div>
</div>
</body>
</html>



et le code html chargé (enfin les fois où il est bien inclu en tout cas) se résume à ça:

<div align="center">
<a href="sketches/paysage02_web.jpg" class="thickbox" rel="environments"><img src="sketches/paysage02_tn.jpg"/></a> 
</div>

Modifié par JSP (19 Jan 2007 - 16:27)
Au final, j'ai utiliser le code du tutoriel sur la fonction Include présent sur ce site, à savoir un truc de ce genre pour les div gauche et droite:

<?php 
		$pages=array(
		   '3D'=>'3D/3D_gauche',
		   'sketches'=>'sketches/sketches_gauche',
		   'misc' => 'misc/misc_gauche',
		);
		if(isset($_GET['page']) && array_key_exists($_GET['page'],$pages))
		   include $pages[$_GET['page']].'.htm';
		else
		   include 'vide.htm';
?>


Tout est rentré dans l'ordre.

Mais je ne comprends pas vraiment pourquoi le code de mon précédent message ne fonctionnait pas, et ça m'énerve :]
Alors si quelqu'un passe par ici, et peut me mettre sur le voie, je le remercie par avance.
Modifié par JSP (20 Jan 2007 - 23:15)