2015-12-24 1 views
3

Essaie d'obtenir un arrière-plan aléatoire entre deux images.Fond aléatoire PHP/CSS

Le PHP (Avant DOCTYPE index.php):

<?php 
$bg = array('back1.jpg', 'back2.jpg'); // array of filenames 
$i = rand(0, count($bg)-1); // generate random number size of the array 
$selectedBg = "$bg[$i]"; // set variable equal to which random filename was chosen 
?> 

CSS:

body { 
    height: 100%; 
    margin: 0; 
    color: #474747; 
    font: 13px/23px 'Exo 2', sans-serif; 
    min-width: 1186px; 
    background: url(../img/<?php echo $selectedBg; ?>) no-repeat 50% 50%; 
    background-size: cover; 
    background-attachment: fixed; 
} 

Le problème est que l'arrière-plan n'est pas réglé sur l'une des images!

EDIT:

Ive déplacé à une méthode PHP completley bien qu'il erreurs:

Line : 5, Error type : 4 
Message : syntax error, unexpected '(', expecting variable (T_VARIABLE) or '$' 

code:

<?php 
    $bg = array('back1.jpg', 'back2.jpg'); // array of filenames 
    $i = rand(0, count($bg)-1); // generate random number size of the array 
    $selectedBg = "$bg[$i]"; // set variable equal to which random filename was chosen 
    $('body').css({      'background-image': 'url(img/' +  echo $selectedBg + ')'   }); 
?> 
+0

ce '$ ('corps'). Css ({...' est JS/jQuery et ne fait pas partie de votre PHP et n'est pas du code PHP, c'est pourquoi vous êtes obtenir cette erreur. –

+0

Je sais, je l'ai déplacé dans mon côté script des choses et il ne l'a toujours pas réglé – Robinlemon

+0

Je ne sais pas ce que vous me dites ici. J'ai mentionné que vous avez du code Javascript/jQuery dans PHP et ça ne marche pas comme ça; par conséquent, l'erreur de syntaxe. Vous devez séparer votre JS de votre PHP et vous assurer que la bibliothèque jQuery est chargée. PAR EXEMPLE. http://api.jquery.com/html/ –

Répondre

1

Votre fichier css devrait avoir quelque chose comme ça dans ce

.one { 
background: url(../img/back1.jpg); 
} 

.two { 
background: url(../img/back2.jpg); 
} 

.three { 
background: url(../img/back3.jpg); 
} 

Et votre HTML devrait avoir

<body class="<? echo $img ?>"> 

Et puis votre PHP besoin seulement de définir $img comme onetwo ou three

<? 
$list = array('one', 'two', 'three'); 
$i = array_rand($list); 
$img = $list[$i]; 
?> 
+0

Vous exposeriez tous vos fichiers d'image sur le Web n'est-ce pas? avec PHP array_rand() vous en gardez toujours confidentiel. Corrigez-moi si j'ai tort, s'il-vous plait. –

1

Qu'est-ce que vous cherchez serait être

array_rand(); 

PHP Manual : http://php.net/manual/en/function.array-rand.php

pour votre PHP:

<?php 
$bg = array('back1.jpg', 'back2.jpg'); // array of filenames 
$i = array_rand($bg); // generate random number size of the array 
$selectedBg = $bg[$i]; // set variable equal to which random filename was chosen 
?> 
+0

Aha, je devrais clarifier! Le nom des images est stocké juste l'arrière-plan n'est pas défini sur l'image. – Robinlemon

+1

La manière la plus propre de le faire serait de séparer les classes pour chaque arrière-plan, puis de simplement randomiser la classe avec PHP au lieu de modifier physiquement le CSS avec lui. – JacobPariseau

+0

@jacob Expliquer s'il vous plaît – Robinlemon