我有一个评论BOX,它有5个字段,一个是姓名,电子邮件,RATE,评论,articleid。
费率字段是一种无线电类型,它有5个单选按钮,值为1,2,3,4,5。如果有人点击率我的产品,它应该保存数据库中的额定值。我在数据库中使用RATE作为INT,它在其中存储0,如果我在数据库中使用RATE作为TEXT,它在数据库中存储“on”。它不存储像1,2,3,4,5这样的评级值。
我的表单代码
<form action="manage_comments.php" method="post">
<span class="rating">
<input type="radio" class="rating-input" id="rate" name="rate" value="1">
<label for="rating-input-1-5" class="rating-star"></label>
<input type="radio" class="rating-input" id="rate" name="rate" value="2">
<label for="rating-input-1-4" class="rating-star"></label>
<input type="radio" class="rating-input" id="rate" name="rate" value="3">
<label for="rating-input-1-3" class="rating-star"></label>
<input type="radio" class="rating-input" id="rate" name="rate" value="4">
<label for="rating-input-1-2" class="rating-star"></label>
<input type="radio" class="rating-input" id="rate" name="rate" value="5">
<label for="rating-input-1-1" class="rating-star"></label>
</span>
<input type='hidden' name='articleid' id='articleid' value='<?php echo $_GET["id"]; ?>' />
<input type="submit" name="submit" value="Publish Now"></p>
</form>
我的PHP代码
<?php
if( $_POST )
{
$con = mysql_connect("localhost","asfi","asfi");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("aw-tech", $con);
$post_rate = (isset($_POST['rate'])) ? $_POST['rate'] : '';
$articleid = (int)isset($_GET['id']);
if(!is_numeric($articleid))
die('invalid article id');
$sql="INSERT INTO `aw-tech`.`comment` (cid, name, email, website, comment, timestamp, rate, articleid) VALUES (NULL, '$_POST[name]', '$_POST[email]', '$_POST[website]', '$_POST[comment]', CURRENT_TIMESTAMP, '$post_rate', ".$articleid.")";
if (!mysql_query($sql,$con))
{
die('Error: ' . mysql_error());
}
echo "Comment Saved";
mysql_close($con);
}
?>
其次我的articleid保存总是0 ..我的页面ID是.php?id = 49,它是49但是如果我对该页面发表评论,它会将我的文章ID保存为0。
articleid&amp; rate在数据库中都是INT,我在数据库中也使用它们作为TEXT但是没有用
答案 0 :(得分:1)
我想我发现了你的问题。将表单声明更改为:
<form action="manage_comments.php" method="post">
删除行:
<input type='hidden' name='articleid' id='articleid' value='<?php echo $_GET["id"]; ?>' />
来自以下的PHP代码:
$post_rate = (isset($_POST['rate'])) ? $_POST['rate'] : '';
$articleid = (int)isset($_GET['id']);
为:
$post_rate = (isset($_POST['rate'])) ? $_POST['rate'] : 0;
$articleid = (int)isset($_GET['id']) ? $_GET['id'] : 0;
对于调试,在$sql
变量之后添加此内容并在此处插入注释:
print_r($_GET);
print_r($_POST);
echo $sql;
希望它有效。
答案 1 :(得分:0)
当你发布表格时,你把:manage_comments.php 所以“id”会丢失!
您可以执行以下操作:manage_comments.php?id=<?php=$_GET[id]?>
或
提交表格后
使用$_POST[articleid]
而不是$_GET['id']
答案 2 :(得分:0)
我认为它应该是
$ post_rate =(isset($ _ POST ['rate']))? $ _POST ['rate']:'';
$ articleid =(int)isset($ _ POST ['articleid']);