ФорумПрограммированиеPHP для идиотов → Работа с циклами с прерыванием

Работа с циклами с прерыванием

  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 14 октября 2009 г. 20:49

    целый день не могу сообразить как решить одну задачу…!!!!
    допустим есть каталог в котором находиться 10 картинок
    мы получаем функцией glob() пути к этим картинкам
    дальше надо вывести все эти картинки в таблице с помощью цикла….НО
    надо вывести в два ряда то есть 5 в одном ряду </tr> и <tr><td>в другом.
    Картинок не обязательно 10 их может быть и 4 тогда в один рад
    я нашел решение только оно какое-то громоздкое получилось и допустим если картинок не 10 а 100 то это уже 20 рядов и мой код будет просто гигантским
    выкладываю мое:
    <?php
    $pic = glob(getenv("DOCUMENT_ROOT")."/…./*.jpg");
            rsort($pic);
            // если картинок один ряд(5 или менее)
            if(count($pic)>=1)
             { echo'<tr><td colspan="2"><b>Фотографии:</b>';
                if(count($pic)<=5)
                     {echo'<table><tr>';
                     for($i=0;$i<=(count($pic)-1);$i++)
                      {$np=basename($pic[$i]);?>
                            <td style="width:95px">
                            <img src="<?=$np?>"width="90"height="90"alt="<?=$i+1?>"border="0"><br />
                          <?}echo'</table>';
                     }
                 // если картинок два ряда(от 5 до 10)
                 if(count($pic)>5)
                   {echo'<table><tr>';
                     for($i=0;$i<=4;$i++)
                      {$np=basename($pic[$i]);?>
                        <td style="width:95px">
                             <img src="<?=$np?>"width="90"height="90"alt="<?=$i+1?>"border="0"><br />
                     <?}echo'</table>';
                     echo'<table><tr>';
                     for($i=5;$i<=(count($pic)-1);$i++)
                      {$np=basename($pic[$i]);?>
                        <td style="width:95px">
                             <img src="<?=$np?>"width="90"height="90"alt="<?=$i+1?>"border="0"><br />
                     <?}echo'</table>';
                   }
              }?>
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 14 октября 2009 г. 20:50, спустя 1 минуту 11 секунд

    смешной говнокод.
    Спустя 264 сек.
    $pic = glob(getenv("DOCUMENT_ROOT")."/…./*.jpg");

    $chunks = array_chunk($pic,4);

    echo "<table>";
    foreach($chunks as $row)
    {
    echo "<tr>";
    foreach($row as $td)
    {
    echo "<td><img src=\"$td\"/></td>";
    }
    echo "</tr>";
    }
    echo "</table>";
    Сапожник без сапог
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 14 октября 2009 г. 20:51, спустя 29 секунд

    да согласен код делитантский и как же его превратить в менее говняный ???
  • NRG

    Сообщения: 4761 Репутация: N Группа: в ухо

    Spritz 14 октября 2009 г. 20:51, спустя 7 секунд

    во-первых, выводить в ряд надо в простом цикле.
    переделай верстку.
    во-вторых, пути к картинкам надо хранить….
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz 14 октября 2009 г. 20:53, спустя 2 минуты 2 секунды

    а ну и + сам пути перепроверь, я делать рутину то не бу :)
    Сапожник без сапог
  • malaba

    Сообщения: 165 Репутация: N Группа: Кто попало

    Spritz 14 октября 2009 г. 21:02, спустя 9 минут 25 секунд

    Не все гуд работает ауено,душевненько благодарю,…все как всегда просто а я чуть не уехал от этои задачки

Пожалуйста, авторизуйтесь, чтобы написать комментарий!