0

我很难用简单的方式解释这个问题,所以解释会很长。如果评论有用与否,用户可以投票(简单的是或否),当他这样做时,他的投票被发送到数据库 -> 表'user_vote'。

user_vote有两列 - user_id 和容器。每个用户在此表中只有一行。当他投新票时,字段容器会更新。例如,用户对id 为 205的评论投了票,他投了yes,对id 为 300的评论投了no。表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>
4

3 回答 3

1

您从根本上不正确地设计了您的数据库。良好的数据库设计不会在字段中使用逗号分隔的列表来存储信息。通过将数据存储在逗号分隔的列表中,您实际上取消了所有数据库的查询功能。使用表格,这就是为什么给你它们!

我建议创建表:users、、commentsvotes

users表包含id, username... 在其他字段中

comments表包含id, body, user_id...以及其他字段

votes表包含id, comment_id, user_id, yes_or_no... 等字段

然后掌握如何正确使用SQL 连接

于 2012-08-14T22:01:20.207 回答
0

你所要做的就是改变

$br = explode(',', $glas->container);
foreach($br as $br) :                                  

$br_lines = explode(',', $glas->container);
foreach($br_lines as $br) :                                  

但是您确实需要首先将您的 PHP 逻辑与 HTML 分开。它看起来太可怕了,我的眼睛想要流血。

于 2012-08-14T10:57:02.530 回答
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>
       }
    }
}
于 2012-08-14T21:16:22.927 回答