Возьмем такую страничку для примера: http://www.yaltarent.com/houses.php?code=DYSOS1
на страничке есть такая вот ссылочка: Фотогалерея
А хотелось бы, что бы ссылка генерился автоматически - т.е. есть у мгу например папка, в которой 5 папок. скрипт лезет в корневик, находит эти 5 папок, забивает их в массив, потом через транслитор пропускает и клепает ссылки типа:
houses.php?code=DYSOS1&photo=photogalereya
В общем с транскриптором и созданием ссылок я справлюсь, прошу помощи в следующем:
Как создать массив, в который будут забиваться тока папки =)))
Вот что накидал...
$dir=opendir($url);
$dirrect=array();
while ($papka=readdir($dir))
if ($papka!="." && $papka!="..")
{
$rasshir = substr($file, strrpos($file, '.') + 1);
if ($rasshir=="")
$dirrect[]=$papka;
}
а дальше - ступор=)
Спустя 7 часов, 28 минут, 5 секунд (9.11.2009 - 10:50) stepan написал(а):
примерно вот так:
$dir = opendir ( $url );
$dirrect = array ();
while ( $papka = readdir ( $dir ) )
{
if ( $papka != "." && $papka != ".." )
{
if ( is_file ( $papka ) )
{
$file = pathinfo ( $papka );
echo $file['extension']; //Выводит тебе расширение
}
if ( is_dir ( $papka ) )
$dirrect[] = $papka;
}
}
Спустя 17 минут, 57 секунд (9.11.2009 - 11:08) brainraider написал(а):
Хм, не выводит ничего.... ни расширение, ни содержимое массива...
сделал приписку, что б проверить:
Ничего =(
сделал приписку, что б проверить:
foreach ($dirrect as $drct)
echo $drct;
Ничего =(
Спустя 19 минут, 30 секунд (9.11.2009 - 11:28) stepan написал(а):
вот так у меня работает
<?php
$path = $_SERVER['DOCUMENT_ROOT'].'/view/';
$dir = opendir ( $path );
$dirrect = array ();
while ( $papka = readdir ( $dir ) )
{
if ( is_file ( $path . $papka ) )
{
$file = pathinfo ( $papka );
echo $file['extension']; //Выводит тебе расширение
}
elseif ( is_dir ( $path . $papka ) )
if ( $papka != '.' && $papka != '..' )
$dirrect[] = $papka;
}
closedir ( $dir );
?>
Спустя 6 минут, 34 секунды (9.11.2009 - 11:34) brainraider написал(а):
Хм, что-то у мну не пашет.... Ладно, спасибки, буду пытаться ковырять...
Спустя 4 минуты, 21 секунда (9.11.2009 - 11:39) stepan написал(а):
Цитата (stepan @ 9.11.2009 - 08:28) |
if ( $papka != '.' && $papka != '..' ) |
я не знаю почему у меня именно так работает но должно вообще вместо `и` стаять `или` ( || )
Спустя 1 минута, 9 секунд (9.11.2009 - 11:40) glock18 написал(а):
brainraider, я думаю, читает по урлу. тогда нужно разрешать это в настройках пыхи.
Спустя 37 секунд (9.11.2009 - 11:41) glock18 написал(а):
Цитата |
я не знаю почему у меня именно так работает но должно вообще вместо `и` стаять `или` ( || ) |
не должно так и должно
Спустя 2 минуты, 29 секунд (9.11.2009 - 11:43) brainraider написал(а):
хм, ну у мну нема доступа к инику хостинга=)))) по крайней мере, я не слышал, чтобы они предоставляли доступ...
щас попробую полную ссылку юзать...
щас попробую полную ссылку юзать...
Спустя 3 минуты, 16 секунд (9.11.2009 - 11:46) glock18 написал(а):
stepan
выкладывал код, который работает с физическим путем. если нужго то же самое, только по http/ftp, то нужно включить allow_url_fopen (кажысь так), чтобы это получилось. иначе боюсь никак.
выкладывал код, который работает с физическим путем. если нужго то же самое, только по http/ftp, то нужно включить allow_url_fopen (кажысь так), чтобы это получилось. иначе боюсь никак.
Спустя 6 минут, 16 секунд (9.11.2009 - 11:53) brainraider написал(а):
Ха, а у меня включено
Спустя 3 часа, 26 минут, 21 секунда (9.11.2009 - 15:19) brainraider написал(а):
Все оказалось куда проще...
юзаем пхп5 =))))
$url= "путь";
for($dir=scandir($url),$i=0;isset($dir[$i]);$i++)
{
if ($dir[$i][0]=='.') continue;
$full_path=$url.'/'.$dir[$i];
if (is_dir($full_path))
$result[]=$dir[$i];
}
юзаем пхп5 =))))
Спустя 2 дня, 15 часов, 59 минут, 26 секунд (12.11.2009 - 07:18) brainraider написал(а):
Итак, развиваем тему дальше...
Вот код который получился:
потом бла-бла-бла
а тут опять код
и сново бла-бла-бла
Так вот:) заинтересовали меня несколько вопросов:
1. как во второй код правильно вставить $res или $result (совсем не понимаю, понимаю что не $res, но больше ниче не понимаю:))
2. Там, где у нас идет генерация ссылок (foreach), первая ссылка генерится норм, а вот остальные генерятся до контента... оО
Подскажите как это исправить плиз.
Или подскажите другой путь генерации ссылок
Вот код который получился:
// забиваем папки в массив
$url= "apanel/photos/".$row[3];
for($dir=scandir($url),$i=0;isset($dir[$i]);$i++)
{
if ($dir[$i][0]=='.') continue; // если название папки не начинается с точки - прододжаем
$full_path=$url.'/'.$dir[$i];
if (is_dir($full_path))
$result[]=$dir[$i];
}
// генерим ссылки:
$n=0;
foreach ($result as $res)
{
$n++;
echo'<a href="?code='.$row[3].'&photos='.$res.'" class="o-r">Фотогалерея '.$n.'</a><br><br></td></tr>';
}
потом бла-бла-бла
а тут опять код
elseif(!empty($_GET['code']) && $_GET['photos']==$res)
и сново бла-бла-бла
Так вот:) заинтересовали меня несколько вопросов:
1. как во второй код правильно вставить $res или $result (совсем не понимаю, понимаю что не $res, но больше ниче не понимаю:))
2. Там, где у нас идет генерация ссылок (foreach), первая ссылка генерится норм, а вот остальные генерятся до контента... оО
Подскажите как это исправить плиз.
Или подскажите другой путь генерации ссылок
Спустя 1 час, 49 минут, 57 секунд (12.11.2009 - 09:08) freshcoder написал(а):
foreach ($result as $res)
{
$n++;
echo'<a href="?code='.$row[3].'&photos='.$res.'" class="o-r">Фотогалерея '.$n.'</a><br><br></td></tr>';
}
заменить на
$mylinks = '';
foreach ($result as $res)
{
$n++;
$mylinks .= '<a href="?code='.$row[3].'&photos='.$res.'" class="o-r">Фотогалерея '.$n.'</a><br><br></td></tr>';
}
Дальше в шаблоне "эхаешь" эту переменную:
<div id="links"><?php echo $mylinks;?></div>
Спустя 12 минут, 50 секунд (12.11.2009 - 09:21) brainraider написал(а):
Или я чета не понял или действительно в данном случае выводится только последний элемент массива...
все оказалось опять таки проще:
терь главный вопрос, как передать в условие этот гребаный массив...
все оказалось опять таки проще:
// генерим ссылки:
$n=0;
foreach ($result as $res)
{
$n++;
echo'<a href="?code='.$row[3].'&photos='.$res.'" class="o-r">Фотогалерея '.$n.'</a><br/><br/>';
}
echo '</td></tr>';[s]
терь главный вопрос, как передать в условие этот гребаный массив...
Спустя 2 часа, 14 минут, 18 секунд (12.11.2009 - 11:35) brainraider написал(а):
Ну неужели ни у кого никаких идей? Хоть че-нить напишите =)))
Спустя 3 часа, 9 минут, 11 секунд (12.11.2009 - 14:45) sergeiss написал(а):
Ты тут сам собой беседу ведешь. Так что даже непонятно, в чем же вопрос. Какое условие, зачем передавать туда этот массив...
Спустя 8 минут, 59 секунд (12.11.2009 - 14:54) brainraider написал(а):
Такс, начнем с начала...
Вот приблизительно так идет код:
Если опять чет неясно - грите что, я впринципе врядли смогу объяснить яснее, если мне не объяснить де неясно =)
Вот приблизительно так идет код:
if(empty($_GET['code']) && empty($_GET['photos']))
бла бла бла
elseif(!empty($_GET['code']) && empty($_GET['photos']))
бла бла бла
for($dir=scandir($url),$i=0;isset($dir[$i]);$i++)
{
if ($dir[$i][0]=='.') continue; // если название папки не начинается с точки - прододжаем
$full_path=$url.'/'.$dir[$i];
if (is_dir($full_path))
$result[]=$dir[$i];
}
// генерим ссылки:
$n=0;
foreach ($result as $res)
{
$n++;
echo'<a href="?code='.$row[3].'&photos='.$res.'" class="o-r">Фотогалерея '.$n.'</a><br/><br/>';
}
echo '</td></tr>';
бла бла бла
elseif(!empty($_GET['code']) && $_GET['photos']==????????????) <<-----<<<<< Тут нужно как то вставить, что бы генерилась страница, по папке (путь к папке забит в массив $result)... Это и есть то загадочное условие
Если опять чет неясно - грите что, я впринципе врядли смогу объяснить яснее, если мне не объяснить де неясно =)
Спустя 4 минуты, 48 секунд (12.11.2009 - 14:58) sergeiss написал(а):
Для начала "не повредит" где-то вверху объявить массив
и только потом использовать его.
Далее. Если тебе нужно условие на то, что в массиве что-то есть, то тогда проверяй количество элементов в нем:
$result=array()
и только потом использовать его.
Далее. Если тебе нужно условие на то, что в массиве что-то есть, то тогда проверяй количество элементов в нем:
if( .....всякая фигня.... and count($result) > 0 )
// И еще. В других местах надо проверять не
if( !empty($_GET[....]) )
// а вот так - это будет более правильно
if( !isset( $_GET[...]) )
Спустя 5 минут, 46 секунд (12.11.2009 - 15:04) sergeiss написал(а):
Объявление массива нужно для того, что в настоящее время он у тебя создается только в момент создания элементов этого массива. А если элементы созданы не будут, то и массив будет неопределенный. Тогда count($result) выдаст ошибку. А если массив объявлен, то он может быть и нулевой длины.
Спустя 1 день, 13 часов, 27 минут, 38 секунд (14.11.2009 - 04:32) brainraider написал(а):
Большое спасибо за совет, но это немного не то...
Вот я тут кой чего наметал эа денек... =)
Но есть проблемы. Итак, по порядку:
Есть папка, в ней четыре папки, в этих 4х папках суммарно 60 файлов (30,10,10,10).
Вот код вывода фоток:
Ссылки генерятся все:
?code=DO1&photos=1
?code=DO1&photos=2
?code=DO1&photos=3
?code=DO1&photos=4
Тут 1,2,3,4 - имена папок...
Но вот только на каждой из 4х страниц выводятся все 60 имагов... Я понимаю, что у меня сначала забиваются в массив папки, а патом из всех этих папок в массив забиваются имаги и выводятся...
Лучшего пока не достиг... Подскажите плиз, как должен выглядеть код, что б все работало правильно!!!
Заранее благодарен!!!
Вот я тут кой чего наметал эа денек... =)
Но есть проблемы. Итак, по порядку:
Есть папка, в ней четыре папки, в этих 4х папках суммарно 60 файлов (30,10,10,10).
Вот код вывода фоток:
if(!empty($_GET['code']) && !empty($_GET['photos']))
{
$row=mysql_fetch_array(mysql_query('SELECT * FROM houses WHERE code = "'.$_GET['code'].'"'));
echo'<br><table width="100%"><tr><td class="bea_zag_red" align="center" width="500px">'.$row['title'].'</td><td class="bea_zag_red"><p align="center">Код '.$row['code'].'</td></tr></table>';
$folder=links_of_folders("apanel/photos/".$row[3]);
foreach ($folder as $res)
{
$images=img_for_objects("apanel/photos/".$row[3]."/".$res);
$img=conclusion_photogalery("apanel/photos/".$row[3]."/".$res,$images);
}
function img_for_objects($url)
{
$dir=opendir($url);
$images=array();
while (false!==($file=readdir($dir)))
if($file!="." && $file!="..")
{
$rasshir = substr($file, strrpos($file, '.') + 1);
if($rasshir=="jpg" || $rasshir=="JPG")
$images[]=$file;
}
closedir($dir);
return $images;
}
function conclusion_photogalery($url,$images)
{
foreach($images as $img)
{
global $row;
echo '
<div class="shadow left7 left3"><div class="corner_lb"><div class="corner_rt">
<img class="img_border" src="'.$url.'/'.$img.'" alt="'.$row['title'].'" width="290" height="220">
</div></div></div>
';
}
return $img;
}
function links_of_folders($url)
{
for($dir=scandir($url),$i=0;isset($dir[$i]);$i++)
{
if ($dir[$i][0]=='.') continue; // если название папки не начинается с точки - прододжаем
$full_path=$url.'/'.$dir[$i];
if (is_dir($full_path))
$folder[]=$dir[$i];
}
return $folder;
}
Ссылки генерятся все:
?code=DO1&photos=1
?code=DO1&photos=2
?code=DO1&photos=3
?code=DO1&photos=4
Тут 1,2,3,4 - имена папок...
Но вот только на каждой из 4х страниц выводятся все 60 имагов... Я понимаю, что у меня сначала забиваются в массив папки, а патом из всех этих папок в массив забиваются имаги и выводятся...
Лучшего пока не достиг... Подскажите плиз, как должен выглядеть код, что б все работало правильно!!!
Заранее благодарен!!!
Спустя 11 часов, 46 минут, 12 секунд (14.11.2009 - 16:18) brainraider написал(а):
Неужели ни у кого никаких соображений?
Спустя 9 часов, 10 минут, 11 секунд (15.11.2009 - 01:28) brainraider написал(а):
В общем все пашет=))))
Если кому-нить буит интересно - пишите в личку.
Хочу выразить ОГРРОМНУЮ БЛАГОДАРНОСТЬ(!!!!!) to SERGEISS, который находясь в месте удаленном от цивилизации, имея ЖПРС под рукой в качестве интернета, натолкнул мну на мысль!!!
Если кому-нить буит интересно - пишите в личку.
Хочу выразить ОГРРОМНУЮ БЛАГОДАРНОСТЬ(!!!!!) to SERGEISS, который находясь в месте удаленном от цивилизации, имея ЖПРС под рукой в качестве интернета, натолкнул мну на мысль!!!
_____________
Там где есть новички, есть и двигатель прогресса!!!
Ну, если не сказать больше=)