Новая строка, если число ячеек было достигнуто - PullRequest
0 голосов
/ 03 сентября 2011

Я пытаюсь составить таблицу iframes (по 2 на строку), и я запрашиваю все, но всякий раз, когда он печатает, все находится в отдельном ряду, хотя я говорю только каждому второму. Я не могу понять, почему это происходит:

<div id="main" style="width:1000px;">
    <?php
        $query = "SELECT * FROM scripts";
        mysql_connect("localhost", "root", "");
        mysql_select_db("scriptsearch");
        $results = mysql_query($query);
        $num = mysql_num_rows($results);
        mysql_close();
    ?>
    <table border="0">
    <?php
        for($i = 0; $i <= $num; $i++){          
        if($i % 2 == 0) //is this the second one? if so, make a new row
            echo '<tr>';
        else{
    ?>
    <td><iframe src="scriptpreview.php?id=<?php echo $i;?>" style="width: 350px; height: 230px;" frameBorder="0" scrolling="no">Your browser needs to support iFrames for this website.</iframe></td>
    <?php }if($i % 2 == 0) echo '</tr>';/*end the row*/ } ?>
    </table>
</div>`

Редактировать: Я пробовал решение Krynble, но как бы я его не изменял, оно все равно не показывает, как я ожидаю.

Ответы [ 4 ]

1 голос
/ 03 сентября 2011

В вашем цикле есть ошибка.

Попробуйте это:

<?php
    for($i = 0; $i <= $num; $i++){          
    if($i % 2 == 0) //is this the second one? if so, make a new row
        echo '<tr>';
?>
<td><iframe src="scriptpreview.php?id=<?php echo $i;?>" style="width: 350px; height: 230px;" frameBorder="0" scrolling="no">Your browser needs to support iFrames for this website.</iframe></td>
<?php if($i % 2 == 1) echo '</tr>';/*end the row*/ } ?>
<?php if($i % 2 == 1) //close last row in case we haven't done it yet.
        echo '</tr>';?>
0 голосов
/ 03 сентября 2011

Другие люди прокомментировали часть php / html, позвольте мне сосредоточиться на части запроса:

Не делай этого:

$query = "SELECT * FROM scripts";          (1) select all ?
mysql_connect("localhost", "root", "");    (3) don't connect as root!
mysql_select_db("scriptsearch");
$results = mysql_query($query);            (4) no check for errors?
$num = mysql_num_rows($results);           (2) when you only want 1 count?

Сделайте это вместо:

$query = "SELECT count(*) as rowcount FROM scripts";                 
mysql_connect("localhost", "user1", "password");
mysql_select_db("scriptsearch");
if ($results = mysql_query($query)) {
  $row = mysql_fetch_row($results);
  $num = $row['rowcount'];
} else { echo "error....." }          
0 голосов
/ 03 сентября 2011

Вы должны печатать iframe безусловно, а не внутри else.Кроме того, закрывающий </tr> должен быть напечатан, когда $i нечетно.

0 голосов
/ 03 сентября 2011

В вашей таблице нет открывающего тега <tr>.Вам нужно иметь строку таблицы, прежде чем вы сможете поместить в нее данные.

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