我有这个PHP代码我试图与它下面的html布局集成但是我无法弄明白,php 代码获取所有状态发布并按顺序显示它们,但然后显示与状态发布关联的所有注释,以便状态发布可以具有 0条评论或它可能有多条评论。
如果您阅读我在PHP代码中留下的注释以及我在html中留下的注释,您将看到我面临的问题 我需要将评论放在状态帖子的表格单元格中
在下图中,该帖子有1个状态帖子和3个评论,我想要做的是让评论显示在自己的表格中,该表格将嵌套在状态帖子右侧的右侧。所以在状态帖子@ top上你看到该帖子底部有一个表格边框,该边框应该低于该帖子的最后一条评论,希望现在更有意义
<?PHP
$last_id = 0;
echo '<table width="400">';
while ($row = mysql_fetch_array($res)) {
//start output of new status post and comments
if ($row['0'] != $last_id) {
echo 'status post stuff'
}
//start output of new status post and comments
//output comment here
$last_id = $row['0'];
if($row['commentid'] != ''){
echo 'status COMMENT for above status post'
}
//END output comment here
}
echo '</table>';
?>
<table width="400">
<!-- begin status post -->
<tr>
<td width="99" valign="top" style="border-bottom: 1px solid rgb(204, 204, 204); margin: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px;"> <div class="imageSub" style="width: 90px;"> <img class="female" src="http://cache2.mycrib.net/images/image_group66/0/43/t_6871399b0962b5fb4e29ce477541e165950078.jpg" alt="Something" width="90"/> </div></td>
<td width="489" style="border-bottom: 1px solid rgb(204, 204, 204); margin: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px;">so and so said blah blah blah @ wee hours of the moring! <BR>
<!-- begin comment -->
<table width="90%" style="border: 1px solid rgb(204, 204, 204); margin: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px;">
<tr>
<td width="14%" rowspan="2" valign="top"><img class="male" src="http://cache2.mycrib.net/images/image_group34/0/39/T_653807517aff2b1f5662d865b40d87d527c8eb.jpg" alt="Something" width="45"/></td>
<td width="86%">Date Posted</td>
</tr>
<tr>
<td>Comment text</td>
</tr>
</table>
<!-- end comment -->
</td>
</tr>
<!-- end status post -->
</table>
答案 0 :(得分:4)
我会尝试这样的东西,它允许你将设计与从数据库中提取东西的逻辑分开。
1.从数据库中构建一个如下所示的数组 - 这应该是直截了当的:
<?php
$posts = array(
array(
'title' => 'Hello',
'post' => 'This is the post',
'comments' => array(
array(
'date_posted' => '28/07/2009',
'text' => 'this is the first comment'
),
array(
'date_posted' => '28/07/2009',
'text' => 'this is the second comment'
)
)
),
array(
'title' => 'Another post',
'post' => 'Hello',
'comments' => array()
)
);
?>
2.浏览数组并输出html(我已经简化但你应该能够适应)。
<?php foreach ($posts as $post): ?>
<!-- begin status post -->
<h1><?php echo $post['title']; ?></h1>
<p><?php echo $post['post']; ?></p>
<?php if ($post['comments']): ?>
<h2>Comments:</h2>
<ul>
<?php foreach ($post['comments'] as $comment): ?>
<!-- begin comment -->
<li>
<?php echo $comment['text']; ?>
etc.
</li>
<!-- end comment -->
<?php endforeach; ?>
</ul>
<?php endif; ?>
<!-- end status post -->
<?php endforeach; ?>
答案 1 :(得分:2)
你可以关闭你的php标签再次放入html然后在循环中重新打开它。
e.g:
<table width="400">
<?PHP
$last_id = 0;
echo '<table width="400">';
while ($row = mysql_fetch_array($res)) {
//start output of new status post and comments
if ($row['0'] != $last_id) {
//echo 'status post stuff'
?>
<tr>
<td width="99" valign="top" style="border-bottom: 1px solid rgb(204, 204, 204); margin: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px;"> <div class="imageSub" style="width: 90px;"> <img class="female" src="http://cache2.mycrib.net/images/image_group66/0/43/t_6871399b0962b5fb4e29ce477541e165950078.jpg" alt="Something" width="90"/> </div></td>
<td width="489" style="border-bottom: 1px solid rgb(204, 204, 204); margin: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px;">so and so said blah blah blah @ wee hours of the moring! <BR>
<?php
}
//start output of new status post and comments
//output comment here
$last_id = $row['0'];
if($row['commentid'] != ''){
echo 'status COMMENT for above status post'
}
//END output comment here
?>
<!-- begin comment -->
<table width="90%" style="border: 1px solid rgb(204, 204, 204); margin: 0px; padding-top: 10px; padding-right: 10px; padding-bottom: 10px; padding-left: 10px;">
<tr>
<td width="14%" rowspan="2" valign="top"><img class="male" src="http://cache2.mycrib.net/images/image_group34/0/39/T_653807517aff2b1f5662d865b40d87d527c8eb.jpg" alt="Something" width="45"/></td>
<td width="86%">Date Posted</td>
</tr>
<tr>
<td>Comment text</td>
</tr>
</table>
<!-- end comment -->
<?php
}
echo '</table>';
?>
答案 2 :(得分:-1)
我建议你开始学习SMARTY这样的模板系统,这会让你的问题变得更容易解决,而且你的代码也更容易阅读和理解。