Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Сортировка фотографий
 
 автор: FiX   (17.06.2005 в 20:23)   письмо автору
 
 

Привет!
Может, кто знает, как сделать так, чтобы при добавлении фотки эта новая фотка отображалась на первой странице?
Вот весь PHP-код.

<?php
$data_array 
file("photos/photo.dat");
if (
count($data_array) == && $QUERY_STRING != "add"):
?>

<?php
else:
if (
$QUERY_STRING == "" || ereg("^photo",$QUERY_STRING)):
?>
<?php
                $data_file 
"photos/photo.dat";

                if (
file_exists($data_file)):
                        
$data_array file($data_file);
                else:
                        
$error[] = "Файл $data_file не существует";
                endif;

                
$cnt count($data_array)-1;

                if(!isset(
$photo)) $photo=0;

                if (isset(
$data_array)):
                foreach(
$data_array as $i=>$string)
                        {
                        list(
$name[],$comment[])= explode("::","$string");
                        
$j=$i+1;
                        if (
$photo $i && $photo >= ($i-2)):
                                echo 
"<a href=\"photos.php?photo=$i\" title=\"$comment[$i]\"><img src='photos/$name[$i]' border='0' height='60'></a> ";
                                  if (
$photo == ($i-2)): echo "<a href=\"photo.php?photo=$cnt\" title=\" в конец \" class='small'>>>>></a> "; endif;
                        elseif (
$photo == $i):
                                echo 
"<img src=\"photos/$name[$i]\" height='70' border='0' alt='Сейчас Вы просматриваете этот снимок'> ";
                        elseif (
$photo $i && $photo <= ($i+2)):
                                if (
$photo == ($i+2)): echo "<a href=\"photos.php?photo=0\" title=\" в начало \" class='small'><<<<</a> "; endif;
                                echo 
"<a href=\"photos.php?photo=$i\" title=\"$comment[$i]\"><img src='photos/$name[$i]' border='0' height='60'></a> ";
                        endif;
                        }
                endif;
                
?>
<?php
                  
if (isset($name)):
                  foreach(
$name as $i=>$value)
                          {
                          if (
$photo == $i) echo "<img src=\"1_erotic/$name[$i]\" border='0'>";
                          }
                  endif;
                  
?>
 <?php
                    
if (isset($comment)):
                    foreach(
$comment as $i=>$value)
                            {
                            if (
$photo == $i) echo "<b>$comment[$i]</b>";
                            }
                    endif;
                    
?>
<?php
                    
if ($photo == 0):
                              echo 
"<span class='small' style='color:#999999'><< предыдущая</span>";
                    else:
                              
$prev $photo-1;
                              echo 
"<a href=\"photos.php?photo=$prev\" class='small'><< предыдущая</a> ";
                    endif;
                    echo 
" | ";
                    if (
$photo $cnt):
                              
$next $photo+1;
                              echo 
"<a href=\"photos.php?photo=$next\" class='small'>следующая >></a> ";
                    elseif (
$photo == $cnt):
                              echo 
"<span class='small' style='color:#999999'>следующая >></span>";
                    endif;
                    
?>
<?php
endif;
endif;
?>


Все фотки хранятся в папке "photos", там же находится data-файл. Надо, чтобы при добавлении фотки она сортировалась. Думаю, если сделать
сортировку по дате, то проблем не будет... А потом уж при просмотре фотогалереи выходила та фотка, которая новее (по дате)...
Я убрал все HTML-теги, они там, мне кажется, не нужны...
Есть же все-таки люди, кому это сделать - раз плюнуть... Подскажите, пожалуйста, куда и что вставить...
И ещё: почему при загрузке файлов с русским именем (например, фотография.jpg) фотография не отображается? Можно ли это как-то исправить?
Буду очень благодарен :)

   
 
 автор: cheops   (17.06.2005 в 20:56)   письмо автору
 
   для: FiX   (17.06.2005 в 20:23)
 

Я так понимаю вся служебная информация хранится в файле photo.dat и сортировка сводится к сортировке записей этого файла - не могли бы вы описать структуру photo.dat, а ещё лучше прикрепить к сообщению готовый файл с несколькими фотографиями.

>И ещё: почему при загрузке файлов с русским именем (например, фотография.jpg)
>фотография не отображается? Можно ли это как-то исправить?
Это зависит от настроек сервера, чтобы не зависить от них лучше переименовывать файл, назначая в качестве имени файла, текущую дату, тогда ваши файлы будут автоматически следовать в нужном вам порядке.

   
 
 автор: FiX   (18.06.2005 в 01:01)   письмо автору
 
   для: cheops   (17.06.2005 в 20:56)
 

Да, вся инфорация хранится в файле photo.dat. Структура такова:
имя_фотографии::комментарий

Очень часто посетители присылают мне свои фотографии (я устраиываю конкурсы), поэтому у меня нет возможности переименовывать все фотки по дате... Последний вопрос был посвящен именно этому - т.к. посетители всегда присылают фотки с русским именем. А когда через админ.центр добавляешь фотографию, то в галерее она не отображается...

Кстати, отличная мысль: если в качестве имен вставлять дату, то обе проблемы решатся! Только я не смогу написать скрипт, который бы переименовывал фотки автоматически и выводил новую фотку в начале...

   
 
 автор: cheops   (18.06.2005 в 02:44)   письмо автору
 
   для: FiX   (18.06.2005 в 01:01)
 

Стоп, а где дата сохранения файлов - у вас же только названия или вы не храните в photo.dat дату?

   
 
 автор: cheops   (18.06.2005 в 02:53)   письмо автору
 
   для: FiX   (18.06.2005 в 01:01)
 

Если photo.dat не предназначен для хранения времени создания файла, то можно извлечь имя последнего файла при помощи скрипта
<?php 
  
// Открываем директорию 
  
$dir opendir("dir_name"); 
  
// В цикле считываем её содержимое 
  
while(($file readdir($dir)) !== false
  { 
    
// Если текущий объект является файлом - 
    // помещаем его в массив $arr - в качестве
    // ключа время создания файла
    
if(is_file($file)) $arr[filemtime($file)] = $file
  } 
  
// Закрываем директорию 
  
closedir($dir); 
  
// Сортируем массив
  
krsort($arr);
  
// Теперь самый последний файл находится в первом элементе
  
foreach($arr as $filename)
  {
    echo 
$filename;
    break;
  }
?>

   
 
 автор: FiX   (19.06.2005 в 01:29)   письмо автору
 
   для: cheops   (18.06.2005 в 02:53)
 

С этим скриптом попробую, большое спасибо :)
А на счет времени создания файла: если файл автоматически будет переименовываться в дату загрузки, то можно будет выводить на первую страницу ту фотку, которая была загружена позже; этим самым и решится проблема с русскими именами...
Вот вкратце вся "история":
пользователь загружает свою фотографию, эта фотка автоматически переименовывается в дату загрузки, и, соответственно, скрипт сортирует фотки по дате загрузки и выдает самую последнюю фотку на первую страницу.
Я вот подумал, можно ли переименовывать фотки, например, так:

$filename = date("D","M","Y","H","I","S");

Меня уж не виняйте за такой бредовый код, я пока чайник. Но смысл, наверное, понятен...

   
 
 автор: FiX   (19.06.2005 в 01:30)   письмо автору
 
   для: cheops   (18.06.2005 в 02:53)
 

С этим скриптом попробую, большое спасибо :)
А на счет времени создания файла: если файл автоматически будет переименовываться в дату загрузки, то можно будет выводить на первую страницу ту фотку, которая была загружена позже; этим самым и решится проблема с русскими именами...
Вот вкратце вся "история":
пользователь загружает свою фотографию, эта фотка автоматически переименовывается в дату загрузки, и, соответственно, скрипт сортирует фотки по дате загрузки и выдает самую последнюю фотку на первую страницу.
Я вот подумал, можно ли переименовывать фотки, например, так:

$filename = date("D","M","Y","H","I","S");

Меня уж не виняйте за такой бредовый код, я пока чайник. Но смысл, наверное, понятен...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования