为数据创建唯一变量

时间:2016-03-24 22:06:21

标签: javascript php html mysql

大家好,我现在为我的网站创建了一个简单的评论框。它工作得很好,但我遇到的问题是我有不同的页面需要不同的评论框。我似乎无法弄清楚如何让评论框对每个页面都是唯一的。所以现在我的数据库就是这样:

Called comments: 
id 
comment
comment1
comment_date

现在我的想法是所有内容都存储在评论中,所以我为其他页面添加了comment1来存储信息。但是我不知道如何编辑php文件以使其与comment1一起使用。对此的任何帮助都会很棒。

HTML:

<div class="comment_container">
    <div class="comments">
        <?php
            include_once("comments.php");
        ?>
    </div>
        <div class="comments_form">
        <table>
        <tr><td><textarea id="comment_text"></textarea></td>
        <td><input type="button" id="comment_process" value="Post Comment"/></td></tr>
        </table>
    </div>
</div>

JS:

$(document).ready(function() {
        $('#comment_process').click(function() {
            if ($('#comment_text').val() != "") {
                $.post("comments.php?action=post", {
                    comment: $('#comment_text').val()
                }, function(data) {
                    $('.comments').html(data);
                    $('#comment_text').val("");
                });
            }
        });
          });

PHP:

include_once("connect.php");

function convert ($date) {
    $converteddate = date("F j, Y g:ia", strtotime($date." +1day"));
    return $converteddate;
}

function getComments(){
    $comments = "";
    $sql = mysql_query("SELECT * FROM comments") or die(mysql_error());
    if(mysql_num_rows($sql) == 0){
        $comments = "<div class='each_comment'>There are no comments</div>";
    } else {
        while($row = mysql_fetch_assoc($sql)){
            $comments .= "<div class='each_comment'><small><em>".convert($row['comment_date'])."</em></small><br />".$row['comment']."</div>";
        }
    }
    return $comments;
    } 

function postComments($comment){
    $comment = mysql_real_escape_string(strip_tags($comment));
    $sql = mysql_query("INSERT INTO comments (comment, comment_date ) VALUES ('".$comment."', now())");
    return true;
}
    if((isset($_GET['action'])) && ($_GET['action']== "post")){
        postComments($_POST['comment']);
    }
    echo getComments();

再次感谢您的帮助

1 个答案:

答案 0 :(得分:1)

声明
对于未来的访客: 不要复制此代码,因为它有几个问题不仅仅是回答问题。

您需要添加的内容是评论类型的标识符。 (类型可以替换为更适合您案例的类型,例如&#39;产品&#39;用户&#39;,......无论差异是什么/与他们有什么关系)

因此,在您的数据库中添加新列:

comments
--------
id
comment
type
comment_date

现在你需要在你的所有电话中传递这种类型,它应该在你的HTML&#39; -Page(实际上是php ......)中指定。

<div class="comment_container">
  <div class="comments">
    <?php
        // specify the type needed on that page
        $type = 1;
        include_once("comments.php");
        echo getComments($type);
    ?>
  </div>
  <div class="comments_form">
    <table>
    <tr><td><textarea id="comment_text"></textarea></td>
    <td><input type="button" id="comment_process" value="Post Comment"/></td></tr>
    </table>
  </div>
</div>
<script>
    // specify the type in javascript
    var type=1;
    $(document).ready(function() {
      $('#comment_process').click(function() {
        if ($('#comment_text').val() != "") {
                                         // add the type here:
            $.post("comments.php", {
                comment: $('#comment_text').val(),
                type: type,
                action: 'post'
            }, function(data) {
                $('.comments').html(data);
                $('#comment_text').val("");
            });
        }
      });
    });
</script>

并在comments.php中:

//....some code left out here
function getComments($type){
   $comments = "";
   $sql = mysql_query("SELECT * FROM comments where type=$type") or die(mysql_error());
   if(mysql_num_rows($sql) == 0){
       $comments = "<div class='each_comment'>There are no comments</div>";
   } else {
       while($row = mysql_fetch_assoc($sql)){
           $comments .= "<div class='each_comment'><small><em>".convert($row['comment_date'])."</em></small><br />".$row['comment']."</div>";
       }
   }
   return $comments;
} 

function postComments($comment, $type){
   $comment = mysql_real_escape_string(strip_tags($comment));
   $sql = mysql_query("INSERT INTO comments (comment, comment_date, type ) VALUES ('".$comment."', now(), ".$type.")");
return true;
}
if((isset($_POST['action'])) && ($_POST['action']== "post")){
    postComments($_POST['comment'], $_POST['type']);
    // send all the comments back to client
    echo getComments($_POST['type']);
}
// moved to html-file: echo getComments($type);

注意

该代码存在几个问题 首先不要使用mysql函数。真的。从php7开始不安全和弃用/删除。使用mysqli或pdo。此外,你的SQL可以用SQL注入攻击。阅读准备好的陈述。

该代码的一般结构不是很好。 尝试分离输出和格式化获取数据。 例如,如果一个名为“getComments&#39;”的函数会更好。只会从数据库中获取注释,然后让其他人决定如何处理该数据。功能越少越好。
请阅读有关编码样式的内容,也许可以开始学习面向对象的编程。

我希望这仍然可以帮助您了解去哪里!