как отобразить данные в два столбца с php - PullRequest
1 голос
/ 31 октября 2009

Как я могу отображать данные в двух столбцах?

 <?php
$query = "SELECT * FROM `release` WHERE artist_id = '$rcode' AND label_id = '$id'";
$result = mysql_query($query);
$tr_no = mysql_num_rows($result);
while ($info = mysql_fetch_array($result)) {
?>  
        <div>
        <table style="width: 100%">
                <tr>
                    <td ><img src="../artwork/<?php echo $info['label_id']; ?>/<?php echo $info['ID']; ?>.jpg" width="100" height="100" /></td>
                    <td valign="top">
                    <table style="width: 100%">
                        <tr>
                            <td style="width: 45px; height: 20px;" class="style5">
                            &nbsp;</td>
                            <td style="width: 180px"><?php echo $info['code']; ?></td>
                        </tr>
                        <tr>
                            <td style="width: 45px; height: 20px;" class="style5">
                            &nbsp;</td>
                            <td style="width: 180px"><?php echo $info['name']; ?></td>
                        </tr>
                        <tr>
                            <td style="width: 45px; height: 20px;" class="style5">
                            &nbsp;</td>
                            <td style="width: 180px"><?php echo trh($info['date']); ?></td>
                        </tr>
                        <tr>
                            <td style="width: 45px; height: 20px;" class="style5">
                            &nbsp;</td>
                            <td style="width: 180px">

                            </td>
                        </tr>
                    </table>
                    </td>
                </tr>
            </table>
        </div>
        <?php
        }
        ?>

Обычно я использую это только для одного столбца.

Какой самый простой способ отобразить его в двух столбцах с теми же полями, что и в этом коде?

Ответы [ 6 ]

4 голосов
/ 13 ноября 2009

Ответ также зависит от того, как вы хотите показать информацию.

Если мы предположим, что в вашей базе данных есть следующие шесть artist_id

1,2,3,4,5,6

каким образом вы хотели бы показать их? Сюда

1  2
3  4
5  6

или так?

1  4
2  5
3  6

Обновление: как вы говорите, вы хотели бы показать их первым способом, решение довольно простое. На каждой итерации пары (0, 2, 4 ...) вы должны открывать строку, а на каждой нечетной итерации (1, 3, 5 ...) вы должны закрывать ее, чтобы вы получили

<tr><td>0</td><td>1</td></tr><tr><td>2</td><td>3</td></tr>...

Код будет

<?php
$query = "SELECT * FROM `release` WHERE artist_id = '$rcode' AND label_id = '$id'";
$result = mysql_query($query);
$tr_no = mysql_num_rows($result);
$ii = 0; // Iterator
while ($info = mysql_fetch_array($result)) {
?>  
        <div>
                <table style="width: 100%">
                        <?php if ($ii%2 == 0) { // If pair, we open tr?>
                        <tr>
                        <?php } ?>
                                <td ><img src="../artwork/<?php echo $info['label_id']; ?>/<?php echo $info['ID']; ?>.jpg" width="100" height="100" /></td>
                                <td valign="top">
                                <table style="width: 100%">
                                        <tr>
                                                <td style="width: 45px; height: 20px;" class="style5">
                                                &nbsp;</td>
                                                <td style="width: 180px"><?php echo $info['code']; ?></td>
                                        </tr>
                                        <tr>
                                                <td style="width: 45px; height: 20px;" class="style5">
                                                &nbsp;</td>
                                                <td style="width: 180px"><?php echo $info['name']; ?></td>
                                        </tr>
                                        <tr>
                                                <td style="width: 45px; height: 20px;" class="style5">
                                                &nbsp;</td>
                                                <td style="width: 180px"><?php echo trh($info['date']); ?></td>
                                        </tr>
                                        <tr>
                                                <td style="width: 45px; height: 20px;" class="style5">
                                                &nbsp;</td>
                                                <td style="width: 180px">

                                                </td>
                                        </tr>
                                </table>
                                </td>
                        <?php if ($ii%2 == 1) { // If odd, we close tr?>
                        </tr>
                        <?php } ?>
                </table>
        </div>
<?php $ii++; // We increment the iterator }
?>
0 голосов
/ 14 декабря 2013
<table border='1'><?phpfor ($n = 0; $n<=2; $n++) {echo "<tr>";for ($i = $n; $i<=17; $i=($i + 3)){ echo "<td>$i</td>";}echo "</tr>";}?></table>

просто используйте два цикла, как это результат

0 3 6 9 12 15

1 4 7 10 13 16

2 5 8 11 14 17

0 голосов
/ 14 декабря 2013
<table border='1'><tr><?phpfor ($i = 0; $i<=17; $i=($i + 3)){echo "<td>$i</td>";}?></tr><tr><?phpfor ($n = 1; $n<=17; $n=($n + 3)){    echo "<td>$n</td>";}?></tr><tr><?phpfor ($m = 2; $m<=17; $m=($m + 3)){echo "<td>$m</td>";}?></tr></table>
  1. | 0 | 3 | 6 | 9 | 12 | 15 |
  2. | 1 | 4 | 7 | 10 | 13 | 16 |
  3. | 2 | 5 | 8 | 11 | 14 | 17 |

Спасибо:)

0 голосов
/ 14 января 2010

Получите общее количество фотографий, вы можете сделать это динамически, а затем поместить все в for loop следующим образом:

Допустим, вы хотите 9 картинок в трех столбцах:

for ($i = 0; $i<=6; $i=($i + 3))
{
    $result = mysql_query("select * from users order by id desc limit $i,3 ");
    while(mysql_fetch_array($result))
    { 
        //bla bla bla html code
    }
}

Удачи.

0 голосов
/ 07 ноября 2009

Если у вас нет набора данных "БОЛЬШОЙ",
1) вывести все строки в числовой индексированный массив
2) разделить количество строк на две: x1 = 0; x2 = (int) count / 2;
3) цикл от 0 до count / 2, создание таблицы с двумя столбцами,
3a) индексированные по x1 ++ в первом столбце

0 голосов
/ 31 октября 2009

У вас есть несколько вариантов в зависимости от того, насколько вы хотите получить с вашим HTML / CSS. Вы можете попытаться сохранить ширину каждого 50% и плавать их влево, и элементы должны автоматически расположиться в два столбца.

Вы также можете быть более явным, используя макет на основе таблицы. В этом случае начните с тега a и затем добавьте элементы внутри цикла. После каждых двух элементов ($ index% 2 == 0) напишите a, чтобы начать новую строку ... затем, после завершения цикла, закройте свой. Если вы пойдете по этому пути, обязательно добавьте дополнительный, если у вас получилось нечетное количество результатов по вашему запросу.

Могут быть более изощренные способы сделать это, но это просто и достаточно просто, чтобы выполнить работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...