IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Visuel et liens aléatoires


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 101
    Points : 43
    Points
    43
    Par défaut Visuel et liens aléatoires
    Bonjour,

    Je suis en train de monter une maquette de test.
    En gros voilà à quoi ça ressemble schématiquement :



    Le principe : En arrivant sur l'index, une variable aléatoire permet d'avoir une image de fond correspondante (ça ça devrait pas poser problème)
    Quand on clique n'importe où, j'ai un bloc qui s'affiche avec des liens en fonction de cette variable aléatoire, donc ça pas de problèmes non plus, mais c'est pour l'affichage de ce bloc que je... bloque jutement ^^. Comment faire pour qu'il s'affiche n'importe où (en gros quand on clique dans les parties blanches) ?
    Également, quand on clique sur la phrase d'accroche (ou une image, je sais pas encore ce que ça va être), ça changera le visuel de fond, et donc le bloc de lien qui s'affichera. Le plus simple est de recharger cette page ? (en prenant en compte un paramètre différent de celui déjà présent, pour éviter de retomber sur le même).

  2. #2
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Tu vas devoir utiliser php (pour le coté aléatoire) et javascript pour l'évenement.
    L'attribut onclick(), qui affichera une fonction javascript prérempli par php(en fonction de la variable aléatoire).

    Aprés je sais pas si un background est soumi au onclick() à tester.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 101
    Points : 43
    Points
    43
    Par défaut
    J'ai réussi à faire mon bordel de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
    	$table = array("fond1","fond2","fond3","fond4");
    	$var_alea = rand(0,count($table)-1);
    ?>
     
    ...
     
    <a href="JavaScript:location.reload(true);"><img src="recharger.png" border="0" /></a>
     
    ...
     
    <div id="bg"><img src="portail_img/fonds/<?=$table[$var_alea]?>.jpg" alt="IKKS" width="100%"></div>
    En gros au chargement de la page, je prend une variable au hasard, qui correspond exactement au nom de l'image qui sera affichée en dessous.
    Et le clic sur l'image de rechargement permet de changer le fond (enfin c'est au hasard donc possible de retomber sur le même fond avec cette méthode).

    C'est un peu bidouillage mais ça marche très bien.

    Seul soucis, maintenant il faut que la 1ère fois où on arrive sur la page, que ça soit toujours le fond1 qui s'affiche en 1er. Ensuite si rechargement on peut avoir les autres.
    Vous voyez comment je pourrais faire ?

  4. #4
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Je ne voie que les variables de sessions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    <?php
                 session_start();//Obliger d'etre la premiere commande!
                 $table = array("fond1","fond2","fond3","fond4");
                 if(isset($_SESSION['var'])){ //si elle éxiste deja donc inclue une première fois
    	  $var_alea = rand(0,count($table)-1);
                 }
                 else{
                   $var_alea = 0;
                   $_SESSION['var'] = 0;
                }
    ?>
     
    ...
     
    <a href="javascript:location.reload(true);"><img src="recharger.png" border="0" /></a>
     
    ...
     
    <div id="bg"><img src="portail_img/fonds/<?=$table[$var_alea]?>.jpg" alt="IKKS" width="100%"></div>
    Comme tu le voie tu peux même stocker la dernière valeur et du coup faire un pseudo-aléatoire qui évite que 2 fois la même couleur s'affiche.
    Si par hzard ca te parle pas les sessions je t'invite à consulter les tutos ici, c'est là ou j'ai appris à m'en servir ^^.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 101
    Points : 43
    Points
    43
    Par défaut
    Parfait, j'ai compris le principe et ça marche bien.
    Je sais pas trop bien utiliser les sessions encore mais je vais m'y mettre.

    Merci bien !

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 101
    Points : 43
    Points
    43
    Par défaut
    Je reviens un peu sur mon problème. Si je veux avoir la 1ère fois "fond1", puis "fond2", puis "fond3", puis "fond4", puis re-"fond1", c'est faisable avec cette méthode ?

  7. #7
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Et bien oui, tu fait une incrémentation à chaque chargement de ta page, et si c'est le dernier aprés l'affichage (ou avant suivant comment tu travail) tu remet à la valeur initial l'incrément.

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Citation Envoyé par SirDarken Voir le message
    Et bien oui, tu fait une incrémentation à chaque chargement de ta page, et si c'est le dernier aprés l'affichage (ou avant suivant comment tu travail) tu remet à la valeur initial l'incrément.
    Plutôt qu'utiliser une condition, je verrais plutôt un modulo :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    $var = (($var+1) % (count(table)-1))
    C'est un peu plus concis

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 101
    Points : 43
    Points
    43
    Par défaut
    Oula "modulo", c'est quoi cette bête là ?

    J'ai tenté avec modulo mais j'ai l'impression que ça boucle à l'infini

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    101
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 101
    Points : 43
    Points
    43
    Par défaut
    J'ai refais un truc à la "bourrinage" :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    if((!isset($_SESSION['var']))||($_SESSION['var'] == 0)){
    		$var_alea = 'ikks-women';
    		$_SESSION['var'] = 1;
    	}elseif($_SESSION['var'] == 1){
    		$var_alea = 'ikks-men';
    		$_SESSION['var'] = 2;
    	}elseif($_SESSION['var'] == 2){
    		$var_alea = 'ikks-very-girls';
    		$_SESSION['var'] = 3;
    	}elseif($_SESSION['var'] == 3){
    		$var_alea = 'ikks-the-boys';
    		$_SESSION['var'] = 0;
    	}
     
    ...
     
    <div id="bg"><img src="portail_img/fonds/<?=$var_alea?>.jpg" alt="IKKS" width="100%" border="0"></div>
    Techniquement ça marche mais bon, j'imagine que le truc est pas super optimisé.

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur
    Inscrit en
    Juin 2006
    Messages
    645
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Juin 2006
    Messages : 645
    Points : 709
    Points
    709
    Par défaut
    Le modulo, c'est une fonction qui au couple (a, b) d'entiers associe le reste r de la division euclidienne de a par b. On le note en PHP "%".

    Mathématiquement, on écrit :
    a = b * q + r où q est un entier.

    Ainsi (on prend par exemple ici b = 4) :
    0 % 4 = 0 (0 = 0 * 4 + 0)
    1 % 4 = 1 (1 = 0 * 4 + 1)
    2 % 4 = 2 (2 = 0 * 4 + 2)
    3 % 4 = 3 (3 = 0 * 4 + 3)
    4 % 4 = 0 (4 = 1 * 4 + 0)
    5 % 4 = 1 (5 = 1 * 4 + 1)
    ...
    10 % 4 = 2 (10 = 2 * 4 + 2)

    Une petite bête qui rend donc bien des services dans les boucles ou les incrémentations !

  12. #12
    Membre émérite Avatar de SirDarken
    Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Services de proximité

    Informations forums :
    Inscription : Février 2004
    Messages : 897
    Points : 2 276
    Points
    2 276
    Par défaut
    Je ferai plutôt cela moi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <?php
    session_start();
    $montableau[0] = 'ikks-women';
    $montableau[1] = 'ikks-men';
    $montableau[2] = 'ikks-very-girls';
    $montableau[3] = 'ikks-the-boys';
    $var_alea = '';
    if(isset($_SESSION['var'])){//Si la session existe.
    	$var_alea = $montableau[$_SESSION['var']];//On assigne $var_alea suivant le tableau.
    	if($_SESSION['var'] == 3){//Si on est en fin de tableau on reset.
    		$_SESSION['var'] = 0;
    	}
    	else{
    		$_SESSION['var']++; // ou bien $_SESSION['var'] = $_SESSION['var'] + 1;
    	}
    }
    else{// aucune variable n'existe on la crée à 1 (pour qu'au prochain on affiche le second)
    	$_SESSION['var'] = 1;
    	$var_alea = $montableau[0];//On affiche le 1 alirs le 0 dans le tableau.
    }
    Tu peux biensur mettre 15 design différent faut juste changer les bonnes variables.
    Avantage tu comprend au premeir coup d'oeil ce que tu a fait 15 mois plus tard ^^.

Discussions similaires

  1. afficher plusieures images + liens aléatoire
    Par smed79 dans le forum Langage
    Réponses: 11
    Dernier message: 31/05/2012, 10h32
  2. Redirection lien aléatoire
    Par eiffel74 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 25/08/2009, 02h16
  3. Petit script d'images aléatoires avec lien
    Par Syntax-ERROR dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 09/01/2007, 22h43
  4. lien aléatoire + ouverture en popup centrée
    Par fred_station dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 13/10/2005, 11h39
  5. [Tableaux] Images aléatoire et lien
    Par antoinelavigne dans le forum Langage
    Réponses: 7
    Dernier message: 17/09/2005, 21h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo