使用jquery是或否投票将数据插入mysql
Posted
技术标签:
【中文标题】使用jquery是或否投票将数据插入mysql【英文标题】:Inserting data into mysql using jquery yes or no vote 【发布时间】:2014-11-23 08:28:12 【问题描述】:如何通过添加用户选项来更新数据库?为此,我在数据库中有两个字段,当用户单击“是”时,它会更新(有用)字段,如果单击“否”按钮,则会更新(不有用)。我对javascript很陌生,所以请耐心等待! :) 提前感谢任何帮助。
<?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的主要内容,如果未能解决你的问题,请参考以下文章