【问题标题】:Simple html/php form to output on the same page在同一页面上输出的简单 html/php 表单
【发布时间】:2011-06-28 16:09:54
【问题描述】:

基本上我想要的只是让用户进入网站,输入他们的消息和姓名,结果应该显示在同一页面中,当另一个用户再次进入时,前一个用户的结果应该在那里并且出现的任何内容都应该添加到列表中。

目前我有:

 <form id="form1" name="form1" method="post" action="">
 <label>Please type in a message
 <input type="text" name="msg" id="msg" />
 </label>
 <label>and your name
 <input type="text" name="pin" id="name" />
 </label>

 <p>
 <label>Submit
 <input type="submit" name="submit" id="submit" value="Submit" />
 </label>
 </p>
 </form>

<?php 
$msg = $_POST[msg];
 $name = $_POST[name];

?>
 <br />
 <?php echo "$msg"?>
 <?php echo "$name"?>

但是当输入另一条记录时,前一条就丢失了……

提前致谢

【问题讨论】:

  • 基本上你需要将数据永久存储在某个地方。搜索 PHP+MySQL 方法
  • 仅供参考,使用正确的方法来处理关联数组索引,$_POST[msg] 仅因为 PHP 未定义的常量行为而起作用。如果有人声明了一个名为“msg”的常量(与“msg”的值不同),您的代码将停止工作。正确的方法是$_POST['msg'];

标签: php html forms


【解决方案1】:

这应该做你想做的事。它从posts.txt 加载以前的帖子,添加当前帖子,显示帖子并保存。您需要确保posts.txt 存在并且具有正确的权限。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml">
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Untitled Document</title>
 </head>

<body>
 <form id="form1" name="form1" method="post" action="">
 <label>Please type in a message
 <input type="text" name="msg" id="msg" />
 </label>
 <label>and your name
 <input type="text" name="name" id="name" />
 </label>

 <p>
 <label>Submit
 <input type="submit" name="submit" id="submit" value="Submit" />
 </label>
 </p>
 </form>

 <?php
    $msg = $_POST["msg"];
    $name = $_POST["name"];
    $posts = file_get_contents("posts.txt");
    $posts = "$msg - $name\n" . $posts;
    file_put_contents("posts.txt", $posts);
    echo $posts;
 ?>

</body>
 </html>

【讨论】:

  • 太棒了!这正是我想要的!非常感谢
【解决方案2】:

这就是需要数据库的地方。只需制作一个简单的 sql 数据库或创建一个每次用户发布他/她的消息时附加的文件。 所以每当你的页面加载时,它必须先加载之前存储的数据,然后再继续。

【讨论】:

  • 注意,接受的答案使用文本作为数据库。如果 OP 计划写不止一页,你的解决方案会更好——想象一下'posts1.txt'、'posts2.txt'、'posts3.txt'......
【解决方案3】:

几件事:

$first = $_POST['msg'];
$second = $_POST['pin'];

您需要将这些单引号括在 post 参数中,以便将其保存到变量中。

其次,为了存储数据,您需要将其保存在某个地方,无论是文本文件还是 MySQL 数据库。发布数据仅在表单发布时存在。之后,它就被销毁了。

对您来说最简单的事情可能是附加到一个文本文件(如果这是一个简单的应用程序)。

This should get you started.

【讨论】:

    【解决方案4】:

    您需要保留或保存以前会话中的数据。一种选择是使用平面文件,将条目保存到文本文件中。对于流量很少的非常小的网站,这可能没问题。本质上,当有人发布内容时,您只会在其前面添加本地文件的内容。

    另一个选项是查看数据库选项,例如 MySQL。使用此方法,您会将每条消息/姓名组合插入本地数据库,然后提取所有记录(或第 n 个最新记录)并将它们显示在您的评论表单下方。

    【讨论】:

    • 谢谢,我认为单文件选项最适合...不过,您能给我指出一个方向吗?怎么样?
    • @khalid 我鼓励您查看 PHP 中的 file-editing functions 并尝试制定您自己的解决方案,但如果您想在那里研究一些项目,我只是偶然发现了这个免费的选项:inverudio.com/guestbook
    【解决方案5】:

    您只显示您最近发布的帖子。这实际上永远不会让其他用户看到您发布的内容。要在一段时间内存储它,您必须使用文件或数据库。

    【讨论】:

      【解决方案6】:

      您将需要考虑将这些消息存储在数据库系统中。 MySQL 是一个不错的选择,但它不仅仅是几行简单的设置。您可以从reading the manual 开始。这应该可以为您提供所需的一切。

      【讨论】:

        【解决方案7】:

        我不确定我是否在关注你。你想让文本框有以前的类型值吗?

        <input type="text" value="<?php (isset($_POST[msg])) ? $_POST[msg] : "" ?>" name="msg" id="msg" />
        

        【讨论】:

        • 否,但要保存页面底部的结果,当输入新结果时,上一个应该在页面下方,最近一个在顶部
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-18
        • 1970-01-01
        • 1970-01-01
        • 2016-03-26
        • 1970-01-01
        相关资源
        最近更新 更多