【问题标题】:Simple like/dislike rating system in php and MySQLphp和MySQL中简单的喜欢/不喜欢评级系统
【发布时间】:2011-08-14 18:40:14
【问题描述】:

我想为我的随机视频网站添加一个简单的评分系统 (id = youtube id)
我对 php 和 MySQL 没有太多经验,我不确定如何以这种方式使用提交按钮更新字段:

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" name"rateform">
  <input name="rateup" type="image" src="up.png" id="rateup" value="rateup" />
  <input name="ratedown" type="image" src="down.png" id="ratedown" 
   value="ratedown" />
</form>
<?PHP
mysql_connect(",",",",",")or die(mysql_error());
mysql_select_db(",")or die(mysql_error());
if ($_POST['rateup'])
{
    mysql_query("UPDATE utube SET rating = rating + 1 
                WHERE (id = $pageid)");} else if ($_POST['ratedown']) {
    mysql_query("UPDATE utube SET rating = rating - 1 
                WHERE (id = $pageid)");}

?>

我需要做些什么来将 html 和 php 链接在一起吗?
所有语句都自己返回正确的值(即 $pageid)
但是当我按下按钮时,任何字段都没有发生任何事情。

当我将 mysql 查询直接放入 phpmyadmin 时,它也可以工作,
我只是不确定 html 如何与 php 通信?
如果有人能告诉我这是如何工作的,我将不胜感激,以便我可以让我的脚本正常工作。

【问题讨论】:

  • $pageid 来自哪里?
  • 代码中可能存在 SQL 注入,请将 WHERE (id = $pageid)" 替换为 WHERE (id = '$pageid')" (注意引号) 并确保 $pageid 使用 mysql_real_escape_string() 进行转义,见:stackoverflow.com/questions/332365/…
  • @mario @Johan 哦,哇,我为此感到愚蠢。 $pageid 需要用引号引起来,因为它是一个 varchar 字符串。添加引号修复了所有问题,现在评级工作。 $pageid 只是从我的 id 表中返回一个随机值(这样每次刷新都会提供一个随机视频来观看。)我会看看修复 sql 注入,再次感谢!

标签: php mysql html forms rating


【解决方案1】:

让我们开始寻找问题所在:我只能想象两个原因:

  • PHP 未连接到数据库。尝试直接从您的脚本执行查询(将其从if 语句中取出。
  • if 语句由于某种原因是错误的:尝试将 mysql_query 替换为 print('up');print('down');

顺便说一句,else if 是一个词的陈述。您可以将其替换为elseif

【讨论】:

  • 非常感谢,它帮助我发现了问题。我做的mysql_query肯定有问题。
【解决方案2】:

图像按钮发布点击坐标值,除了表单名称。输入名称_x & 输入名称_y

if ($_POST['rateup_x'])
{
    mysql_query("UPDATE utube SET rating = rating + 1 
      WHERE (id = $pageid)");} else if ($_POST['ratedown_x']) {
    mysql_query("UPDATE utube SET rating = rating - 1 
      WHERE (id = $pageid)");}

【讨论】:

    【解决方案3】:
    <?PHP
    mysql_connect("hostname","username","password")or die(mysql_error());
    mysql_select_db("dbname")or die(mysql_error());
    if ($_POST['rateup'])
    {
        mysql_query("UPDATE utube SET rating = rating + 1 
                    WHERE (id = $pageid)");} else if ($_POST['ratedown']) {
        mysql_query("UPDATE utube SET rating = rating - 1 
                    WHERE (id = $pageid)");}
    
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-26
      • 2018-05-27
      • 2022-12-13
      • 2012-01-24
      • 1970-01-01
      • 2019-07-26
      相关资源
      最近更新 更多