Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在同一页面上输出的简单html/php表单_Php_Html_Forms - Fatal编程技术网

在同一页面上输出的简单html/php表单

在同一页面上输出的简单html/php表单,php,html,forms,Php,Html,Forms,基本上,我只想让用户进入网站,输入他们的消息和姓名,结果应该显示在同一页面上,当另一个用户再次进入时,来自前一个用户的结果应该在那里,出现的任何内容都应该添加到列表中 目前我有: <form id="form1" name="form1" method="post" action=""> <label>Please type in a message <input type="text" name="msg" id="msg" /> </labe

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

目前我有:

 <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"?>

请输入一条消息
你的名字呢

提交


但是当输入另一条记录时,前一条记录将丢失


提前感谢

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


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

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

您需要了解如何在数据库系统中存储这些消息。MySQL是一个不错的选择,但它不仅仅是简单的几行设置。你可以从这开始。这将为您提供所需的一切。

我不确定我是否在跟踪您。是否希望文本框具有以前的类型值

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

这应该是您想要的。它从
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>

无标题文件
请输入一条消息
你的名字呢

提交

两件事:

$first = $_POST['msg'];
$second = $_POST['pin'];
为了将post参数保存到变量中,需要在post参数周围使用这些单引号

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

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


这就是需要数据库的地方。只需创建一个简单的sql数据库或创建一个文件,该文件在用户每次发布消息时都会追加。
因此,无论何时加载页面,都必须先加载以前存储的数据,然后再继续操作。

基本上,您需要将数据永久存储在某个位置。搜索PHP+MySQL HowToFyi,使用正确的方法接近关联数组索引,
$\u POST[msg]
仅因为PHP的未定义常量行为才起作用。如果有人声明了一个名为“msg”的常量(与“msg”的值不同),您的代码将停止工作。正确的方法是
$\u POST['msg']谢谢,我认为单文件选项最合适…你能给我指出一个方向吗?怎么做?@khalid我鼓励您查看PHP中的结果,并尝试制定您自己的解决方案,但是如果您希望一些项目在那里进行研究,我只是偶然发现了这个免费选项:不,但是页面底部的结果将被保存,当输入新结果时,前一个应该在页面上,最近一个应该在topBrilliant上!这正是我想要的!非常感谢注意,被接受的答案使用文本作为数据库。如果OP计划编写多个页面,那么您的解决方案会更好——想象一下“posts1.txt”、“posts2.txt”、“posts3.txt”。。。