在发布到php

时间:2019-04-23 17:10:59

标签: php url-redirection

我正在尝试使用Front Controller的逻辑将条目写入数据库。这就导致了问题,我已经输出了一些信息,因此已经给出了输出,并且无法使用标头。

主要功能是简单的电话簿。您可以将名称和数字(多个)写入数据库。提交条目后,它应重定向到显示所有条目的页面。

我尝试将重定向作为检查的第一件事。在使用Front Controller创建视图之前尝试实现所有业务逻辑,但是由于这是Submit按钮的用法,我有点困惑。

我有点担心我的Front Controller的实现和页面Add的构建(在该页面上按下了Submit)意味着已经创建了输出,并且标题不起作用。这有可能吗?

Index.php看起来像这样

<?php
include "redirect.php";
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Harjutustund 1</title>

    <link rel="stylesheet" type="text/css" href="mystyle.css">

</head>
<body>
<?php
    include "navigation.php";
?>

<br><br>

<?php
    include "footer.php"

?>

</body>
</html>

重定向看起来像这样

<?php

$firstName = $_POST["firstName"];
$lastName = $_POST["lastName"];
$phones = array($_POST["phone1"]);
if (!empty($_POST["phone2"])) {
    array_push($phones, $_POST["phone2"]);
}

if (!empty($_POST["phone3"])) {
    array_push($phones, $_POST["phone3"]);
}

if (!empty($firstName) && (!empty($lastName)) && (!empty($phones))) {

    try {
//open the database
        header("Location: index.php?command=show_list_page");
        $db = new PDO('sqlite:db1.sqlite');
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

//Insert record
        $insert = "INSERT INTO contacts (firstName, lastName) VALUES (:firstName, :lastName);";
        $stmt = $db->prepare($insert);

        $stmt->bindParam('firstName', $firstName);
        $stmt->bindParam('lastName', $lastName);

        $stmt->execute();

        // get Autoincrement value
        //$id_value = $db->exec("select seq from sqlite_sequence where name=\"contacts\";");
        $id_value = $db->lastInsertId();

        foreach ($phones as $phone) {

            $insert = "INSERT INTO phones (contact_id, number) VALUES (:id_value, :phone);";
            $stmt = $db->prepare($insert);

            $stmt->bindParam('id_value', $id_value);
            $stmt->bindParam('phone', $phone);

            $stmt->execute();
            print_r($db->errorInfo());

        }
    } catch
    (PDOException $e) {
        print 'Exception : ' . $e->getMessage();
    }
}
$db = NULL;

我想要的是首先处理所有业务逻辑,然后创建视图。按提交后,记录将被存储,并且重定向会将我带到整个列表。

0 个答案:

没有答案