За последние 24 часа нас посетили 16788 программистов и 1646 роботов. Сейчас ищет 891 программист ...

Что я сделала не так?

Тема в разделе "PHP для новичков", создана пользователем bor1a, 24 фев 2011.

  1. bor1a

    bor1a Активный пользователь

    С нами с:
    14 авг 2009
    Сообщения:
    9
    Симпатии:
    0
    Есть папка с картинками. Картинки называются по порядку
    000.gif
    001.gif
    ...
    100.gif

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

    Данный скрипт на 010.gif не выводит ссылку на следующую
    на 010.gif вобще не выводит ничего
    на 002.gif выдает кучу ссылок пустых
    на 036.gif выдает две ссылки на "следующую" и выводит следующую два раза =(

    PHP:
    1. <?php
    2. if ($_GET[z]) {
    3. $full = $_GET[z];
    4. $dirct="aerografiy";
    5. echo ('<br /><a href="./gallery_a.php" style="color:#FFFFFF; padding:5px;">В начало</a>');
    6. $hdl=opendir($dirct);
    7.  
    8. while ($file = readdir($hdl))
    9. {
    10. if (($file!="..")&&($file!=".")) {
    11. $a[$si]=$file; // присваиваем текущему элементу массива с именами файлов имя текущего файла
    12. }
    13. }
    14. closedir($hdl);
    15. $file = basename($full);
    16. $info = explode (".", $file);
    17. $alt = $info[0];
    18. $d = "./aero.txt";
    19. $news = file($d);
    20. echo '<table><tr>';
    21. foreach ($news as $num => $text )
    22. {
    23. for($i=0;$i<sizeof($num);$i++)
    24. {
    25. $txt = explode("|", $text);
    26.  
    27. if($txt[$i]==$alt-001) {
    28.  
    29. echo '<td><li><a href="./gallery_a.php?z=aerografiy/'.$txt[$i].'.gif" style="color:#FFFFFF; padding:5px;">Предыдущая фотка</a></li></td>';
    30.  
    31. }
    32. if($txt[$i]==$alt+001) {
    33.  
    34. echo '<td><li><a href="./gallery_a.php?z=aerografiy/'.$txt[$i].'.gif"  style="color:#FFFFFF; padding:5px;">Следующая фотка</a></li></td>';
    35.  
    36. }}
    37.  
    38.  
    39. if ($txt[0] == $alt)
    40. {
    41.  
    42. echo ('<td><img src="'.$full.'" alt="'.$txt[1].'" title="'.$txt[1].'" style="margin: auto;"><br />'.$txt[1].'</td>');
    43. }}
    44. echo '</tr></table>';
    45. closedir($hdl);
    46.  
    47. }
    48.  
    49. else {
    50. $dirct="aerografiy";
    51.  
    52. $hdl=opendir($dirct);
    53. while ($file = readdir($hdl))
    54. {
    55. if (($file!="..")&&($file!=".")) { $a[]=$file;}
    56. }
    57. closedir($hdl);
    58.  
    59. if (sizeof($a)>0)
    60. {
    61.  sort($a);
    62. foreach ($a as $file)
    63. {
    64. $full=$dirct."/".$file;
    65.  
    66. $info = explode (".", $file);
    67.  
    68. if (($info[1] == "jpg") | ($info[1] == "JPG") | ($info[1] == "png") | ($info[1] == "gif")) {
    69. echo ('<li><a href="./gallery_a.php?z='.$full.'"><img src="'.$full.'" height="100px" alt="Аэрография, живопись - aerodark.ru" title="Аэрография, живопись - aerodark.ru"></a></li>');
    70.  
    71. //<font size=-1><centr>'.$info[0].'</center></font><br>
    72.  
    73. }
    74.  
    75. }
    76.  
    77. }
    78. }
    79. ?>
    Содержание текстого файла
    ...
    003|аэрография на телефоне айфон лицо с кровью
    004|аэрография на телефоне айфон кошка
    005|аэрография на телефоне айфон дракон
    006|аэрография на телефоне айфон секси
    007|аэрография на сноубордическом шлеме Портрет
    ...

    Помогите пожалуйста, а то я совсем запуталась ;) Я так понимаю, т.е. подозреваю свойства сложения/вычитания работают не так как я предпологала!
    Или как можно по другому сделать ссылку на следующий/предыдущий эллемент??? Может как-нибудь переходить по строкам текстового файла?
     
  2. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Ну смотрите
    Я делал галлерею , брал все изображения из требуемых новостей , впихивал их в массив например $image
    Дальше когда запрашивали /index.php?photo=18 , то бралось изображение из ячейки массива с номером 18 , тоесть из $image[18]
    И разумеется ссылки на пред и след изображения делаются от числа 18.
     
  3. bor1a

    bor1a Активный пользователь

    С нами с:
    14 авг 2009
    Сообщения:
    9
    Симпатии:
    0
    Ок. На сколько я поняла...такой массив - это у меня $a
    я могу из него выводить img и все такое
    Я НЕ понимаю как сделать ссылку на предыдущий/следующий в данном случае элемент массива =(
     
  4. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    тогда $a[$full-1] и $a[$full+1] будут предыдущим с следующим изображением соотв
     
  5. MiksIr

    MiksIr Активный пользователь

    С нами с:
    29 ноя 2006
    Сообщения:
    2.339
    Симпатии:
    44
    Весь код - бред сивой кобылы. Переписывайте с нуля думая головой и проверяя каждую функцию по документации - что она возвращает.
     
  6. bor1a

    bor1a Активный пользователь

    С нами с:
    14 авг 2009
    Сообщения:
    9
    Симпатии:
    0
    siiXth Спасибо огромное! Заклинело меня)))
     
  7. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    Только ж по сути не забывайте что в массивах отчёт идёт с 0
     
  8. bor1a

    bor1a Активный пользователь

    С нами с:
    14 авг 2009
    Сообщения:
    9
    Симпатии:
    0
    Вроде это я пока ещё помню) Спасибо, что не ругались
    я понимаю что код ерунда, но я же и пишу в теме для новичков)
     
  9. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    тут ругаются на "сделай за меня"
     
  10. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    +1

    ещё за невнимательность и когда советуют плохой код :)
     
  11. bor1a

    bor1a Активный пользователь

    С нами с:
    14 авг 2009
    Сообщения:
    9
    Симпатии:
    0
    )) Да я вроде не прошу сделать за меня. Я прошу подсказать в каком направлении двигаться, а то долго так самой искать!

    Вот я сделала по совету переход по предыдущему/следующему по ключам массива...

    На локалке все идеально
    А на сервак кинула, там оказывается в массив пишется все хаотично....
    мне надо чтобы все по порядку шло=( т.е. фото 000.gif имела в массиве ключ 0, ну и т.д.

    в массив так пихаю
    PHP:
    1. if (($file!="..")&&($file!=".")) { $a[]=$file;}
    вроде все стандартно =(
     
  12. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Отсортируйте этот массив. Файлы могут читаться по-разному в разном порядке в зависимости от файловой системы, на серваке наверняка линукс.
     
  13. bor1a

    bor1a Активный пользователь

    С нами с:
    14 авг 2009
    Сообщения:
    9
    Симпатии:
    0
    Точно!!!! Спасибо!
    только вот

    PHP:
    1. sort($a);
    Выдает сообщение об ошибке, я поставила собаку перед сортировкой...теперь работает так, как и хотела, но у меня подозрения, что это не правильно...
     
  14. <?=RPG?>

    <?=RPG?> Активный пользователь

    С нами с:
    19 ноя 2010
    Сообщения:
    451
    Симпатии:
    0
    Ну так читайте сообщения об ошибках - это основное вспомогательное средство при отладке.
     
  15. bor1a

    bor1a Активный пользователь

    С нами с:
    14 авг 2009
    Сообщения:
    9
    Симпатии:
    0
    Всем Спасибо! Со всем разобралась...
    Хорошо, что Вы есть ;)
     
  16. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Хорошо что мы есть!
    Хорошо что мы спать!
    Хорошо что мы любить жэнщина! Вах!