За последние 24 часа нас посетили 92757 программистов и 5581 робот. Сейчас ищут 2694 программиста ...

помогите разобраться с выводам из директории.

Тема в разделе "PHP для новичков", создана пользователем mk-ned, 19 фев 2014.

  1. mk-ned

    mk-ned Новичок

    С нами с:
    19 фев 2014
    Сообщения:
    25
    Симпатии:
    0
    есть две машины на одном установлено win+denwer а на втором ubuntu/linux+apache2. на обоих весит абсолютно одна и та же страничка:
    -вот код-

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>my.box</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
    <script type="text/javascript" src="script.js"></script>
    </head>

    <body>

    <div id="container">

    <div id="heading">
    <h1>My Box</h1>
    </div>

    <div id="gallery">

    <?php

    $dir = "video"; //задаём имя директории
    if(is_dir($dir)) { //проверяем наличие директории
    $files = scandir($dir); //сканируем (получаем массив файлов)
    array_shift($files); // удаляем из массива '.'
    array_shift($files); // удаляем из массива '..'
    for($i=0; $i<count($files); $i++);
    }

    $page=$_GET["page"];
    $kolvo=$_GET["kolvo"];
    if($page<1){$page=1;}
    if($kolvo<1){$kolvo=12;}

    $directory = 'img-video';

    $allowed_types=array('jpg','jpeg','gif','png');
    $file_parts=array();
    $ext='';
    $title='';
    $i=0;

    $dir_handle = @opendir($directory) or die("There is an error with your image directory!");

    while ($file = readdir($dir_handle))
    {
    if($file=='.' || $file == '..') continue;

    $file_parts = explode('.',$file);
    $ext = strtolower(array_pop($file_parts));

    $title = implode('.',$file_parts);
    $title = htmlspecialchars($title);

    $nomargin='';

    $kmim = ($page-1)*$kolvo;
    $kmax = $page*$kolvo-1;

    if(in_array($ext,$allowed_types))
    {

    if ($i>=$kmim and $i<=$kmax){

    if(($i+1)%4==0) $nomargin='nomargin';

    echo '
    <div class="pic '.$nomargin.'" style="background:url('.$directory.'/'.$file.') no-repeat 50% 50%;">
    <a href="'.$dir.'/'.$files[$i].'" title="'.$title.'">'.$title.'</a></div>';

    }

    $i++;

    }
    }

    closedir($dir_handle);
    ?>


    <div class="clear"></div>
    </div>


    <div id="footer">
    <h2><a href="../index.php">Главное</a>&nbsp;&nbsp;-

    <?php
    for ($x=1; $x<=ceil($i/$kolvo); $x++) {
    echo ('<a id="page" href="videotheek.php?page='.$x.'&kolvo='.$kolvo.'">&nbsp;'.$x.'&nbsp;</a>');
    }
    ?>

    </h2>

    </div>

    </div>

    </body>
    </html>

    вроде всё работает.
    если обращаться к страничке которая весит на win+denwer то к фоткам которые лежат в директории img-video корректно подставляются видео которые лежат в директории video,то есть
    ёлки(img)-ёлки(video)
    гравитация(img)-гравитация(video)
    старперцы(img)-старперцы(video) и.т.д

    но проблема в том что,

    если обращаться к страничке которая весит на ubuntu/linux+apache2 то они подставляются следующим образом
    старперцы(img)-ёлки(video)
    гравитация(img)-гравитация(video)
    ёлки(img)-старперцы(video) и.т.д

    вот как они сохранены в директориях на linux-е

    mk@mybox:/home/www/my.box/htdocs/videotheek/img-video$ ls -l
    total 80
    -rwxr-xr-x 1 root root 28079 Feb 13 11:45 Elki.3.jpg
    -rwxr-xr-x 1 root root 24066 Feb 12 22:55 Gravity.jpg
    -rwxr-xr-x 1 root root 24998 Feb 12 17:31 Last.Vegas.jpg

    mk@mybox:/home/www/my.box/htdocs/videotheek/video$ ls -l
    total 4496408
    -rwxr-xr-x 1 root root 1568155648 Feb 13 11:42 Elki.3.2013.O.BDRip.avi
    -rwxr-xr-x 1 root root 1467617280 Feb 12 23:00 Gravity.2013.D.HDRip.avi
    -rwxr-xr-x 1 root root 1564041216 Feb 12 17:37 Last.Vegas.avi

    как сделать чтобы обращаясь к страничке которая весит на ubuntu/linux+apache2 всё корректно подставлялось?
    как сделать чтобы они сортировались по дате добавления?
    как сделать чтобы последняя добавленная отображалось первым?
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.543
    Симпатии:
    623
    код бы оформил, чтобы читать можно было.
    Лучше всего, в твоей ситуации, получить список файлов с помощью glob(). Отсортировать по дате можно так:
    Код (PHP):
    1. $dates = [];
    2. foreach ($files as $f) {
    3.  $dates[$f] = filemtime($f);
    4. }
    5. sort($dates);
    6. $files = array_keys($dates);