使用jquery是或否投票将数据插入mysql

Posted

技术标签:

【中文标题】使用jquery是或否投票将数据插入mysql【英文标题】:Inserting data into mysql using jquery yes or no vote 【发布时间】:2014-11-23 08:28:12 【问题描述】:

如何通过添加用户选项来更新数据库?为此,我在数据库中有两个字段,当用户单击“是”时,它会更新(有用)字段,如果单击“否”按钮,则会更新(不有用)。我对javascript很陌生,所以请耐心等待! :) 提前感谢任何帮助。

php

<?php
  require 'db/conn.php':
  $id = (int)$_GET['id'];

  if($result = $db->query("SELECT * FROM table_user WHERE table_user_id = $id"))
    if($result->num_rows)
      while($row = $result->fetch_assoc()) 
        echo "
         <div class='rating'>
           <center>
             <p>Are you alrite " . $row['table_user_name'] . "?</p>
             <div>
               <button type='button' id='yes'>Yes</button>
               <button type='button' id='no'>No</button>
             </div>
           </center>
        </div>
        <div class='1' style='display:none;'>Text YES</div>
        <div class='2' style='display:none;'>Text NO</div>
        ";
      
    
  
?>

JS

$(document).ready(function()
  $("#yes").click(function()
    $(".rating").hide();
    $(".1").show();
  );
  $("#no").click(function()
    $(".rating").hide();
    $(".2").show();
  );
);

【问题讨论】:

AJAX 可以解决你的问题 如果他只是要提交表单,他可能不需要ajax。 Ajax 可能只会更加混乱。 我只想将用户选择存储在数据库中,每次用户点击是或否时,它都会更新数据库,增加字段值而不刷新页面。只有带有表单的特定类。 UPDATE table SET column = column +1 - 可选WHERE column_x = 'something' 问题是如何添加在数据库中单击的选项以增加已经存在的值 【参考方案1】:

您无法从客户端浏览器直接使用 JavaScript 连接您的 mysql 数据库。如果有可能您真的不想这样做,因为您必须将 mysql 登录凭据包含到您的 JavaScript 中,该凭据提供给客户端计算机。

当然,您可以在 JavaScript 中使用像 LocalStorage 这样的数据库,但这些数据库位于客户端计算机上。如果我猜对了,那不是你要找的。​​p>

您必须将数据发送到服务器上的脚本,然后将它们插入您的 mySQL 数据库。正如您所说,您不希望浏览器重新加载以仅提交表单不是一种选择。在这些情况下,使用 AJAX。您将找到几个教程,如何使用 AJAX 使用 JavaScript / JQuery 将数据发送到您的服务器。

在服务器端,您可以使用 php 脚本进行处理。您发布到问题的代码不是 PHP,而是简单的 html。 Fred -ii- 发布了一些示例 SQL 语句来增加一列。我建议您将PHP PDO 与mysql driver 一起使用,因为这可以帮助您防止安全问题。

【讨论】:

我只在帖子中插入我认为需要为我的提议修改的部分代码。我在此页面上使用 php 来操作数据,我将编辑插入 php 部分的代码以帮助理解我的情况 您必须将数据从浏览器发送到服务器。因此,请查看 AJAX。例如,您可以从以下教程开始:blog.teamtreehouse.com/… 谢谢@jelhan。该教程对解决我的问题很有帮助。【参考方案2】:

经过一番努力,我找到了解决办法。分享给遇到类似问题的朋友。这是我的解决方案。不管怎样,玩得开心! ;)

我认为有更好的方法来组织 JS 脚本以与管理 sql 脚本的 php 文件进行交互。如果有人愿意帮助优化它,将受到欢迎。

PHP 主要

<?php
  require 'db/conn.php':
  $id = (int)$_GET['id'];

  if($result = $db->query("SELECT * FROM table WHERE user_id = $id"))
    if($result->num_rows)
      while($row = $result->fetch_assoc()) 
        echo "
         <div class='rating'>
           <center>
             <p>Are you alrite " . $row['user_name'] . "?</p>
             <div id='rating-div'>
               <a href='#' id='yes' class='custom-btn'>Yes</a>
               <a href='#' id='no' class='custom-btn'>No</a>
               <input type='hidden' id='" . $id . "' />
             </div>
           </center>
        </div>
        ";
      
    
  
?>

JS

$(function()
    $('#yes').on('click', function(e)
        e.preventDefault();

        var usr_id = $('#rating-div input').attr('id');

        $.ajax(
            url: 'db/rating-yes.php',
            type: 'post',
            data: 'action': 'rating', 'usr_id': user_id,
            success: function(data, status)
                if(data == "ok")
                    $('.rating').html('<p>Nice!</p>');
                //end of if
            ,//end of success function
            error: function(xhr, desc, err)
                console.log(xhr);
                console.log("Details: " + desc + "\nError: "+ err);
            
        );//end of ajax
    ); //end of onclick function
); //end of main function

$(function()
    $('#no').on('click', function(e)
        e.preventDefault();

        var usr_id = $('#rating-div input').attr('id');

        $.ajax(
            url: 'db/rating-no.php',
            type: 'post',
            data: 'action': 'rating', 'usr_id': user_id,
            success: function(data, status)
                if(data == "ok")
                    $('.rating').html('<p>Oh no! :(</p>');
                //end of if
            ,//end of success function
            error: function(xhr, desc, err)
                console.log(xhr);
                console.log("Details: " + desc + "\nError: "+ err);
            
        );//end of ajax
    ); //end of onclick function
); //end of main function

PHP 评级-是的

<?php

 $rating = $_POST['action'];
 $user_id = $_POST['usr_id'];

 if($rating == "rating") 

  $conn = mysql_connect('localhost', 'root', '');
  $db = mysql_select_db('your_database');

  if(mysql_query("UPDATE table SET useful = useful + 1 WHERE user_id = $user_id"))
    echo "ok";
  
 

?>

PHP 评级-否

<?php

 $rating = $_POST['action'];
 $user_id = $_POST['usr_id'];

 if($rating == "rating") 

 $conn = mysql_connect('localhost', 'root', '');
 $db = mysql_select_db('your_database');

 if(mysql_query("UPDATE table SET not_useful = not_useful + 1 WHERE user_id = $user_id"))
echo "ok";
 

?>

【讨论】:

以上是关于使用jquery是或否投票将数据插入mysql的主要内容,如果未能解决你的问题,请参考以下文章

持久数据库连接 - 是或否?

将多个真假单选按钮插入mysql

MySQL 查询缓存:大型网站建设平台是或否

如何将输出作为是或否而不是阈值?

PDF链接和可访问性 - 下载是或否?

如何将计数器设置为是或否无线电,提交时递增?