PHP验证提交
我正在做一个项目,用户可以点击一个项目。如果用户以前单击过它,那么当他再次尝试单击它时,它不应该工作或在数据库中插入值。当我单击第一个项目时(我通过id直接显示数据库中的项目),它会插入到数据库中,然后当我再次单击它时,它会工作(给我错误代码),而不会插入到数据库中。当我点击其他所有项目时,即使我第二次、第三次、第四次点击,所有这些都会插入数据库。请帮帮我。谢谢PHP验证提交,php,Php,我正在做一个项目,用户可以点击一个项目。如果用户以前单击过它,那么当他再次尝试单击它时,它不应该工作或在数据库中插入值。当我单击第一个项目时(我通过id直接显示数据库中的项目),它会插入到数据库中,然后当我再次单击它时,它会工作(给我错误代码),而不会插入到数据库中。当我点击其他所有项目时,即使我第二次、第三次、第四次点击,所有这些都会插入数据库。请帮帮我。谢谢 <?php session_start(); $date = date("Y-m-d H:i:s"); include("p
<?php
session_start();
$date = date("Y-m-d H:i:s");
include("php/connect.php");
$query = "SELECT * FROM test ORDER BY `id` ASC LIMIT 3";
$result = mysql_query($query);
if (isset($_SESSION['username'])) {
$username = $_SESSION['username'];
$submit = mysql_real_escape_string($_POST["submit"]);
$tests = $_POST["test"];
// If the user submitted the form.
// Do the updating on the database.
if (!empty($submit)) {
if (count($tests) > 0) {
foreach ($tests as $test_id => $test_value) {
$match = "SELECT user_id, match_id FROM match_select";
$row1 = mysql_query($match)or die(mysql_error());
while ($row2 = mysql_fetch_assoc($row1)) {
$user_match = $row2["user_id"];
$match = $row2['match_id'];
}
if ($match == $test_id) {
echo "You have already bet.";
} else {
switch ($test_value) {
case 1:
mysql_query("UPDATE test SET win = win + 1 WHERE id = '$test_id'");
mysql_query("INSERT INTO match_select (user_id, match_id) VALUES ('1','$test_id')");
break;
case 'X':
mysql_query("UPDATE test SET draw = draw + 1 WHERE id = '$test_id'");
mysql_query("INSERT INTO match_select (user_id, match_id) VALUES ('1','$test_id')");
break;
case 2:
mysql_query("UPDATE test SET lose = lose + 1 WHERE id = '$test_id'");
mysql_query("INSERT INTO match_select (user_id, match_id) VALUES ('1','$test_id')");
break;
default:
}
}
}
}
}
echo "<h2>Seria A</h2><hr/>
<br/>Welcome,".$username."! <a href='php/logout.php'><b>LogOut</b></a><br/>";
while ($row = mysql_fetch_array($result)) {
$id = $row['id'];
$home = $row['home'];
$away = $row['away'];
$win = $row['win'];
$draw = $row['draw'];
$lose = $row['lose'];
echo "<br/>",$id,") " ,$home, " - ", $away;
echo "
<form action='seria.php' method='post'>
<select name='test[$id]'>
<option value=\"\">Parashiko</option>
<option value='1'>1</option>
<option value='X'>X</option>
<option value='2'>2</option>
</select>
<input type='submit' name='submit' value='Submit'/>
<br/>
</form>
<br/>";
echo "Totali ", $sum = $win+$lose+$draw, "<br/><hr/>";
}
} else {
$error = "<div id='hello'>Duhet te besh Log In qe te vendosesh parashikime ndeshjesh<br/><a href='php/login.php'>Kycu Ketu</a></div>";
}
?>
如果数据已经存在,则通过查找表来验证记录的插入
例如,最简单的方法是
$query = "SELECT * FROM match_select WHERE user_id = '$user_id'";
$result = mysql_query($query);
if(mysql_num_rows($result) > 0)
{
// do not insert
}
else
{
// do something here..
}
在您的表单中有
(每个项目一个),然后当您提交表单时,您将获得$tests=$\u POST[“test”]
您不需要在表单中指定索引,只需执行
,最终可以添加一个id为
的隐藏字段。第二部分是目前不好的验证;您只需通过查询检查数据库中是否已存在该项您的问题在于:
$match = "SELECT user_id, match_id FROM match_select";
$row1 = mysql_query($match)or die(mysql_error());
while ($row2 = mysql_fetch_assoc($row1)) {
$user_match = $row2["user_id"];
$match = $row2['match_id'];
}
您没有正确检查它。您必须检查match\u select
中是否存在user\u id
和相关match\u id
的条目。否则,$match
将始终等于数据库中最后插入行的match\u id
字段:
$match = "SELECT *
FROM `match_select`
WHERE `user_id` = '<your_id>'
AND `match_id` = '$test_id'";
$matchResult = mysql_query($match)or die(mysql_error());
if(mysql_num_rows($matchResult)) {
echo "You have already bet.";
}
$match=“选择*
从'match_select'开始
其中`user\u id`=''
和'match_id`='test_id';
$matchResult=mysql\u query($match)或die(mysql\u error());
if(mysql_num_行($matchResult)){
echo“您已经下注了。”;
}
顺便说一下,考虑使用<代码> PDO < /代码>或<代码> MySqLI:/COD>操作数据库。代码>mysql
函数已弃用:
您的错误代码是什么样子的?到底是什么不起作用?您是否使用
错误报告(E_ALL)调试代码代码>等?注意:未定义的索引:在第17行的/home/content/16/11285316/html/seria.php中提交注意:未定义的索引:在第19行的/home/content/16/11285316/html/seria.php中测试我认为这些行与我的问题无关?它说,$\u POST['test']
不存在。这意味着您的代码将在if(count($tests)>0)
行停止工作,因为$tests
为null
如果您的条件不在while循环中,请将其保留在该行,并修复为什么使用全文搜索LIKE
语句查询ID
?为什么不直接使用,其中user\u id=$user\u id
$id
应该是
,谢谢你的帮助。。但是现在我有另一个问题。。我包括照片。。正常页面--->。。。新的错误页-->。。。(它显示db a条目上的所有次数entered@Henri好像你在某处将条目插入到test
表中,但我在你发布的代码中看不到它。整个事情都在switch语句中。我没有其他代码将内容插入testI,但这似乎很奇怪。这是另一个问题。@Henri Ho是的…哈哈。我明白了。我使用了一个$result
变量。用$matchResult
或其他东西替换它:)