首页 > 解决方案 > php 实时表单提交

问题描述

让我解释一下我想要什么。

我想在输入时使用 db add 在列表中添加一个值,而无需更改页面form,然后单击submit

但是在这段代码中,我必须再刷新一次才能添加,并且一次也添加了两次。

我怎样才能做到这一点?

<?php
    $conn = mysqli_connect('127.0.0.1','MYID','MYPASS','MYDB');
    $sql = "SELECT * FROM MYTABLE";
    $rs = mysqli_query($conn, $sql);

    $list = '';
    while($row = mysqli_fetch_array($rs)) {
            $list = $list."<li><a href=\"index.php?id={$row['id']}\">{$row['title']}</a></li>";
    }

    $article = array(
        'title' => 'Welcome!',
        'description' => 'Hello, Web!'
    );

    if (isset($_GET['id'])){
        $filtered_id = mysqli_real_escape_string($conn, $_GET['id']);

        $sql = "SELECT * FROM topic WHERE id={$filtered_id}";
        $rs = mysqli_query($conn, $sql);
        $row = mysqli_fetch_array($rs);
        $article['title'] = $row['title'];
        $article['description'] = $row['description'];
    }

    if ($_POST['title'] != null){
        $sql_in = "INSERT INTO topic (title, description, created) VALUES ('{$_POST['title']}', '{$_POST['description']}', NOW())";

        $rs_in = mysqli_query($conn, $sql_in);

        if ($rs_in === false) {
                $msg = mysqli_error($conn);
        } else {
                $msg = 'Success.';
        }
    } else {
        $msg = 'Fill in';
    }
?>

<!doctype html>
<html>
        <head>
                <meta charset="utf-8">
                <title>WEB</title>
        </head>

        <body>
                <h1><a href="index.php">WEB</a></h1>
                <ol>
                        <?=$list?>
                </ol>
                <details>
                        <summary>Create</summary>
                        <form action="./index.php" method="POST">
                                <p><input type="txt" name="title" placeholder="title"></p>
                                <p><textarea name="description" placeholder="description"></textarea></p>
                                <p><input type="submit"></p>
                                <p><?=$msg?></p>
                        </form>
                </details>
        </body>
</html>
                <h2><?=$article['title']?></h2>
                <?=$article['description']?>
        </body>
</html>

标签: phphtmlmysql

解决方案


在 php 中,实时不是一件事,但有一种解决方法,您可以使用推送器https://pusher.com/docs之类的事件服务并立即在客户端接收事件。

还有其他网站提供此功能,因此在选择它们之前进行搜索,您也可以随时在 node.js、c#、go 中构建您的事件服务器


推荐阅读