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

Форум MySQL

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

 

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

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Ручная сортировка

Сообщения:  [1-10]   [11-11] 

 
 автор: Зелим   (06.08.2007 в 02:02)   письмо автору
 
   для: Trianon   (05.08.2007 в 23:18)
 

Вот это тоже мне пригодится! :) Фэнкс!

   
 
 автор: Trianon   (05.08.2007 в 23:18)   письмо автору
 
   для: Unkind   (05.08.2007 в 20:53)
 

Н-да...

$list = '10,8,9';
$sql = "SELECT * FROM tbl WHERE id IN($list) ORDER BY FIELD(id, $list)";

   
 
 автор: Unkind   (05.08.2007 в 21:13)   письмо автору
 
   для: Зелим   (05.08.2007 в 21:12)
 

Ничего страшного не будет.

   
 
 автор: Зелим   (05.08.2007 в 21:12)   письмо автору
 
   для: Unkind   (05.08.2007 в 21:08)
 

Просто у меня и так в этой таблице, в которой хранится информация о юзерах, много полей :)
Ну-с, остается добавить еще одно, которое отвечает за обновление.
Спасибо!

   
 
 автор: Unkind   (05.08.2007 в 21:08)   письмо автору
 
   для: Зелим   (05.08.2007 в 20:57)
 

В зависимости от кол-ва файлов, конечно. Но Вы еще и используете filemtime(), да еще и два раза.
Данные о последней модификации файла кешируются, но в таком случае возможны ошибки в выводе нужных фото. Придется очищать кеш и заново узнавать время последней модификации. Это, безусловно, еще больше ухудшит положение.

Просто добавьте в скрипт, где происходит сохранение фотографии, запрос на обновление поля, отвечающего за хранение времени последней модификации файла. А если происходит удаление фото, то можно обнулить поле.

Вместо Вашего кода можно будет сделать простейший запрос вроде
SELECT * FROM `users` ORDER BY `mphoto` DESC LIMIT 5;

   
 
 автор: Зелим   (05.08.2007 в 20:57)   письмо автору
 
   для: Unkind   (05.08.2007 в 20:53)
 

Спасибо! Тогда все-таки придется мне дополнительно покопаться в базе.
P.S. А пробежка по файлам занимает много времени?

   
 
 автор: Unkind   (05.08.2007 в 20:53)   письмо автору
 
   для: Зелим   (05.08.2007 в 20:40)
 

Это можно реализовать, например, с помощью UNION:

SELECT * FROM `tbl` WHERE `id` = 10
UNION
SELECT * FROM `tbl` WHERE `id` = 8
UNION
SELECT * FROM `tbl` WHERE `id` = 9;


А вообще Вам было бы крайне желательно добавить в структуру таблицы поле, в кот-ром хранится время последнего изменения фото. Так будет намного лучше.

А Ваш код в дальнейшем приведет к тому, что скрипт будет выполняться непозволительно долго.

   
 
 автор: Зелим   (05.08.2007 в 20:40)   письмо автору
 
   для: Unkind   (05.08.2007 в 19:52)
 

Допусти я не знаю значения полей, которых я хочу получить.
К примеру, есть массив и он тоже создается автоматически. Вот так:

$dir = opendir("./folder/");
while($file = readdir($dir)) {
$fname = explode(".",$file);
if($fname[1] == "jpg" && time()-filemtime("./folder/$file")<86400) $array[filemtime("./folder/$file")] = $fname[0]; }
closedir($dir);
krsort($array);
for(Reset($array); $key = key($array); Next($array)) { $id = "or id = $array[$key] "; }
$users = mysql_query("select id from users where id = 'n' ".$id." ");
while($user = mysql_fetch_array($users)) {
print "$user[id]<br/>"; }

Код неуклюжий, но все равно. Я смотрю какие фотки в нем новые, беру их названия, потому что они сопадают с идентификаторами в базе. Но дело в том что при запросе в базу данных я получаю результат, отсортированный по времени добавления записи в базу. А я хочу, что бы было отсортировано по дате изменения файла (фото).

   
 
 автор: Trianon   (05.08.2007 в 20:24)   письмо автору
 
   для: Зелим   (05.08.2007 в 19:40)
 

ORDER BY можно применять для вывода строк в явно указанном списком порядке ключей.
Смотреть нужно в сторону функции FIND_IN_SET()

   
 
 автор: Unkind   (05.08.2007 в 19:52)   письмо автору
 
   для: Зелим   (05.08.2007 в 19:40)
 

Зачем Вы делаете запрос вообще? "Дайте мне идентификатор того, где идентификатор равен пяти".
И, следовательно, если Вы знаете что за чем следует, то никакой сортировки делать не надо вообще.

   

Сообщения:  [1-10]   [11-11] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

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