在我进一步深入代码之前得到一个错误

时间:2013-07-17 14:07:14

标签: php mysqli

这就是我如何从数据库中删除下载类别,然后使用机会点击其中的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!";
    }
}
}
?>

3 个答案:

答案 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";
}