即時通訊試圖建立一個評分系統,您可以從1-5星級評分,然後顯示平均評分。爲什麼我的ajax調用不在數據庫中存儲數據?沒有PHP或控制檯錯誤
這個即時通訊使用Ajax,jQuery,PHP,MySQL和HTML ofc。
這是基礎代碼的腳本和基本的HTML:
<?php
include('includes/config.php');
$post_id = '1';
?>
<div class="ratesite">
<h4>Betygssätt denna webbplats!</h4>
<div class="rate-ex1-cnt">
<div id="1" class="rate-btn-1 rate-btn"></div>
<div id="2" class="rate-btn-2 rate-btn"></div>
<div id="3" class="rate-btn-3 rate-btn"></div>
<div id="4" class="rate-btn-4 rate-btn"></div>
<div id="5" class="rate-btn-5 rate-btn"></div>
</div>
<?php require_once 'includes/avgrate.php'; ?>
<div id="avg-rate">
<h5>Snittvärdet är <strong><?php echo $rate_value; ?></strong>.</h5>
</div>
</div>
<!-- Script för rating -->
<script>
$(function(){
$('.rate-btn').hover(function(){
$('.rate-btn').removeClass('rate-btn-hover');
var therate = $(this).attr('id');
for (var i = therate; i >= 0; i--) {
$('.rate-btn-'+i).addClass('rate-btn-hover');
};
});
$('.rate-btn').click(function(){
var therate = $(this).attr('id');
var dataRate = 'act=rate&post_id=<?php echo $post_id; ?>&rate='+therate; //
$('.rate-btn').removeClass('rate-btn-active');
for (var i = therate; i >= 0; i--) {
$('.rate-btn-'+i).addClass('rate-btn-active');
};
$.ajax({
type : "POST",
url : "includes/ajax.php",
data: dataRate,
success:function(){}
});
});
});
</script>
從我可以告訴使用「的console.log」來搜索腳本故障,腳本工作,因爲它應該,所以我想錯是我的ajax.php中的位置:(即時得到0 PHP錯誤,並在控制檯中沒有錯誤)
<?php
require_once 'config.php';
if($_POST['act'] == 'rate'){
//Kontrollera ifall användaren (IP) redan röstat.
$ip = $_SERVER["REMOTE_ADDR"];
$therate = $_POST['rate'];
$thepost = $_POST['post_id'];
$sql = "SELECT * FROM ratings where ip= '$ip'";
$result = mysqli_query($conn, $sql);
while($data = mysqli_fetch_assoc($result)){
$rate_db[] = $data;
}
if(@count($rate_db) == 0){
mysqli_query("INSERT INTO ratings (id_post, ip, rate)VALUES('$thepost', '$ip', '$therate')");
}else{
mysqli_query("UPDATE ratings SET rate= '$therate' WHERE ip = '$ip'");
}
}
?>
數據庫連接是否正常工作,就像我跟阿賈克斯初學者我想通如果有人能找到這個錯誤,在這裏問一個人會很好。
此外,HTML頭腳本鏈接等
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=utf-8" />
<!-- Visa användarnamn som titel i sidfliken -->
<title>Album</title>
<link rel="stylesheet" href="css/stylesheet.css" type="text/css" />
<!-- PIROBOX -->
<!-- -->
<link rel="stylesheet" type="text/css" href="css_pirobox/style_1/style.css"/>
<!--::: OR :::-->
<!-- <link rel="stylesheet" type="text/css" href="css_pirobox/style_2/style.css"/> -->
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.2.custom.min.js"></script>
<script type="text/javascript" src="js/pirobox_extended.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$().piroBox_ext({
piro_speed : 900,
bg_alpha : 0.1,
piro_scroll : true //pirobox always positioned at the center of the page
});
});
</script>
</head>
**編輯
我包括像這樣的連接:
<?php
$dbhost = 'xxxxx';
$dbuser = 'xxxxx';
$dbpass = 'xxxxx';
$dbname = 'xxxxx';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname)
or die('Kunde inte ansluta till databas');
$db_connected = mysqli_select_db($conn, $dbname);
?>
看起來您的更新和插入查詢缺少連接變量。一般格式是mysqli_query($ connection,$ query);它看起來像你缺少$連接。這是我對你的問題的快速猜測。 –
[您的腳本存在SQL注入攻擊風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)瞭解[準備](http: //en.wikipedia.org/wiki/Prepared_statement)[MySQLi]的聲明(http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)。 –
您正在假設您的查詢正常工作。您需要執行一些錯誤檢查。 –