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

Форум PHP

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

 

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

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

тема: есть директория ,в ней картинки, нужно рандомно вывести, но у каждой картинки свой урл
 
 автор: MNU   (13.06.2006 в 12:14)   письмо автору
 
 

Добрый день,
я в пхп не особо соображаю, скажу сразу)
не моглибы мне помочь со скриптиком?
есть папка, в ней картинки 01.jpg....30.jpg мне нужно их рандомно вывести(допустим только штук 5) но к каждой картинке есть свой уникальный урл

поиск дал результаты


<? 

// сканируемый директорий 
$dir './'

// получаем список файлов по маске '*' - все файлы 
foreach (glob($dir."*") as $filename) { 
    
// выводим полный путь файла 
    
echo "[".dirname(realpath($filename))."][".basename(realpath($filename))."] size " filesize($filename) . " byte(s)\n"


?> 



но это мы толлько просканили папку, а как теперь рандомно вывести и присвоить урл?

спасибо за внимание

   
 
 автор: WebTech   (13.06.2006 в 13:00)   письмо автору
 
   для: MNU   (13.06.2006 в 12:14)
 


<?php

// сканируемый директорий 
$dir './'

// сколько картинок выбрать
$imgs 5;

// Если версия PHP меньше 4.2.0 то раскомментировать следующую строку
// srand((float)microtime() * 1000000);

// получаем список файлов по маске '*' - все файлы 
$files shuffle(glob($dir.'*'));

for(
$i=0$i<5$i++) 
  { 
  
// выводим полный путь файла 
  
echo "[".dirname(realpath($files[$i]))."][".basename(realpath($files[$i]))."] size " filesize($files[$i]) . " byte(s)\n"
  } 

?>

   
 
 автор: MNU   (13.06.2006 в 13:13)   письмо автору
 
   для: WebTech   (13.06.2006 в 13:00)
 

мне надо не полный путь, а допустим картинка 01.jpg имеет адрес http://123.ru картинка 02.jpg имеет урл http://456.ru и тд

   
 
 автор: WebTech   (13.06.2006 в 13:47)   письмо автору
 
   для: MNU   (13.06.2006 в 13:13)
 

Тогда не очень понятно.
Как понять, что каждая картинка имеет свой url? Т.е. это понятно, что может иметь. Как назначаются эти урлы? Если картинки расположены в одной папке на сервере, то может просто нужно просто вывести картинки с урлом, а не с файловым путем, т.е. в виде
http://123.ru/images/01.jpg
http://123.ru/images/02.jpg
...
http://123.ru/images/30.jpg

   
 
 автор: MNU   (13.06.2006 в 14:03)   письмо автору
 
   для: WebTech   (13.06.2006 в 13:47)
 

нет

вот есть папка, в ней картинки, 01/02/03,,,,30
картинка 01 имеет урл(т.е.
<a href=http://123.ru><img src=01.jpg border=0></a>
) картинка 02 имеет урл,(т.е.
<a href=http://456.ru><img src=02.jpg border=0></a>
)

   
 
 автор: Trianon   (13.06.2006 в 14:08)   письмо автору
 
   для: MNU   (13.06.2006 в 14:03)
 

и где находится информация о том, какой урл какой картинке соответствует?

   
 
 автор: tuder   (13.06.2006 в 14:12)   письмо автору
 
   для: MNU   (13.06.2006 в 14:03)
 

>но к каждой картинке есть свой уникальный урл

Где хранится это уникальный урл? Каким образом он сопоставляется с картинкой?

   
 
 автор: MNU   (13.06.2006 в 19:00)   письмо автору
 
   для: tuder   (13.06.2006 в 14:12)
 

вот этого я уж не знаю, поэтому и прошу помощи

   
 
 автор: Diablo_   (13.06.2006 в 21:23)   письмо автору
 
   для: MNU   (13.06.2006 в 19:00)
 

Я сделал проще! Имена файлов и есть урл!
Вот, посмотри www.3dmir.ru справа!

   
 
 автор: MNU   (13.06.2006 в 22:39)   письмо автору
 
   для: Diablo_   (13.06.2006 в 21:23)
 

так в принципе можно, но это с изподвывертом будет..

   
 
 автор: tuder   (14.06.2006 в 08:28)   письмо автору
 
   для: MNU   (13.06.2006 в 22:39)
 

Зато не надо хранить урлы в базе или файле.
Делать имена можно в виде
www_site_ru.jpg
www_subdomen_site_ru.jpg

После получения списка файлов останется только вывести
$url=str_replace(".jpg", "/", $filename);
$url="http://".str_replace("_", ".", $url);
echo "<a href='$url'><img src='./$filename'></a>";

Иначе создавай файл с именами файлов и урлами ему соответствующими, открывай файл, затягивай в массив, после считывания каталога рисунков при выводе каждого делай поиск нужного элемента в массиве по имени файла и подставляй из другого элемента массива соответствующий урл... Или аналогично в базе.

   
 
 автор: MNU   (14.06.2006 в 09:56)   письмо автору
 
   для: tuder   (14.06.2006 в 08:28)
 

яб с удовольствием сделал так как ты сказал, но ссылки в име файлах нельзя использовать "/"..

а то что ты сказаля не знаю как делать(и использовать бд не желательно..)

   
 
 автор: NFR   (15.06.2006 в 10:05)   письмо автору
 
   для: MNU   (14.06.2006 в 09:56)
 

Использовать "/" нельзя, но можно, к пример, сделать так:
www_site_ru~1234~ggg.jpg

$url=str_replace(".jpg", "/", $filename);
$url=str_replace("~", "/", $filename);
$url="http://".str_replace("_", ".", $url);
echo "<a href='$url'><img src='./$filename'></a>";

   
 
 автор: MNU   (14.06.2006 в 22:27)   письмо автору
 
   для: MNU   (13.06.2006 в 12:14)
 

все еще актуально

   
 
 автор: kadet   (15.06.2006 в 10:21)   письмо автору
 
   для: MNU   (14.06.2006 в 22:27)
 

Вообще это делается через базу данных, во первых это эффективно и городить нечего! буквально у Вас будет 2 поля в одном адрес картинки в другом url куда она должна направлять, и это все потом выводится в Документ(php)

   
 
 автор: MNU   (15.06.2006 в 20:00)   письмо автору
 
   для: kadet   (15.06.2006 в 10:21)
 

NFR , если другого варианта не будет, придеться рассматривать твой

kadet, зачем лишние запросы к БД? а если она повиснет?(что кстати, довольно часто бывает у хостеров)

мб можно как-то это хранить, например, в текстовом файле?

   
 
 автор: valenok   (15.06.2006 в 20:16)   письмо автору
 
   для: MNU   (15.06.2006 в 20:00)
 

gifs.txt:
www.blabla.com/gif.jpg|01.jpg
www.blabla.com/gif2.jpg|02.jpg
www.blabla.com/gi3f.jpg|03.jpg
www.blabla.com/gif4.jpg|04.jpg

<?php
$gifs=file('gifs.txt');
for($i=0;$i<5;$i++){
$r=rand(0,count($gifs));
$gifs[$r]=trim("|",$gifs[$r]);
echo "<A href='".$gifs[$r][0]."'><img src='some/directory/".$gifs[$r][1]."'></a>";
}
?>

Чтото в этом роде.
Пояснить надо?

   
 
 автор: Diablo_   (15.06.2006 в 22:17)   письмо автору
 
   для: valenok   (15.06.2006 в 20:16)
 

А если в файле будет 1000 строк!:) то весить он будет соответственно, чем больше весит, тем дольше открывает!
Так же, тебе нужно будет, по мимо добавления картинка на сайт, ещё и базу обнавлять (добовлять туда запись), а зачем делать лишнии действия?
Так же, зачем делать полные имена файлов?
просто напиши переменную с адресом!
Вот весь мой код с моего сайта:

<?
//------------------------------
$images glob('image/tutor/*.jpg'); 
$tut="index.php?id=";
$image2=$imagesmt_rand(0count($images)-1) ];
$file_image=basename($image2,".jpg");
echo 
"<a href=$tut$file_image><img src=$image2 border=0></a>";
$URL=$file_image; include "modules/random_tutor/counter_url_tutor.inc";
//-------------------------------
?>

Всё просто до идеатизма и некаких лишних действий!

   
 
 автор: Ziq   (15.06.2006 в 22:41)   письмо автору
 
   для: valenok   (15.06.2006 в 20:16)
 

Можно просто создать текстовые документы как имя файла т.е.

В папке

01.jpg
02.jpg
03.jpg
..
30.jpg


К ним создать

01.txt
02.txt
03.txt
..
30.txt

где будет храниться адрес. Никакой обработки не надо, просто file_get_contents($file); выбираем и все.

   
 
 автор: Diablo_   (15.06.2006 в 23:00)   письмо автору
 
   для: Ziq   (15.06.2006 в 22:41)
 

Но всё равно, получается, что нужно будет добавлять 2 файла на сервер!:)
Чем больше файлов, тем больше бардак!:)
PHP сделали не только для того, что бы файлы открывать!

   
 
 автор: P@Sol   (16.06.2006 в 14:05)   письмо автору
 
   для: MNU   (13.06.2006 в 12:14)
 


<?
$kol 
2;          
$arr file("url.txt");

if (!
$arr)
{
        echo 
"Файла нет";
        exit;
}

foreach(
$arr as $line)
{
        
$str[$k] = explode(";",$line);
        
$k++;
}
shuffle($str);

for(
$i=0;$i<$kol;$i++)
{
        echo 
"<a href=http://".$str[$i][1]."><img src=pic/".$str[$i][0]." alt=".$str[$i][0]."-".$str[$i][1]."></a>";
}
?>

url.txt
01.jpg;www.ya.ru
02.jpg;www.rambler.ru
03.jpg;www.aport.ru

   
 
 автор: MNU   (16.06.2006 в 14:22)   письмо автору
 
   для: P@Sol   (16.06.2006 в 14:05)
 

спасибо Паш
все работает ;)

   
 
 автор: valenok   (16.06.2006 в 14:30)   письмо автору
 
   для: MNU   (16.06.2006 в 14:22)
 

Не издевайся. Я тебе то и написал.
И работать мой должен быстрей, там только один for

   
 
 автор: P@Sol   (16.06.2006 в 16:55)   письмо автору
 
   для: valenok   (16.06.2006 в 14:30)
 

видимо мой код показался ему более читабельнее:)

   
 
 автор: valenok   (16.06.2006 в 17:31)   письмо автору
 
   для: P@Sol   (16.06.2006 в 16:55)
 

С этим не согласиться не могу...
Ну выбирать ему..

   
 
 автор: P@Sol   (16.06.2006 в 14:05)   письмо автору
 
   для: MNU   (13.06.2006 в 12:14)
 

.

   
Rambler's Top100
вверх

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