28120 sujets

CSS et mise en forme, CSS3

Bonjour a tous,

Je cherche le moyen de pouvoir charger directement d'autres feuilles de style dynamiquement pendant la navigation. Smiley sweatdrop

Je m'explique : Si par exemple un utilisateur se promene sur mon site, et qu'il n'aime pas trop les couleurs tout betement, et bien il puisse cliquer sur un lien qui chargerait automatique une autre feuille de style en ne bougeant en rien l'html ( vous me direz, c'est le but du CSS Smiley biggol )

J'ai pensé à recharger une autre page html "copiée collée" de la premiere, avec l'appel d'une feuille de style differente, mais c'est bidon et pas du tout professionel.

Je vous remercie d'avance pour vos reponses Smiley cligne
Modifié par kamatra (15 Nov 2007 - 19:03)
A dire vrai, j'ai quelques soucis avec le php. J'ai suivi toute la procedure a la lettre, ai fait mes propres changements partout, mais j'ai les messages d'erreurs suivants :


Notice: Undefined variable: PHP_SELF in c:\documents and settings\administrateur\bureau\site professionel\styles\styleswitcher.inc.php on line 13

Warning: Cannot modify header information - headers already sent by (output started at c:\documents and settings\administrateur\bureau\site professionel\styles\styleswitcher.inc.php:13) in c:\documents and settings\administrateur\bureau\site professionel\styles\styleswitcher.inc.php on line 17


Je n'arrive pas à les résoudre,
Need help Smiley bawling
Modifié par kamatra (13 Nov 2007 - 22:06)
Salut,

1/as tu mis un $ devant PHP_SELF dans ton code?

2/ pour la seconde erreur il semble que tu fais un affichage trop tot.

si tu emploie une fonction header tu ne dois pas produire d'affichage avant d'utiliser cette fonction.

ton header() qui fais la redirection doit se trouver aussi haut dans ta page que possible.

avant tous echo ou balisage html. même avant <html>

pascal
Modifié par CPascal (13 Nov 2007 - 23:43)
Salut,

en fait je pense que la 2ème erreur découle de la 1ère qui a généré un affichage html avant le header Smiley cligne .
Salut Heyoan et CPascal,

Pour le $ devant le PHP_SELF c'est OK.
Pour la seconde mon header est avant l'html, je vous donne le code ( c'est celui du tuto que j'ai reutilisé et modifié )


<?php
header('Content-type: text/html; charset=iso-8859-1');
require_once './styles/styleswitcher.inc.php';
?>
<!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" xml:lang="fr" lang="fr">


C'est c'est dans la page ou je veux faire le changement dynamique, puis plus bas :

<div id="menu_g_l">
<a href="<?php echo $actuel; ?>?style=defaut">&gt; Theme1</a><br />
<a href="<?php echo $actuel; ?>?style=style1">&gt; Theme2</a><br />
<a href="<?php echo $actuel; ?>?style=style2">&gt; Theme3</a><br />
</div>


et mon styleswitcher modifié dans le dossier styles comme l'a dit le tuto :


<?php
function construire_url($dossier)
{
	return 'http://www.kamatra-creations.fr/styles/' . htmlspecialchars($dossier) . '/style.css';
}

$dossiers = array(
	'defaut',
	'style1',
	'style2'
);

$actuel = htmlspecialchars($PHP_SELF);

if(in_array($_GET['style'], $dossiers, true))
{
	setcookie('style', $_GET['style'], time() + (365 * 24 * 3600));
	$url = construire_url($_GET['style']);
}

else if(in_array($_COOKIE['style'], $dossiers, true))
{
	$url = construire_url($_COOKIE['style']);
}

else
{
	$url = construire_url($dossiers[0]);
}
?>


Je ne trouve pas d'erreur de syntaxe, ou peut etre que vous ca vous sautera aux yeux Smiley sweatdrop
Re',

tu pourrais essayer de remplacer $PHP_SELF par $_SERVER['PHP_SELF'] ... ce qui donne :
$actuel = htmlspecialchars($_SERVER['PHP_SELF']);

Et je voulais dire qu'il n'y a qu'une erreur, la seconde vient de ce qu'un Warning a été généré avant le header Smiley cligne .

A+
Modifié par Heyoan (14 Nov 2007 - 13:31)
J'ai fait la modif mais j'ai le message suivant maintenant :

Notice: Undefined index: style in c:\documents and settings\administrateur\bureau\site professionel\styles\styleswitcher.inc.php on line 15


Voila les nouveaux codes sur les pages :

le styleswitcher ( la ou il y a l'erreur apparament) :

<?php
function construire_url($dossier)
{
	return 'http://www.kamatra-creations.fr/styles/' . htmlspecialchars($dossier) . '/style.css';
}

$dossiers = array(
	'defaut',
	'style1'
);

$actuel = htmlspecialchars($_SERVER['PHP_SELF']);

if(in_array($_GET['style'], $dossiers, true))
{
	setcookie('style', $_GET['style'], time() + (365 * 24 * 3600));
	$url = construire_url($_GET['style']);
}

else if(in_array($_COOKIE['style'], $dossiers, true))
{
	$url = construire_url($_COOKIE['style']);
}

else
{
	$url = construire_url($dossiers[0]);
}
?>


Ma page php ou je veux lancer le script :


<?php
header('Content-type: text/html; charset=utf-8');
require_once './styles/styleswitcher.inc.php';
?>
<!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" xml:lang="fr" lang="fr">
	<head>
		<link rel="stylesheet" media="screen, projection" type="text/css" id="css" href="<?php echo $url; ?>" />
			<title>Kamatra Cr&eacute;ations Index</title>
				<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
				<meta http-equiv="Content-Style-Type" content="text/css" />
				<meta http-equiv="Content-Language" content="fr" />
				<meta name="Author" content="Kamatra Creations">
				<meta name="Copyright" content="Kamatra Creations">
				<meta name="robots" content="all" />
	</head>


Je précise que j'ai mis le <link rel="stylesheet" media="screen, projection" type="text/css" id="css" href="<?php echo $url; ?>" /> sur toutes les pages, j'ai peut etre mal fait .. meme si c'est pas lié on sait jamais je prefere le dire.

et ensuite le script php pour les liens qui devront changer les feuilles de styles :

<a href="<?php echo $actuel; ?>?style=defaut">&gt; Theme</a><br />
<a href="<?php echo $actuel; ?>?style=style1">&gt; Theme1</a><br />


Voila j'espere que vous pourrez m'aiguillez,
merci d'avance
A tout hasard tu pourrais essayer d'installer WAMP5 en laissant la config par défaut... Bien qu'il n'y ait pas de raison que ça ne marche pas avec EasyPHP (si ce n'est un paramétrage particulier)...
Je n'ai rien paramétrer de spécial, et ca ne marche pas :'( je ne comprends pas pourquoi, tout concorde normalement, j'ai tout suivi a la lettre, je verrai demain une autre facon de le faire si c'est possible en javascript ou alors en suivant un autre script PHP.

J'aurai quelques questions a te poser :

- conaitrais tu un bon script de verification de formulaire en php ou JS ?
- J'en ai un pour le moment mais il ne marche pas, faut t'il qu'il y ai seulement la page de verif en .php ou celle ou il y a le formulaire aussi ?
- Et finalement, pourrais tu m'indiquer comment tu a fait pour mettre en page un systeme de grossissement des lettres comme sur ton site si ca ne te derange pas ? ca serait cool Je vais en avoir besoin pour mon futur projet, ca me serait fort utile
Smiley cligne Smiley murf
Modifié par kamatra (15 Nov 2007 - 00:58)
kamatra a écrit :
Je n'ai rien paramétrer de spécial, et ca ne marche pas
Ce que je voulais dire c'est que cela venait peut-être du paramétrage par défaut d'EasyPHP (et c'est certainement le cas Smiley cligne ) mais de toutes façons ce logiciel n'est plus maintenu depuis longtemps et je pense que tu devrais te mettre à WAMP Smiley langue ...

Sinon, après reflexion, puisque $PHP_SELF et $_GET['style'] génèrent un warning c'est sûrement parce que dans php.ini la directive register_globals est à off, ce qui est une bonne chose (pour plus d'infos, voir par exemple Utilisation des variables super-globales) mais oblige à déclarer toutes les variables. Le code suivant devrait fonctionner :

styleswitcher.inc.php
<?php
function construire_url($dossier)
{
	return 'http://www.kamatra-creations.fr/styles/' . htmlspecialchars($dossier) . '/style.css';
}

$dossiers = array(
	'defaut',
	'style1',
	'style2'
);

$actuel = htmlspecialchars($_SERVER['PHP_SELF']);

$new_style = (isset($_GET['style'])) ? $_GET['style'] : '';
$cookie_style = (isset($_COOKIE['style'])) ? $_COOKIE['style'] : '';

if(in_array($new_style, $dossiers, true))
{
	setcookie('style', $new_style, time() + (365 * 24 * 3600));
	$url = construire_url($_GET['style']);
}
else if(in_array($cookie_style, $dossiers, true))
{
	$url = construire_url($cookie_style);
}
else
{
	$url = construire_url($dossiers[0]);
}
?>


Pour ce qui est de la vérification d'un formulaire je trouve que celui-ci explique bien le fonctionnement : Formulaire de contact. Par contre la question PHP ou Javascript ne se pose pas comme ça : la vérification doit forcément être faite en PHP et on rajoute éventuellement une surcouche Javascript Smiley murf .

Et pour l'agrandissement des lettres, comme ça n'a rien à voir avec ce topic, tu n'as qu'à me donner ton email par MP et je t'enverrai les sources...

A+ Smiley smile
Modifié par Heyoan (15 Nov 2007 - 05:42)
Je vais tester le code que tu m'a donné Smiley murf , merci pour le temps passé a m'aider deja Smiley biggrin

Et je te mp pour les lettes aA Smiley cligne