【问题标题】:Assign URL to every form that is submitted [closed]为提交的每个表单分配 URL [关闭]
【发布时间】:2015-01-01 04:38:58
【问题描述】:

我有表单,当用户提交表单时,信息存储在 MySQL 数据库中。我想要它,以便当用户提交表单时,它会为该表单提供一个 URL,其中包含他们在该表单上提交的信息。我需要为每个提交的表单提供一个唯一的 URL。当我转到该 URL 时,会显示该表单中的信息。我该怎么做?

【问题讨论】:

  • 你为什么需要那个?我认为你很有可能过度思考你的解决方案。
  • 向我们展示一些您已经拥有的代码,以便我们可以简单地告诉您要更改的内容,而不是编写完整的代码。我们也很懒;)
  • 尝试从<form> 中删除postget method..即<form action="your_action" method="">..您将在另一页中获得所有插入的值作为查询字符串..
  • 如果您对此有任何疑问,请告诉我..

标签: php html mysql forms


【解决方案1】:

答案和演示


我已经设置了一个php demo,所以你可以看到下面的代码做了什么。

(注意:如果您稍后查看此帖子,演示可能会离线,因为它是我使用的个人免费网站,可能会断开连接)


您可以通过为保存在表格中的每个表单分配一个 id,然后创建另一个 .php page 来获取 id 等于 x id 的表单的表单数据,来做您想做的事情。

所以,假设您保存一个表单:

  • 姓名:卢卡斯
  • 描述:卢卡斯是个好人。

您还可以自动保存:

  • id : 21894128947

然后你会通过这个 url 获得表单信息:

http://www.somewebsite.com/getform.php?id=21894128947

HTML (form.htm)

<form action="process.php" method="post">
    Name:<input type="text" name="name"><br>
    Description:<textarea name="description"></textarea><br>
    <input type="submit" value="Send">
</form>

这是一个简单的form,带有两个input 元素和一个提交按钮。您可以将其更改为您需要的任何输入。

PHP (process.php)

<?php
    $servername = "mysqlhost";
    $username = "mysqluser";
    $password = "mysqlpass";
    $dbname = "mysqldatabasename";
        $id = rand(0,100000000);
        $name = $_POST["name"];
        $description = $_POST["description"];
        $url = "../getform.php?id=".$id;

    //Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

    $sql = "INSERT INTO someTable (id,name, description) VALUES ('".$id."','".$name."','".$description."')";

    if ($conn->query($sql) === TRUE) {
        echo "<a href='".$url."'>".$url."</a>";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();
?>

我们为表单分配一个 id(0 到 1000000000 之间的随机数),我们从 $_POST["name"] 变量中获取 name,而 >描述 $_POST["description"]variable.

语法为 $_POST["n"] 其中 n 是您在 HTML 中为元素分配的名称。

然后我们创建一个 mysql 连接并将值 id,name,description 推送到表字段 id,name,description 中。

语法是“INSERT INTO table (field,field,field) VALUES ('value','value','value')" 其中table是表名,field 是表字段名称,value 是您要在该字段中推送的值。

然后我们 echo 或打印自定义表单 url 的链接,这将由 getform.php 文件处理。

SQL 表(在 phpMyAdmin 中)

这是 sql 表在我的服务器的 phpMyAdmin 中的样子。 (您应该创建此表以便代码工作)

PHP (getform.php)

<?php
    $servername = "mysqlhost";
    $username = "mysqluser";
    $password = "mysqlpass";
    $dbname = "mysqldatabasename";
    $id = $_GET["id"];

    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    } 

    $sql = "SELECT * FROM someTable WHERE id = $id";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        // output data of each row
        while($row = $result->fetch_assoc()) {
            echo "id: " .$row["id"]. "<br>";
            echo "name:  ".$row["name"]."<br>";
            echo "description: ".$row["description"]."<br>";
        }
    } else {
        echo "No results with that id";
    }
    $conn->close();
?>

我们连接到数据库,我们从$_GET["id"] 变量中获得id,它的工作方式几乎与$_POST 完全相同,但在form 中使用get method

然后我们选择包含我们通过id过滤的表单数据的特定行,其语法是:

"SELECT * FROM table WHERE id = id" 其中table是表名,id是@中提供的id 987654338@.

然后,我们通过Connection-&gt;query(sql) 得到查询结果,其中sql 是实际查询。

然后我们检查选择的行数是否大于 0,然后我们使用 while($row = $result-&gt;fetch_assoc()) 遍历每一行,其中 $row 是一个包含表中每个字段及其值的数组.

最后我们使用下面的语法来获取一个字段的值:

$row["字段"]

其中 field 是字段名称。


希望这对人有所帮助,如果我没有得到你想要做的事情,对不起:)

【讨论】:

  • 哇,如果我能给你的不仅仅是一张“支票”,我会的。非常感谢!
  • 谢谢!欣赏就够了,祝你好运:)
  • 再次感谢柔!真的很感激! :)
【解决方案2】:

我用一个例子来解释你需要什么:

假设表单提交关于一篇文章的信息(您也需要数据库中的文章表),所以每次用户提交表单时,文章表中的新行都会插入唯一的 id。

然后为了显示这篇文章(这是您在问题中想要的:提交的每个表单的唯一 URL)使用这样的 url:showArticle.php?id=(pu article id here)

【讨论】:

    猜你喜欢
    • 2012-11-05
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 2015-02-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2012-03-10
    相关资源
    最近更新 更多