КТО МОЖЕТ СКАЗАТЬ ПОЧЕМУ БУДУ БЛАГОДАРЕН, ПРИСТРЕЛИТЕ ЛОШАДЬ, НЕ ДАЙТЕ ЕЙ МУЧАТСЯ ДАЛЬШЕ!!!
//задаём переменные
$number = '0';
$num = '0';
$dirfoledr = 'gal';
// считаем кол-во файлов в директории и формируем строку с их именами
$dir = opendir ("$dirfoledr");
$i = 0;
while (false !== ($file = readdir($dir))) {
if (strpos($file, '.jpg',1) ) {
$i++;
$we = $file;
$ww = "$we $ww";
}
}
echo "$ww";
if ($_POST["next"]){
if ($number<$i){
$num = $number + 1;
$number = $num;
}
elseif ($number=$i)
{echo "не сейчас";}
}
if ($_POST["pre"]){
if ($number>0){
$num = $number - 1;
$number = $num;
}
elseif ($number=0)
{echo "не сейчас";}
}
$pizza = "$ww";
$pieces = explode(" ", $pizza);
echo $pieces[0];
echo $pieces[1];
echo $pieces[2];
echo $pieces[3];
echo $pieces[4];
$asd = "$pieces[$number]";
$img = "<img SRC='gal/$asd' ALIGN=LEFT width='176' height='92'>";
?>
<form method="post">
<td align="right"><input type="submit" value="вперед" name="next"></td>
</form>
<form method="post">
<td align="right"><input type="submit" value="назад" name="pre"></td>
</form>
<td align="right"><?php echo "$img"; ?></td>
Ну а если кто знает пример такой галереи (с таким действием) и даст ссылку тоже будет СВЯТЫМ ЧЕЛОВЕКОМ!!!
Спустя 7 часов, 30 минут, 7 секунд (29.07.2010 - 19:05) Nord написал(а):
Эм, я не вижу, в каком месте вы сохраняете номер текущей картинки.
Как я понял, история такова:
В начале скрипта вы обнуляете переменную $number. Вам выводится первая картинка.
Вы нажимте кнопку "вперед", в блоке if ($_POST["next"]) $number увеличивается на один. Вам выводится вторая картинка
Но, когда вы еще раз нажимаете на кнопку "вперед", $number обнуляется и увеличивается на 1. Т.е. вам выводится та же самая страница
Насчет кода:
Вообще не понятно, зачем в цикле сцеплять имена файлов в одну строку, когда вы потом все равно делите эту строку explode'ом. Не проще ли сразу заносить из в массив $pieces? К тому же ваш вариат будет неправильно работать с файлами, у которых в имени есть пробел
Далее:
Кроме того, непонятен вот этот кусок кода:
Перемнная $num в вашем скрипте вообще нигде далее не используется и не понятно, зачем она вообшще нужна. Не равен ли этот кусок вот этому:
А так, мне кажется, подобная галерея должна быть устроена по-другому: номер текущей картинки должен передаваться через $_GET параметр, тогда можно обойтись без формы, обойдясь чисто ссылками на след. страницы
Правка: синтаксис и орфография
Как я понял, история такова:
В начале скрипта вы обнуляете переменную $number. Вам выводится первая картинка.
Вы нажимте кнопку "вперед", в блоке if ($_POST["next"]) $number увеличивается на один. Вам выводится вторая картинка
Но, когда вы еще раз нажимаете на кнопку "вперед", $number обнуляется и увеличивается на 1. Т.е. вам выводится та же самая страница
Насчет кода:
Вообще не понятно, зачем в цикле сцеплять имена файлов в одну строку, когда вы потом все равно делите эту строку explode'ом. Не проще ли сразу заносить из в массив $pieces? К тому же ваш вариат будет неправильно работать с файлами, у которых в имени есть пробел
Далее:
if (strpos($file, '.jpg',1) ) {
// Лучше заменить на:
if (substr($file, '.jpg', -4) ) {
// Это корректно обработает файлы типа: pic.jpg.exe
Кроме того, непонятен вот этот кусок кода:
if ($number<$i){
$num = $number + 1;
$number = $num;
} elseif ($number=$i) // Обратите внимание, здесь наверное опечатка: ($number == $i)
{echo "не сейчас";}
Перемнная $num в вашем скрипте вообще нигде далее не используется и не понятно, зачем она вообшще нужна. Не равен ли этот кусок вот этому:
if ($number < $i) $number++;
else echo "не сейчас";
А так, мне кажется, подобная галерея должна быть устроена по-другому: номер текущей картинки должен передаваться через $_GET параметр, тогда можно обойтись без формы, обойдясь чисто ссылками на след. страницы
Правка: синтаксис и орфография
Спустя 2 часа, 17 минут, 25 секунд (29.07.2010 - 21:23) slavikx3m написал(а):
if ($number<$i){
$num = $number + 1;
$number = $num;
} elseif ($number=$i) // Обратите внимание, здесь наверное опечатка: ($number == $i)
{echo "не сейчас";}
Возможно и опечатка, решать Вам. Объясню смысл этого куска. Кусок из события кнопки NEXT, то есть листать далее. Переменная $number позиция, номер рисунка, а переменная $i - это общее кол-во файлов, т.е. если позиция рисунка это последний рисунок, то кнопка NEXT бесполезна, чтобы не выводить файлы которых нет...
В том что можно было обойтись без $num, Вы правы, но даже если изменить на более рационально решение типа ....
$number = $number + 1;
//или
$number++;
...проблемы останутся прежними.
Про имена файлов с пробелами - это существенное замечание, я не учел, СПАСИБО, но в данном проекте заливка файлов на сервак ограничена мною, так что... НО всё равно спасибо.
Цитата |
Не проще ли сразу заносить из в массив $pieces? |
Наверное проще, я не знаю. Просто так было логичнее написать учитавая мои знания поэтому написал именно так как есть... Если Вам нетрудно написать кусок скрипта с подобной функцией (скорее всего это пару строк), то я буду Вам благодарен, потому как в тупике.
Цитата |
номер текущей картинки должен передаваться через $_GET параметр |
Тоже самое что и с предыдущей цитатой, все свалю на неопытность в php. Про передачу
значения переменных знаю не много. Если Вам не трудно киньте примерчик с работой такой "функции" .
Спустя 55 минут, 1 секунда (29.07.2010 - 22:18) SlavaFr написал(а):
потренеруйся с этим:
1) названия картинок в масиве
2) передавай с формуляром также номер актуаллной картинки, чтоб ты мог при пoказе актуаллной картинки исползовать позицию предыдущей.
1) названия картинок в масиве
echo print_r(glob('gal/*.{jpg,gif}',GLOB_BRACE),true);
2) передавай с формуляром также номер актуаллной картинки, чтоб ты мог при пoказе актуаллной картинки исползовать позицию предыдущей.
Спустя 29 минут, 16 секунд (29.07.2010 - 22:47) Nord написал(а):
Цитата |
Тоже самое что и с предыдущей цитатой, все свалю на неопытность в php. Про передачу значения переменных знаю не много. Если Вам не трудно киньте примерчик с работой такой "функции" . |
Допустим, человеку скинули ссылку на фото с вашей галереи: gallery.php?number=4
В ней ему должны вывести картинка под номером 4 и две ссылки:
<a href="gallery.php?number=3">назад</a>
<a href="gallery.php?number=5">вперед</a>
На сервере появление в адресе "?number=4" отражается появлением в массиве $_GET ключа 'number' ($_GET['number'] == 4)
По этому ваш скрипт будет выглядеть примерно так:
if (isset($_GET['number'])) $number = $_GET['number'] // 4 для ссылки gallery.php?number=4
else $number = 0; // если человек перешел по ссылке gallery.php, в массив $_GET не попал ключ 'number'
// Здесь какой-то код, выводящий картинку
[...]
// Выводим ссылки
if ($number > 0) echo '<a href="gallery.php?number=' . ($number - 1) . '">назад</a>'
if ($number < $i) echo '<a href="gallery.php?number=' . ($number + 1) . '">вперед</a>'
Спустя 12 часов, 14 минут, 35 секунд (30.07.2010 - 11:02) slavikx3m написал(а):
Цитата |
Допустим, человеку скинули ссылку на фото с вашей галереи: gallery.php?number=4 В ней ему должны вывести картинка под номером 4 и две ссылки:
На сервере появление в адресе "?number=4" отражается появлением в массиве $_GET ключа 'number' ($_GET['number'] == 4) По этому ваш скрипт будет выглядеть примерно так:
|
Ух ты СПАСИБО. Но что-то не вышло в первый раз (естественное синтаксис Ваш поправил на корректный), это было уже в час ночи, поэтому не стал с вариантами экспериментировать сегодня займусь. Почитаю про GET, наверное он не передаёт переменную, потому как всё равно number вечная единица)))) Буду читать. СПАСИБО Nord и SlavaFr!!!
Спустя 4 часа, 19 минут, 37 секунд (30.07.2010 - 15:21) slavikx3m написал(а):
Итак...
... готовая фото галерея. простенькая, но зато работает так как мне нужно... МОЖЕТ какому новичку, как я, пригодится скриптик...
ЕЩЁ РАЗ СПАСИБО Nord и SlavaFr!!!
<?php
//Папка с изображениями
$url="gal";
//Количество на странице
$max=1;
$y=1;
//Проверяем, является ли директорией
if (is_dir($url)) {
//Проверяем, была ли открыта директория
if ($dir = opendir($url)) {
//Сканируем директорию
while ($file = readdir($dir)) {
//Убираем лишние элементы
if (strpos($file, '.jpg',1)) {
//Выводим спиоск в браузер
$images[]=$file;
}
}
//Закрываем директорию
closedir($dir);
}
}
//Получаем количество элементов в массиве
$amount=count($images);
//Делим на количество отображаемых на странице изображений
//и округляем в большую сторону
$pages = ceil($amount/$max);
//Принимаем входящую переменную, которая указывает номер страницы
if (isset($_GET['page'])) {
$_p= $_GET['page'];
}
else {
$_p = "2";
}
$_p= $_GET['page'];
//Создаем вспомогательные переменные для навигации
//Если переменная $_p не задана
if(!$_p OR $_p =='') {
//Нижний предел
$nmin = 0;
//Верхний предел
$nmax=$max-1;
}
else {
$nmin = ($_p*$max)-$max;
$nmax=($max*$_p)-1;
}
echo '<h1>Фотогалерея</h1>';
echo "$_p <br>";
if ($_p > 1) {
echo '<a href="index.php?page=' . ($_p - 1) . '">назад</a>';
}
for($i=$nmin;$i<=$nmax;$i++) {
if($images[$i]) {
echo '<a href="'.$url.'/'.$images[$i].'">';
echo '<img style="border:1px blue dashed;width:160px; height:120px;" src="'.$url.'/'.$images[$i].'"/>';
echo '</a> ';
} }
if ($_p < $amount) {
echo '<a href="index.php?page=' . ($_p + 1) . '">вперед</a>';
}
?>
... готовая фото галерея. простенькая, но зато работает так как мне нужно... МОЖЕТ какому новичку, как я, пригодится скриптик...
ЕЩЁ РАЗ СПАСИБО Nord и SlavaFr!!!