我以一种简单的方式解释这个问题有点困难,所以解释会很长。 用户可以投票,如果评论是否有用(简单的是或否),当他这样做时,他的投票将发送到数据库 - >表'user_vote'。
表 user_vote 有两列 - user_id和container。每个用户在此表中只有一行。当他投票时,更新了现场容器。例如,用户对 id 205 的评论进行投票,并投票是,对于 ID为300 的评论,他投了否即可。 表 user_vote 将如下所示:
user_id-> 111;
容器 - > 205-是,300没有
这个工作正常,直到这里的代码,我需要检查用户是否对特定评论进行了投票。这里的代码部分工作 - 问题如下:
用户是否投了3次,如果评论的 id 与 $ split [0] 匹配,则会一次写 $ text ,它将产生2组按钮,如果评论的 id 不匹配,它将产生3组按钮(部分在 elseif 之后正常工作)。
我做错了什么,如何以正确的方式编写代码?
<div class="zuta_strana_komentar_korisno" data-id="<?php echo $cmm['id_comment'] ?>">
<?php if(isset($glas) && !empty($glas)) :
$br = explode(',', $glas->container);
foreach($br as $br) :
$split = explode('-', $br);
if($split[0] == $cmm['id_comment']) : ?>
<?php
if($split[1] == 'yes') :
$text = 'koristan.';
else :
$text = 'nekoristan.';
endif;
?>
<p>Ovaj komentar vam je bio <?php echo $text ?></p>
<?php else :?>
<p>Da li vam je ovaj komentar bio od pomoći?</p>
<button role="yes">Da</button><button role="no">Ne</button>
<?php
endif;
endforeach;
elseif($this->session->userdata('is_logged_in') == TRUE && empty($glas)) : ?>
<p>Da li vam je ovaj komentar bio od pomoći?</p>
<button role="yes">Da</button><button role="no">Ne</button>
<?php endif ?>
</div>
答案 0 :(得分:1)
您从根本上不正确地设计数据库。良好的数据库设计不会使用字段中的逗号分隔列表来存储信息。通过将数据存储在逗号分隔列表中,您实质上会使所有数据库的查询功能无效。使用表格,这就是你给他们的原因!
我建议创建表格:users
,comments
和votes
users
表包含id
,username
...以及其他字段
comments
表包含id
,body
,user_id
...以及其他字段
votes
表包含id
,comment_id
,user_id
,yes_or_no
...以及其他字段
然后了解如何正确使用SQL Joins
答案 1 :(得分:0)
你所要做的就是改变
$br = explode(',', $glas->container);
foreach($br as $br) :
到
$br_lines = explode(',', $glas->container);
foreach($br_lines as $br) :
但是你真的需要先将PHP逻辑与HTML分开。它看起来很可怕,我的眼睛想要流血。
答案 2 :(得分:0)
试试这段代码:
<?php if(isset($glas) && !empty($glas)) {
$br = explode(',', $glas->container);
foreach($br as $b) {
$split = explode('-', $b);
if($split[0] == $cmm['id_comment']) {
?>
<p>Ovaj komentar vam je bio <?php echo ($split[1] == 'yes')?'koristan.':'nekoristan.'; ?></p>
<?php } else {?>
<p>Da li vam je ovaj komentar bio od pomoći?</p>
<button role="yes">Da</button><button role="no">Ne</button>
}
}
}