Page 1 sur 1

design aléatoire

Posté : 04 août 2005, 10:00
par eric1
bonjour à vous toutes et tous,

Voilà,je souhaiterais réaliser un design aléatoire grâce au CSS sans utiliser les cookies, voilà mon code :
<?php
$design = array("rouge","vert","bleu","violet");
shuffle($design);
?>

<html>
<head>

<?php

echo "<style type=\"text/css\">";
echo "@import url(".$design[0].".css);";
echo "</style>";

?>

</head>
<body>

</body>
</html>
Le problème est que lorsque je navigue d'une page à une autre, je change de design à chaque fois !!! Or ce n'est pas ce que je veux !! Je veux qu'il y ait un design DIFFERENT seulement lorsque je suis dans la même session !!

Mais je ne sais pas comment et où mettre la variable de session pour que cela marche.

J'espère avoir été clair au niveau de ma demande, pourriez -vous corriger mon code pour que clea marche svp ?. Merci pour vos aides.

Eric

P.S. : j'ai utilisé la fonction shuffle() pour mélanger de façon aléatoire mon tableau $design[/u]

Posté : 04 août 2005, 10:04
par ouckileou
tu testes : si la variable de session $tableau n'existe pas, tu la crées avec ta méthode
sinon tu n'y touches plus

Posté : 04 août 2005, 10:05
par Cyrano
Salut,
déjà, il faut savoir que la session en général utilise des cookies, même si tu ne les définis pas toi-même.

Ceci dit, pour avoir le même design d'une page sur l'autre, il faut que tu fixes la valeur de ta variable de session. Donc ce que tu peux faire, c'est à l'arrivée de l'internaute vérifier si une valeur de style est définie dans la variable de session:
- si oui, tu gardes la même;
- si non, tu mélanges le tout, tu secoues bien et tu définis un style aléatoire, et pour les autres pages, retour ligne précédente.

cela ne marche pas

Posté : 04 août 2005, 10:44
par eric1
sniff sniff ,cela ne marche pas,j'ai écrit cela ( oui oui je sais,je suis nul avec les variables de session :

<?php
$design = array("rouge","vert","bleu","violet");
if(isset($_SESSION['design'])){
session_start();
$css = $_SESSION['design'];
}
else
{
shuffle($design);
$css=$design[0];
}
?>

<html>
<head>

<?php

echo "<style type=\"text/css\">";
echo "@import url(".$css.".css);";
echo "</style>";

?>

</head>
<body>

</body>
</html>


que faire?

Eric

Posté : 04 août 2005, 10:49
par ouckileou
il te faut initialiser la session avec session_start() dans ta page :)

regarde ce tuto qui pourrait t'aider : http://www.phpdebutant.org/article69.php

question bete

Posté : 04 août 2005, 10:57
par eric1
cela marche toujours pas, en fait question bete :

j'ai ecrit ce code seulement pour ma page index.php (qui contient un menu par include() ) :
<?php
$design = array("rouge","vert","bleu","violet");
if(isset($_SESSION['design'])){
session_start();
$css = $_SESSION['design'];
}
else
{
shuffle($design);
$css=$design[0];
}
?>
Mais quand j'appelle les autres pages par le biais des variables par URL GET, dois-je également mettre ce bout de code ci-dessue à toutes mes pages pour que cela marche?

Pouvez vous me confirmer?

Si ce n'est pas le cas,alors,je ne comprends plus rien...

Eric ( je suis un peu perdu là... )

ouckileou, aides moi stp !

Posté : 04 août 2005, 11:01
par ouckileou
le session_start() doit être en tout premier (c'est marqué dans le tuto)
<?php
session_start();

if(isset($_SESSION['design'])) {
   $css = $_SESSION['design'];
} else {
   $design = array("rouge","vert","bleu","violet");
   shuffle($design);
   $css=$design[0];
}
?>
oui tu dois mettre ce code dans toutes tes pages, si un utilisateur ne passe pas par la page d'accueil sinon, il n'aura pas de style défini

Posté : 04 août 2005, 11:08
par Tho
à rajouter dans le else :

Code : Tout sélectionner

$_SESSION['design'] = $css;

Posté : 04 août 2005, 11:09
par ouckileou
à rajouter dans le else :

Code : Tout sélectionner

$_SESSION['design'] = $css;
exact ! :pouce:

toujours pas

Posté : 04 août 2005, 11:17
par eric1
merci ouckileou, mais cela ne marche toujours pas et pourtant j'ai mis ce code sur toute mes pages,je ne comprends plus RIEN ..
et meme avec start_session(); devant tout code !!

sniff sniff ,il change sans cesse de design...

Eric

Posté : 04 août 2005, 11:20
par ouckileou
pense à rajouter la modification signalée par l'invité aussi

affiche ta variable pour voir ce qu'il y a dedans, et éventuellement rajoute un test :
<?php
session_start();
echo 'design='.$_SESSION['design'];
if(isset($_SESSION['design']) && !empty($_SESSION['design'])) {
   $css = $_SESSION['design'];
} else {
   $design = array("rouge","vert","bleu","violet");
   shuffle($design);
   $css=$design[0];
   $_SESSION['design'] = $css;
}
?>

apparemment rien dans ma variable,pourquoi?

Posté : 04 août 2005, 11:34
par eric1
voilà j'ai recopié exactement le meme code que tu m'as donné et voilà ce qui est marqué :


sur la page index.php , j'ai :

Code : Tout sélectionner

design=
et sur les autres pages quand je navigue,cela me donne :

Code : Tout sélectionner

design=design=

comprends-tu ce qui se passe ?

Eric

Posté : 04 août 2005, 11:42
par ouckileou
non pas vraiment

j'ai corrigé le code avec la remarque de l'invité, je l'avais oublié, retente on en sait jamais...

et en passant : plutôt que de mélanger le tableau et de prendre la première cellule, ne serait-il pas plus simple de le garder fixe et de choisir un indice au hasard ? :roll:
à mon avis c'est plus optimisé ;)

indice aleatoire

Posté : 04 août 2005, 12:05
par eric1
cela marche,c'est ma faute,j'ai mal recopié ton code final !! MILLE EXCUSES.

Merci ouckileou pour ta patience et ton aide hyper précieuse !!