croco

  • Nombre de sujets
    5
  • Nombre de messages
    19
  • Nombre de commentaires
    Aucun
  • Nombre de news
    Aucune
  • Niveau en PHP
    Débutant

Ses dernières news

Aucune news

Ses derniers sujets sur les forums

forum
croco
le 31/07/2007 à 11:05
priorité de styles css ?
Bonjour,

J'essaie de comprendre comment sont appliqués les styles selon qu'on utilise des class ou id ou rien, et plus précisément dans quels cas un style défini en class ou id semble s'appliquer à un élément qui ne fait pas appel à class ou id.

Voici l'exemple :

Fichier html, avec 2 zones de test comportant des listes
<HTML>
<HEAD>
<link rel="stylesheet" href="style-typographie.css" type="text/css">
<!-- <link rel="stylesheet" href="style-sommairegauche.css" type="text/css" media="projection, screen, tv"> -->
<link rel="stylesheet" href="style-page.css" type="text/css" media="projection, screen, tv">

</HEAD

<BODY>

<div ID="zone-1">

ZONE 1
<p>
Liste zone 1
<ul>
<li>donn&eacute;e a</li>
<li>donn&eacute;e b</li>
<li>donn&eacute;e c</li>
</ul>
D&eacute;finition zone 1
<dl>
<dt>Titre A</dt>
<dd>le texte A de d&eacute;finition</dd>
</dl>

</div>

<div ID="zone-2">

ZONE 2
<p>
Liste zone 2
<ul>
<li>donn&eacute;e A</li>
<li>donn&eacute;e B</li>
<li>donn&eacute;e C</li>
</ul>
D&eacute;finition zone 2
<dl id="noir">
<dt>Titre B</dt>
<dd >le texte B de d&eacute;finition</dd>
</dl>

</div>
</BODY>
</HTML>


Et le fichier css :
#zone-1 {
position: absolute;
top: 25px;
left: 100px;
height: 300px;
width: 500px;
background-color:#FFC0C0;
}

#zone-2 {
position: absolute;
top: 350px;
left: 100px;
height: 400px;
width: 400px;
background-color:#C0C0FF;
}

/* définit une liste de définition avec le dd en noir */
dl#noir dd {
color:black;
}

/* définit le style général des listes non ordonnées */
ul, li .liste {
list-style-type: circle;
}

/* définit le style général des listes de définitions */
dt, dl {
font-weight:bold;
color:red;
}

dd {
font-weight:normal;
font-style:italic;


De cette manière cela fonctionne, j'ai bien mes listes de définition en rouge sauf le dd de la zone 2 qui est en noir grâce à #noir.

Mais si je place
dl#noir dd {
color:black;
en fin de css, il n'est plus pris en compte, alors que l'appel de cet ID est explicite avec <dl id="noir">.
Comment se fait-il qu'un style non explicitement appelé (.liste) soit prioritaire sur un style appelé ?
Quelle est la règle ?
C'est ici un exemple simple pour tester les effets, mon problème réel se situe dans un site dynamique de structure plus complexe, avec un style de liste défini pour des menus déroulants qui interragissent avec des listes faisant partie du contenu de certaines pages.
croco
le 17/07/2007 à 15:45
variable globale sous IE et FF
Bonjour,

Voici mon problème : la gestion de session utilisateur fonctionne sous FireFox mais pas sous IE(6 sp2).

Dans un fichier "login-verif.php servant à vérifier login et mot de passe saisis dans un formulaire d'identification, on teste la validité de ces éléments et si c'est bon la variable globale $S_SESSION['sessionlogin'] est initialisée.
Plus loins j'ai le code suivant :

<?php 
header("Location: SiteFR.php?page=login-okFR");
exit;
?>


"SiteFR.php" est le fichier structurant du site, avec CSS et include des différents éléments.
Dans ce cas, c'est le corps de page "login-okFR.php" qui est en "include". Ce corps de page contient juste l'information que le visiteur est bien connecté :

<?php 
echo "Connexion établie en tant que \"".$_SESSION['sessionlogin']."\"\n";
?>


$_SESSION['sessionlogin'] est bien sûr utilisée pour gérer l'accès à certaines rubriques et données.
Ceci fonctionne sous FireFox mais pas sous IE.
J'ai placé des echo sur la valeur de $_SESSION['sessionlogin'] à différents endroits. La valeur est toujours celle attendue avec FF, mais avec IE la valeur est bonne juste avant : header("Location: SiteFR.php?page=login-okFR"); , mais la variable est vide une fois SiteFR.php chargée (session_start(); étant en début de SiteFR.php).

J'ai testé sur 2 PC différents avec le même résultat.

Quelqu'un peut-il m'expliquer ce qui se passe ? Je suppose que s'il y avait une grossière erreur dans le code la variable globale serait perdue aussi avec FireFox.
croco
le 20/05/2007 à 23:49
problème d'include et de chemin
Bonjour,
Voilà mon problème :
J'avais un index.html automatiquement sur la vraie page structurant le site:
répertoire /site/squelette/site.php

site.php mettant en place les div nécessaire et incluant 5 contenus : le sommet, le sommaire à gauche, une marge droite, le pied de page et la corps de page, ceci par des 'include', constitués par des fichiers php situés eux aussi dans /site/squelette/.
Par exemple, pour la partie haute, cela donnait dans site.php le code suivant :
<?php 

if (!isset($_GET['page'])) {$page= 'introFR';} else {$page= $_GET['page'];}
// cette variable servant à appeler les contenus dynamiques pour le corps de page, le titre, le header...
.........

echo "<div id=\"haut\">\n";
include "ongletFR.php";
echo "</div>\n";

.........
?>


Et dans ongletFR.php se trouvait le code suivant (entre autres éléments qui ne posent pas problème et que je ne copie pas):

<?php 

include "../titres/FR/".$page."_titre.php";

?>


Tout cela fonctionnait mais je veux me débarrasser du renvoie de page et donc je déplace le fichier site.php à la racine, en le renommant index.php. Ceci implique bien sûr de faire les modifications nécessaires dans tous les fichiers liés, sans oublier ce qui est en include.
C'est aussi l'occasion de reprendre le code en systématisant les chemins définis sur la base de $_SERVER['DOCUMENT_ROOT'];

Le code devient, pour les mêmes éléments :
<?php 
$chemin_racine=$_SERVER['DOCUMENT_ROOT'];
.............
if (!isset($_GET['page'])) {$page= 'introFR';} else {$page= $_GET['page'];}
// cette variable servant à appeler les contenus dynamiques pour le corps de page, le titre, le header...
.........

echo "<div id=\"haut\">\n";
include $chemin_racine."/site/squelette/ongletFR.php";
echo "</div>\n";

.........
?>


et pour onglet.php
<?php 
include "".$chemin_racine."site/titres/FR/".$page."_titre.php";
?>


Or ceci renvoie l'erreur suivante :
Warning: main(): Unable to access /home/ischyrochampsa/www/site/titres/FR/_titre.php in /home/ischyrochampsa/www/site/squelette/ongletFR.php on line 29
C'est '_titre.php' qui est cherché au lieu de 'introFR_titre.php' : j'en déduis que onglet.php est interprété avant d'être inclus, donc il renvoie un chemin sans que la variable $page ait été intégrée au nom du fichier.
=> pourquoi ce changement de comportement par rapport au chemin relatif d'origine (quand site.php incluant onglet.php était dans le même répertoire) ?

En faisant passer la variable par un GET ça rentre dans l'ordre, mais j'aimerais savoir pourquoi le code devient interprété (donc que ça comporte comme si j'avais mis comme chemin www.mondomaine.fr/blabla....).

J'aurais d'autres questions mais je préfère revoir celles-ci à tête reposée.

Ses derniers messages sur les forums

forum
croco
le 31/07/2007 à 17:07
priorité de styles css ?
Merci, page très intéressante et qui peut éviter quelques tatonnements !

Cependant la règle
Les règles CSS située « après » dans une feuille de style l'emportent sur celles situées « avant »
ne semble pas correspondre à ce que je constate dans mon exemple pourtant simple, puisque mon style n'est plus pris en compte s'il est déclaré après.
Enfin, en pratique, le mieux est de systématiquement utiliser un style dans les éléments à afficher, ça évite d'avoir des doutes sur ce qui est appliqué par défaut...
croco
le 31/07/2007 à 11:05
priorité de styles css ?
Bonjour,

J'essaie de comprendre comment sont appliqués les styles selon qu'on utilise des class ou id ou rien, et plus précisément dans quels cas un style défini en class ou id semble s'appliquer à un élément qui ne fait pas appel à class ou id.

Voici l'exemple :

Fichier html, avec 2 zones de test comportant des listes
<HTML>
<HEAD>
<link rel="stylesheet" href="style-typographie.css" type="text/css">
<!-- <link rel="stylesheet" href="style-sommairegauche.css" type="text/css" media="projection, screen, tv"> -->
<link rel="stylesheet" href="style-page.css" type="text/css" media="projection, screen, tv">

</HEAD

<BODY>

<div ID="zone-1">

ZONE 1
<p>
Liste zone 1
<ul>
<li>donn&eacute;e a</li>
<li>donn&eacute;e b</li>
<li>donn&eacute;e c</li>
</ul>
D&eacute;finition zone 1
<dl>
<dt>Titre A</dt>
<dd>le texte A de d&eacute;finition</dd>
</dl>

</div>

<div ID="zone-2">

ZONE 2
<p>
Liste zone 2
<ul>
<li>donn&eacute;e A</li>
<li>donn&eacute;e B</li>
<li>donn&eacute;e C</li>
</ul>
D&eacute;finition zone 2
<dl id="noir">
<dt>Titre B</dt>
<dd >le texte B de d&eacute;finition</dd>
</dl>

</div>
</BODY>
</HTML>


Et le fichier css :
#zone-1 {
position: absolute;
top: 25px;
left: 100px;
height: 300px;
width: 500px;
background-color:#FFC0C0;
}

#zone-2 {
position: absolute;
top: 350px;
left: 100px;
height: 400px;
width: 400px;
background-color:#C0C0FF;
}

/* définit une liste de définition avec le dd en noir */
dl#noir dd {
color:black;
}

/* définit le style général des listes non ordonnées */
ul, li .liste {
list-style-type: circle;
}

/* définit le style général des listes de définitions */
dt, dl {
font-weight:bold;
color:red;
}

dd {
font-weight:normal;
font-style:italic;


De cette manière cela fonctionne, j'ai bien mes listes de définition en rouge sauf le dd de la zone 2 qui est en noir grâce à #noir.

Mais si je place
dl#noir dd {
color:black;
en fin de css, il n'est plus pris en compte, alors que l'appel de cet ID est explicite avec <dl id="noir">.
Comment se fait-il qu'un style non explicitement appelé (.liste) soit prioritaire sur un style appelé ?
Quelle est la règle ?
C'est ici un exemple simple pour tester les effets, mon problème réel se situe dans un site dynamique de structure plus complexe, avec un style de liste défini pour des menus déroulants qui interragissent avec des listes faisant partie du contenu de certaines pages.
croco
le 17/07/2007 à 18:04
variable globale sous IE et FF
php n'y ai pour rien ...

Certes, j'ai choisi de poster ce sujet dans la rubrique PHP parce que j'ai constaté la perte d'une valeur d'une variable gloable.

passe l'identifiant de session (SID) par l'url

Pourquoi pas, mais l'avantage d'une variable globale c'est d'être globale... et de ne pas avoir à être passée d'une page à l'autre par l'url.

En fait si depuis la page d'index depuis laquelle on clique sur un lien pour entrer dans le site proprement dit je définis href sur le chemin relatif (/chemin) ou l'url hébergeur (de type moncompte.herbergeur.fr/chemin) ce problème ne se produit pas, par contre si je définis href sur l'url de mon domaine (www.mondomaine.fr/chemin) le problème apparait. Avec donc le même paramétrage IE sur les cookies.

Je suis bien d'accord, le code php n'a rien à voir avec le navigateur, c'est bien pourquoi le constat de ce phénomène m'intrigue.

Ses derniers commentaires de news

Aucun commentaire de news

Ses derniers commentaires de sites

Aucun commentaire de sites

Ses derniers commentaires de wall

Aucun commentaire wall
LoadingChargement en cours