我一直在阅读一些q& a但仍未设法构建我的算法,所以我要求提供一些关于如何做的帮助/建议。
所以,我有一个MySQL表,并且对于每个mysql表行,我想在表中显示它。我希望我的表只有4个cols(意味着行数根据数据库中的数据而变化)。因此,在html表中(第1行,第1列)将是来自db表第1行的数据,html(第1行,第2列)数据来自db表第2行...(第2行,第1列)数据来自db表第5行等等。
因此,该表将类似于:
[来自db row#1的数据] [来自db row#2的数据] [来自db row#3的数据] [来自db row#4的数据]
[来自db row#5的数据] [来自db row#6的数据] [来自db row#7的数据] [来自db row#8的数据]
依旧......
这是我从db获取数据的原因:
function get_albums() {
$albums = array();
$albums_query = mysql_query("SELECT 'albums'.'album_id', 'albums'.'role_id', 'albums'.'timestamp', 'albums'.'name', LEFT('albums'.'description',50) as 'description', COUNT('images'.'image_id') as 'image_count'
FROM 'albums'
LEFT JOIN 'images'
ON 'albums'.'album_id' = 'images'.'album_id'
GROUP BY 'albums'.'album_id'");
// Loop through all images
while ($albums_row = mysql_fetch_assoc($albums_query)) {
// multidimensional array
$albums[] = array(
// associative array
'id' => $albums_row['album_id'],
'role' => $albums_row['role_id'],
'timestamp' => $albums_row['timestamp'],
'name' => $albums_row['name'],
'description' => $albums_row['description'],
'image_count' => $albums_row['image_count']
);
}
return $albums;
}
显示该信息:
$albums = get_albums();
echo '<table>';
for ($i=0; $i<(count($albums)/4); $i++) {
echo '<tr>';
//HERE IS WHERE I'M LOST
foreach ($albums as $album) {
echo '<a href="view_album.php?aid=',$album['id'],'">',$album['name'],'</a> (',$album['image_count'],') image(s)<br />',$album['description'],'...';
}
echo '</tr>';
}
echo '</table>';
那么,有什么想法吗?
答案 0 :(得分:3)
// keep calculations outside of the for loop if you can
// this will display all albums (count($albums) / 4) times.
$limit = count($albums) / 4;
for ($i = 0; $i < $limit; $i++) {
echo '<tr>';
foreach ($albums as $album) {
echo '<td><a href="view_album.php?aid=' .
$album['id'] . '">' . $album['name'] . '</a> (' .
$album['image_count'] . ') image(s)<br />' .
$album['description'] . '...</td>';
}
echo "</tr>";
}
您可能正在寻找的是
<?php
$counter = 0;
foreach($albums as $album) :
// start new row
if ($counter == 0): ?>
<tr>
<?php endif; ?>
<td><a href="view_album.php?aid=<?= $album['id'] ?>"><?= $album['name'] ?></a> (<?= $album['image_count'] ?>) image(s)<br />
<?= $album['description'] ?>...</td>
<?php if ($counter++ == 3) : ?> <!-- 4 records printed in row; end row & reset counter -->
</tr>
<?php
$counter = 0;
endif;
endforeach;
$lastCount = $counter;
// print remaining empty cells
while ($counter ++ < 4) : ?>
<td> </td>
endwhile;
// close row if necessary
if ($lastCount != 3) :
</tr>
endif;