Создание динамической таблицы с помощью PHP

#php #dynamic #html-table #dynamic-data #dynamic-tables

#php #динамический #html-таблица #динамические данные #динамические таблицы

Вопрос:

Я пытаюсь создать динамическую таблицу с помощью PHP. У меня есть страница, на которой отображаются все изображения из базы данных. Мне нужно, чтобы таблица состояла только из 5 столбцов. Если возвращается более 5 изображений, должна быть создана новая строка, и отображение остальных изображений будет продолжено.

Кто-нибудь может помочь?

Коды идут здесь: Код на главной странице:-

     <table>
    <?php
        $all_pics_rs=get_all_pics();
        while($pic_info=mysql_fetch_array($all_pics_rs)){
        echo "<td><img src='".$pic_info['picture']."' height='300px' width='400px' /></td>";
            } 
?>
</table>
  

Функция get_all_pics():

 $all_pics_q="SELECT * FROM pics";
        $all_pics_rs=mysql_query($all_pics_q,$connection1);
        if(!$all_pics_rs){
            die("Database query failed: ".mysql_error());
        }
        return $all_pics_rs;
  

Этот код создает одну строку. Я не могу придумать, как я могу получить несколько строк …!!

Комментарии:

1. Просто к вашему сведению — за вас проголосовали, потому что вы не опубликовали никакого кода.

2. Если вы можете отредактировать этот вопрос, чтобы предоставить соответствующие примеры кода того, что вы пробовали, пожалуйста, отметьте его для рассмотрения модератором. Для редактирования просто нажмите ссылку «редактировать» под вашим вопросом. Чтобы пометить ее, щелкните ссылку «пометить», выберите «другое» и сообщите нам, что она готова к просмотру.

3. @Tim Post: Я не совсем согласен с вашими действиями. Я думаю, что его вопрос действительно ясен. Я видел намного худшие вопросы на этой доске.

4. @Jules Я был в замешательстве по этому поводу (флаги были точными), сейчас я снова откроюсь.

5. @Tim Post: Хорошо, хорошо, я это сделаю… Я здесь новичок… не понял, что было абсолютно необходимо опубликовать код.

Ответ №1:

 $maxcols = 5;
$i = 0;

//Open the table and its first row
echo "<table>";
echo "<tr>";
while ($image = mysql_fetch_assoc($images_rs)) {

    if ($i == $maxcols) {
        $i = 0;
        echo "</tr><tr>";
    }

    echo "<td><img src="" . $image['src'] . "" /></td>";

    $i  ;

}

//Add empty <td>'s to even up the amount of cells in a row:
while ($i <= $maxcols) {
    echo "<td>amp;nbsp;</td>";
    $i  ;
}

//Close the table row and the table
echo "</tr>";
echo "</table>";
  

Я еще не тестировал это, но мое дикое предположение — что-то вроде этого. Просто перебирайте свой набор данных с изображениями и, пока вы еще не сделали 5 <td> , добавьте один. Как только вы дойдете до 5, закройте строку и создайте новую строку.

Предполагается, что этот скрипт даст вам что-то вроде следующего. Очевидно, это зависит от того, сколько у вас изображений, и я предположил, что 5 (определено в $ maxcols) — это максимальное количество изображений, которые вы хотите отобразить в строке.

 <table>
    <tr>
        <td><img src="image1.jpg" /></td>
        <td><img src="image1.jpg" /></td>
        <td><img src="image1.jpg" /></td>
        <td><img src="image1.jpg" /></td>
        <td><img src="image1.jpg" /></td>
    </tr>
    <tr>
        <td><img src="image1.jpg" /></td>
        <td><img src="image1.jpg" /></td>
        <td>amp;nbsp;</td>
        <td>amp;nbsp;</td>
        <td>amp;nbsp;<td>
    </tr>
</table>
  

Комментарии:

1. Вы определили i вне for , поэтому просто используйте его, чтобы заполнить его for(;$i < 5 /* magic number! bad! */; $i){){ echo "<td></td>"; } между закрывающим } и echo "</tr>"; . Не нужно делить или что-то еще.

2. @RedX: Да, вы правы. Это более простой способ сделать это. Собираюсь соответствующим образом отредактировать свой ответ.

Ответ №2:

 $max_per_row = 5;
$item_count = 0;

echo "<table>";
echo "<tr>";
foreach ($images as $image)
{
    if ($item_count == $max_per_row)
    {
        echo "</tr><tr>";
        $item_count = 0;
    }
    echo "<td><img src='" . $image . "' /></td>";
    $item_count  ;
}
echo "</tr>";
echo "</table>";