Максимум четыре <td>, затем начните новый <tr>(MySQL Query) - PullRequest
2 голосов
/ 14 сентября 2011
echo '<table>';
echo '<tr>';
$i = '';
while($res = mysql_fetch_assoc($mysqlqry)){
    echo '<td><a href="'. $res['link'] .'"><img src="'. $res['link'] .'" style="border: 0px; width: 150px; height: 150px;" alt="afbeelding"></a></td>';
    $i++;
    if($i = '4'){
        echo '</tr><tr>';
    }
}
echo '</tr>';
echo '</table>';

Я хочу установить максимум 4 <td> с, а затем установить новый <tr>, когда получу что-то из таблицы MySQL, только это не является действительным w3 и не работает.

Как я могу сделать эту работу и установить другие <td> с, если результатов меньше 8?

Ответы [ 4 ]

4 голосов
/ 14 сентября 2011

Ваша проблема заключается в следующем:

if($i = '4'){

Это присваивает '4' $i.Вы, вероятно, хотите сделать что-то вроде:

if($i % 4 == 0){

Другими словами, каждый раз, когда $i, деленное на четыре, является четным делением (без остатка), начинайте новый <tr>.

2 голосов
/ 14 сентября 2011
echo '<table>';
for ($i=0, $max = 4; $res = mysql_fetch_(...); ) {
    if ($i++ % $max == 0)
        echo '<tr>';

    echo '<row stuff>';

    if ($i % $max == 0)
        echo '</tr>';
}

echo '</table>';

Вы также можете жестко кодировать $max, если хотите.При этом также не создаются «фантомные» строки.

Совет. Не используйте 'string', если ваше значение является числовым.

1 голос
/ 12 марта 2012

Вот как я это делал годами ...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>4 Column Display Table</title>
</head>
<body>

<?php 
//connection

$con = mysqli_connect("Host", "UserName", "Password", "TableName");
if (!$con)
  {
  die('Database connection is - <strong>unsuccessful</strong> ' . mysqli_error());
  }
//The Query
 $get_query_sql = "SELECT * FROM Query";
 $get_query_res = mysqli_query($con, $get_query_sql) or die(mysqli_error($con));

//The Results
while  ($res = mysqli_fetch_assoc($get_query_res)) {

$Column1 = $res['Column1'];
$Column2 = $res['Column2'];

//Table display
echo '<table align="center" border="1px" bordercolor="#999999" cellpadding="5px"     cellspacing="0" bgcolor="#CCCCCC" style="vertical-align:middle">';
echo '<tr>';
 $i = 1;

echo '<td align="middle" height="200px" width="200px"><strong>ID =</strong> '.$Column1.' and the <strong>Number =</strong>'.$Column2.' </td>'; 
if($i++ % 4 == 0){
    echo '</tr><tr>';
   }
}
 echo '</tr>';
 echo '</table>';
?>
</body>
</html>
0 голосов
/ 14 сентября 2011
if($i == 4){
    echo '</tr><tr>';
    $i = 0;
}

Должно работать нормально, я уже делал похожий код, вам также нужно заполнить последнюю строку пробелами (или использовать разметку).

Редактировать:

Или фантазируй:

echo '<table>';
echo '<tr>';
$i = 0;
while($res = mysql_fetch_assoc($mysqlqry)){
    echo '<td><a href="'. $res['link'] .'"><img src="'. $res['link'] .'" style="border: 0px; width: 150px; height: 150px;" alt="afbeelding"></a></td>';
    if($i++ % 4 == 0){
        echo '</tr><tr>';
    }
}
echo '</tr>';
echo '</table>';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...