13.05.2011, 16:38
|
Интересующийся
|
|
Регистрация: 24.05.2009
Сообщений: 19
|
|
Сообщение от dmitriymar
|
ajax-получаешь название файла и путь и меняешь в теге img на него.хотя по сути дела и аякс не нужен если изображений не сотня
|
изображений будет over 9000
0931454574, я вообще не понял, о чём ты говоришь. я же сверху максимально подробно расписал, как в итоге должно всё работать. причём тут анимации и прозрачность?
изображение. на него кликаешь - загружается другое, рандомное, из директории. без перезагрузки всей страницы. как сделать?
|
|
13.05.2011, 16:56
|
|
Профессор
|
|
Регистрация: 09.11.2009
Сообщений: 1,101
|
|
AJAX'ом обращаешься к PHP скрипту который прочитает имя рандомного файла из директории и вернет его. В JS меняешь путь на новый полученный.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
|
|
13.05.2011, 21:29
|
Человек
|
|
Регистрация: 10.03.2011
Сообщений: 305
|
|
Сегодня - завтра напишу код, посмотришь, а анимация для эффекта) но можно без нее, короче утром посмотришь!
__________________
XYZ
|
|
13.05.2011, 23:20
|
Интересующийся
|
|
Регистрация: 24.05.2009
Сообщений: 19
|
|
walik,
спасибо, что структурировал всё! я сегодня пока по своим делам ходил, мысленно пришёл примерно к такому же решению...
0931454574,
искренне благодарю тебя! это было бы просто супер. Может быть потом, когда обкатаем его, отшлифуем, выложишь на какойнить sourceforge или ещё куда) мне кажется, многим бы пригодилось!
а по поводу эффектов я даже не думал, по скольку не рассчитывал, что найдётся кто-то, кто согласится помочь. но если бы добавить fade для плавности, было бы ваще карамельно)
|
|
14.05.2011, 14:26
|
Человек
|
|
Регистрация: 10.03.2011
Сообщений: 305
|
|
И так сам php файл.
Он делает следующее.
Считывает все файлы из директории
Создает файл с именами и числом файлов
Делает рандомайз и отвечает запросу.
<?php
// путь к директории с файлами
$dir = "image/";
// счетчик количества файлов
// Открыть заведомо существующий каталог и начать считывать его содержимое, после желательно записать
// все в отдельный txt файл, чтобы потом его содержимое занести в массив, который будет формироваться и рендомайзится
// после того как залиты новые фото нужно запустить эту функцию и все файлы будут занесены в текстовый файл
// проверка на необходимость проверять на наличие новых фалов
// проверка существования директории
if (is_dir($dir)) {
// проверка возможности и открытие директории
if ($dh = opendir($dir)) {
// удаляем файл , для того чтобы не дублировать имена
unlink('name.txt');
// записываем все имена файлов в переменную $file пока есть файлы
while (($file = readdir($dh)) !== false)
{
$count++;
// записываем все в txt файл из которого потом будем брать имя в рандомайзе
write_new_name($file);
}
// закрытие директории после чтения
closedir($dh);
//echo $count;
random_image_scr($count);
}
}
//запись имен файлов в тхт файл
function write_new_name($file)
{
// Считаем сколько файлов
//новые записи добавляются в существующий файл
$f = fopen('name.txt','a+');
$file = "$file\r\n";
fwrite($f,$file);
fclose($f);
// закрывать файл функцией fclose не обязательно, но рекомендуется
// возвращает true если все прошло ок.
return true;
}
// РАНДОМАЙЗ ВЫБОРА ИЗОБРАЖЕНИЯ
function random_image_scr($count)
{
$lines = file('name.txt'); // теперь в $lines массив строк файла
$i = ($lines[count($lines)]); // выводим последнюю строку
$r= mt_rand(3,$count); //делаем рандомайз в нужном диапазоне.
$name_file = $lines[$r];
$name_file="image/".$name_file;
echo $name_file;
}
?>
Теперь сам html
Он передает запрос php и меняет скрин изображения по загрузке странице, можно повесить на клик , можно анимировать смену изображения , можно загружать массив изображений и т.д.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<TITLE>0931454574.blogspot.com</TITLE>
<META name="content-Type" content="text/html; charset=windows-1251">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script>
$(document).ready(function()
{
$.post("random.php", { name: "John", time: "2pm" }, // это я к тому что можно параметром что то передать, например нужную директорию и т.д.
function(data){
alert("Data Loaded: " + data);
$("#images").attr("src",data);
});
});
</script>
<meta http-equiv="Content-Type" content="text/html;charset=windows-1251">
</head>
<body>
<img src="image/1.jpg" id="images">
</body>
</html>
100% все работает. Так что скажи. это то что нужно ???
__________________
XYZ
Последний раз редактировалось 0931454574, 14.05.2011 в 14:29.
|
|
14.05.2011, 14:50
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
0931454574,
начни учить нормально тотоже рнр -не по курсам попова и ему подобных
|
|
14.05.2011, 14:56
|
|
Профессор
|
|
Регистрация: 09.11.2009
Сообщений: 1,101
|
|
А зачем имена фалов записывать в другой фал, а потом считывать в этом же скрипте, если можно записать их в переменную ?
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
|
|
14.05.2011, 15:02
|
Человек
|
|
Регистрация: 10.03.2011
Сообщений: 305
|
|
dmitriymar,
walik,
Ребята, во первых я сделал то что работает как нужно, во вторых небыло времения делать все проверки и т.д. в третьих не попОв ,а гугл и в четвертых не в переменную, потому как можно все взять в функции и запускать после проверки запроса, например каждый раз делать список файлов глупо, лучше запускать функцию создания списк имен когда добовляются новый картинкию, вот атк
__________________
XYZ
|
|
14.05.2011, 15:13
|
|
Профессор
|
|
Регистрация: 09.11.2009
Сообщений: 1,101
|
|
$dir = "/image";
$dh = opendir($dir);
$images = scandir($dir, 1);
$image = $images[rand(0, count(images)-3)]; // получаем случайный файл
Дополнительная работа с файлами, это лишний геморрой.
Ты слишком много тревожишь файлы, для каждой записи ты открываешь, записываешь, закрываешь (достаточно один раз открыть и в конце закрыть). Когда вообще в файл записывать нет необходимости.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Последний раз редактировалось walik, 14.05.2011 в 15:17.
|
|
14.05.2011, 15:35
|
Человек
|
|
Регистрация: 10.03.2011
Сообщений: 305
|
|
walik,
Безусловно.
Но в идеале использовать базу данных, а если и файлы , то во время работы их лучше блокировать(потому как им могут еще пользоваться).
Я же говорил что функционал записи в файл нужен только при добавлении новых картинок, просто его нужно поместить в функцию которую потом при необходимости вызывать после загрузки картинок.
А об этой функции scandir только сейчас узнал, спасибо Валентин
__________________
XYZ
|
|
|
|