2012-02-08 31 views
5

Tôi có một bộ quảng cáo hình ảnh mà tôi muốn thay đổi thứ tự hàng ngày vào lúc nửa đêm.Thay đổi thứ tự của hình ảnh lúc nửa đêm

Về cơ bản để một ngày nào đó nó sẽ được như thế này

<img src="image1"> 
<img src="image2"> 
<img src="image3"> 
<img src="image4"> 

và ngày hôm sau nó sẽ giống như thế này

<img src="image4"> 
<img src="image1"> 
<img src="image2"> 
<img src="image3"> 

Làm thế nào tôi có thể thực hiện điều này với javascript, jquery hoặc php. Không quan tâm đến ngôn ngữ tôi sử dụng, chỉ cần tìm ra ngôn ngữ đó. Cảm ơn ..

+1

Bạn chỉ cần giữ thứ tự trong tập tin/cơ sở dữ liệu và thay đổi nó mỗi nửa đêm. Bất kỳ câu hỏi cụ thể nào? – zerkms

Trả lời

4

Hãy thử điều này một http://jsfiddle.net/KQwf2/1/

HTML:

<img src="http://solarpanels2green.com/images/one.gif" title='1'> 
<img src="http://solarpanels2green.com/images/two.gif" title='2'> 
<img src="http://solarpanels2green.com/images/three.gif" title='3'> 
<img src="http://solarpanels2green.com/images/four.gif" title='4'> 

và js đang

var all = $('img'), 
     shift = Math.floor(
      (new Date().getTime() - new Date().getTimezoneOffset() * 60000) 
     /(24 * 3600 * 1000)) % all.length; 

all.filter(':gt(' + (all.length - shift - 1) + ')') 
    .insertBefore(all.first()); 

Nó tính MOD của phân chia số ngày đã trôi qua kể từ nửa đêm ngày 1 tháng 1 năm 1970 theo số phần tử trong danh sách hình ảnh, lấy lượng ảnh này từ cuối danh sách và di chuyển chúng ở phía trước danh sách.

Đã cập nhật để tính đến múi giờ của khách truy cập.

+0

Đẹp , Cảm ơn! Cảm ơn tất cả mọi người khác. Các giải pháp khác có vẻ như họ sẽ làm việc, nhưng điều này là quá dễ dàng để thực hiện để vượt lên. – Zach

+0

@ user1166556 Bạn được chào đón :) Trên thực tế, điều này 'if (shift! = 0)' cũng có thể được gỡ bỏ. Đó là một buổi tối muộn, vì vậy tôi đã có một 'suy nghĩ chậm') – Cheery

2

Nếu bạn có quyền truy cập vào cơ sở dữ liệu, nó sẽ là một vấn đề đơn giản trong php để lưu trữ thứ tự mỗi ngày trong cơ sở dữ liệu. Sau đó, khi tải trang, bạn kiểm tra ngày mà đơn hàng đến và cập nhật nếu nó không khớp với ngày hiện tại. Quá trình cập nhật sẽ bao gồm việc tạo một đơn hàng mới thông qua số rand của php.

Nếu bạn không có quyền truy cập vào cơ sở dữ liệu, bạn sẽ cần phải đưa ra một cơ chế ngẫu nhiên khác chỉ dựa trên ngày. Một tùy chọn sẽ là tạo một băm của ngày và sử dụng nó để điều khiển thứ tự của bạn.

Dưới đây là một số giả php của tùy chọn phi DB:

$fullhash = md5(date("Ymd")); 
$hash = $fullhash; 
$countImages = 4; //or whatever the actual number of images you have is 
$shownImages = array(); 
while ($countShown < $countImages) 
{ 
    $num = ord($hash); //get ascii value of first char of $hash 
    $num = $num % $countImages; //convert the number to something that corresponds to an image 
    if (!(in_array($num, $shownImages))) 
    { 
    echo "<img src='image" . $num . "'>"; 
    $shownImages[] = $num; 
    } 
    $hash = substr($hash,1); 
    if (strlen($hash) == 0) 
    { 
    $fullhash = md5($fullhash); //generate a new hash in case the previous one did not catch all images 
    $hash = $fullhash; 
    } 
} 

Điều này có thể dường như quá phức tạp. Nếu bạn có thể đặt một hạt giống để tạo số ngẫu nhiên trên máy chủ của mình, thì bạn có thể thay thế hầu hết mã ở trên bằng cách đó. Tuy nhiên, ngày càng có nhiều việc triển khai được di chuyển ra khỏi các trình tạo số ngẫu nhiên giống, nó làm cho nó ít tầm thường hơn để tạo lặp lại cùng một chuỗi các số ngẫu nhiên.

0

bạn có thể dành thời gian với javascript. sau đó tôi sẽ tạo ra một mảng, ngẫu nhiên trình tự, sản lượng hình ảnh của bạn

var d = new Date(); 
var time= d.getHours(); 
if(time>=24){ 
    //code here for randomizing 
} 

http://www.w3schools.com/jsref/jsref_gethours.asp
http://www.javascriptkit.com/javatutors/randomorder.shtml

+0

Và phải làm gì nếu 'thời gian <24'? – zerkms

+0

không có gì, bạn đang tìm cách thay đổi thứ tự nếu người xem sau nửa đêm trên máy tính của mình –

+1

@tq: 1. Tôi không phải OP 2. Bạn cần phải đọc câu hỏi một lần nữa, bạn không hiểu nó – zerkms

1

Đây là một trong PHP mà chỉ phụ thuộc vào thời gian cuối cùng chỉnh sửa một tập hợp các hình ảnh trong một thư mục nhất định:

<?php 

function cmp($a, $b){ 
    $atime = filemtime($a); 
    $btime = filemtime($b); 

    return $atime == $btime ? 0 : ($atime < $btime ? -1 : 1); 
} 

$paths = array(); 

if ($dh = opendir('images')){ 
    while (($path = readdir($dh)) !== false){ 
    if (substr($path, -4) == '.jpg'){ 
     array_push($paths, "images/$path"); 
    } 
    } 
} 

$count = count($paths); 
$offset = time() % $count; 

usort($paths, 'cmp'); 

for ($i = 0; $i < $offset; $i++){ 
    $path = array_shift($paths); 
    array_push($paths, $path); 
} 

?> 

Sau đó, bất cứ nơi nào bạn cần nó trong trang của bạn:

<?php foreach ($paths as $path): ?> 
    <img src="<?php echo $path; ?>" ... /> 
<?php endforeach; ?> 
Các vấn đề liên quan