这就是我如何从数据库中删除下载类别,然后使用机会点击其中的3个,例如,如果我选择其中的2个并单击它们并单击最后一个但是进入html代码并写入value =“Hello”,然后将其写入数据库,即使我没有输入数据库中的单词。
问题是我该怎么做只是我在这里写的那些:
$godkendteKategorier = array("Frontend", "Backend", "Design");
$kategorier = explode(",", $_POST["kategori"]);
foreach($kategorier as $kategori)
{
if(!in_array($kategori, $godkendteKategorier))
{
echo "error";
}
}
如果将我之前编写的所有代码放在一起,它应该只会继续,但如果另一个错误则不应该继续执行代码的第二部分!
<?php
if(isset($_POST["opret"]))
{
if($_POST["title"] == "")
{
echo "Husk at skrive title!";
}
elseif($_POST["tekst"] == "")
{
echo "Husk at skrive tekst!";
}
elseif($_POST["kategori"] == "")
{
echo "Husk at angive kategori!";
}
elseif($_POST["point"] == "")
{
echo "Husk at angive point!";
}
else
{
//find out if there are errors here!!
$godkendteKategorier = array("Frontend", "Backend", "Design");
$kategorier = explode(",", $_POST["kategori"]);
foreach($kategorier as $kategori)
{
if(!in_array($kategori, $godkendteKategorier))
{
echo "error!";
}
}
$arr = array(60, 40, 20, 10);
$point = implode($_POST["point"]);
if(in_array($point, $arr))
{
if ($stmt = $this->mysqli->prepare('UPDATE `bruger` SET `point`= `point` - ? WHERE `id`=?')) {
$stmt->bind_param('ii', $point, $id);
$point = implode($_POST["point"]);
$id = $_SESSION["id"];
$stmt->execute();
$stmt->close();
}
$str = $_POST["title"];
$from = array("=", "+", "&",'"', "'", " ", "æ", "Æ", "ø", "Ø", "å", "Å");
$to = array("-", "", "og", "", "", "-", "ae", "Ae", "oe", "Oe", "aa", "Aa");
$alias = strtolower(str_replace($from, $to, $str));
if ($stmt = $this->mysqli->prepare('INSERT INTO artikler (title, tekst, kategori, url, skrevet_af, emne, dato) VALUES (?, ?, ?, ?, ?, ?, ?)')) {
/* Bind parametre */
$stmt->bind_param('sssssii', $title, $tekst, $kategori, $url, $skrevet_af, $emne, $dato);
/* Sæt værdier på parametrene */
$title = $_POST['title'];
$tekst = $_POST["tekst"];
$kategori = implode(",",$_POST["kategori"]);
$url = $alias;
$skrevet_af = $_SESSION["navn"] . " " . $_SESSION["efternavn"];
$emne = implode($_POST["point"]);
$dato = date('Y-m-d H:i:s');
/* Eksekver forespørgslen */
$stmt->execute();
echo "ok";
$stmt->close();
}
}
else
{
echo "error";
}
}
}
?>
我试过了:
<?php
if(isset($_POST["opret"]))
{
if($_POST["title"] == "")
{
echo "Husk at skrive title!";
}
elseif($_POST["tekst"] == "")
{
echo "Husk at skrive tekst!";
}
elseif($_POST["kategori"] == "")
{
echo "Husk at angive kategori!";
}
elseif($_POST["point"] == "")
{
echo "Husk at angive point!";
}
elseif(count(array_diff(explode(",", $_POST["kategori"]), array("Frontend", "Backend", "Design"))))
{
echo "error";
}
else
{
$arr = array(60, 40, 20, 10);
$point = implode($_POST["point"]);
if(in_array($point, $arr))
{
if ($stmt = $this->mysqli->prepare('UPDATE `bruger` SET `point`= `point` - ? WHERE `id`=?')) {
$stmt->bind_param('ii', $point, $id);
$point = implode($_POST["point"]);
$id = $_SESSION["id"];
$stmt->execute();
$stmt->close();
}
$str = $_POST["title"];
$from = array("=", "+", "&",'"', "'", " ", "æ", "Æ", "ø", "Ø", "å", "Å");
$to = array("-", "", "og", "", "", "-", "ae", "Ae", "oe", "Oe", "aa", "Aa");
$alias = strtolower(str_replace($from, $to, $str));
if ($stmt = $this->mysqli->prepare('INSERT INTO artikler (title, tekst, kategori, url, skrevet_af, emne, dato) VALUES (?, ?, ?, ?, ?, ?, ?)')) {
/* Bind parametre */
$stmt->bind_param('sssssis', $title, $tekst, $kategori, $url, $skrevet_af, $emne, $dato);
/* Sæt værdier på parametrene */
$title = $_POST['title'];
$tekst = $_POST["tekst"];
$kategori = implode(",",$_POST["ka
tegori"]);
$url = $alias;
$skrevet_af = $_SESSION["navn"] . " " . $_SESSION["efternavn"];
$emne = implode($_POST["point"]);
$dato = date('Y-m-d H:i:s');
/* Eksekver forespørgslen */
$stmt->execute();
?>
<script language="javascript" type="text/javascript">
window.location.href = "/indhold/";
</script>
<?php
$stmt->close();
} else {
/* Der er opstået en fejl */
echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
}
}
else
{
echo "Du skal ikke snyd!";
}
}
}
?>
答案 0 :(得分:0)
我不明白你想要达到的目标,但你可以用die('error!')
而不是echo('error!')
来停止脚本的执行。
答案 1 :(得分:0)
我并不是100%确定我完全明白你要做什么,但我认为你需要的是一个控制变量。只需创建一些var设置为true,如果任何检查错误,则将其设置为false。另一种方法是在每个错过的支票上抛出异常,然后尝试抓住它们。最后一个是更好的方法,因为它为您提供了更好的调试信息,并且更加灵活。
答案 2 :(得分:0)
从23rd到32nd删除行,并将此代码放在第20行。
elseif(count(array_diff(explode(",", $_POST["kategori"]), array("Frontend", "Backend", "Design"))))
{
echo "error";
}