当前位置: 代码迷 >> JavaScript >> 我可以使用在线表单自动填充HTML页面而不使用数据库吗?
  详细解决方案

我可以使用在线表单自动填充HTML页面而不使用数据库吗?

热度:143   发布时间:2023-06-07 18:19:38.0

我正在尝试为我的网站设置每日特价页面。 我希望厨师能够在线填写表格,并将他们键入表格中的信息显示在网站的每日特价页面上。 我对编程非常陌生,我根本不了解PHP,所以我想知道是否有一种我不了解的简单方法。

我可以很容易地使用数据库来完成此操作,但是无法为此站点设置数据库。 长话短说,不要问。

我可以使用PHP从厨师填写的在线表单中将数据传输到每日特价页面-但是一旦关闭表单,数据就不会保留在那里。 我尝试在表单上使用onSubmit return false来防止它被清除,但是那没有用。 还有另一种方法可以做到这一点,或者我做错了吗?

我可以使用本地存储来保留表单中的信息,并使用jQuery从表单中获取数据并将其放在每日特价页面上-但这仅适用于我的机器。 是否有类似服务器或域名的本地存储之类的东西?

我尝试嵌入Google文档和Google工作表-Google的文档显示,当工作表发生更改时,工作表将在嵌入它们的网站上自动更新,但事实并非如此-或至少我没有设法获得它工作。 而且CSS非常有限,因此它们看起来不太好。

我可以使用jQuery.load()将.html和.txt的信息获取到我的每日特价页面-但是如何首先将信息获取到html或txt文件? 文本文件需要在服务器上或在线,以便厨师可以访问它,而网站也可以访问它。 我可以使用PHP和html格式写入.txt,但无法将它们放在一起。

使用这些非常简单的页面:

form.html

<form action="action.php" method="POST">
    <input name="field1" type="text" />
    <input name="field2" type="text" />
    <input type="submit" name="submit" value="Save Data">
</form>

action.php的

   <?php
if(isset($_POST['field1']) && isset($_POST['field2'])) {
    $data = $_POST['field1'] . '-' . $_POST['field2'] . "\r\n";
    $ret = file_put_contents('mydata.txt', $data, FILE_APPEND | LOCK_EX);
    if($ret === false) {
        die('There was an error writing this file');
    }
    else {
        echo "$ret bytes written to file";
    }
}
else {
   die('no post data to process');
}

load.html

<b>Projects:</b>
<ol id="cafe"></ol>

<script>
$( "#cafe" ).load( "mydata.txt" );

</script>

我已经能够填写表格-将数据写入文本文件-从文本文件中获取数据并将其添加到html页面-但是我如何使它完成所有任务并看起来不错呢? 我不知道如何设置它,以便当它向文本文件添加数据时,它会将特定的数据片段添加到特定的div中,这样我就可以将该特定的div调用到我的html页面上并向其中添加CSS? 我是否需要为每个新数据制作一个新的.txt文件?

我有5件需要更新的餐厅,而我有4家餐厅。

因此,我将拥有:餐馆A-我需要更新,1.厨师姓名。 2.特殊名称,3.特殊说明,4.孩子的特殊名称,5.孩子的特殊说明。 餐馆B-我需要更新,1.厨师姓名。 2.特殊名称,3.特殊说明,4.孩子的特殊名称,5.孩子的特殊说明。
餐馆C-我需要更新,1.厨师姓名。 2.特殊名称,3.特殊说明,4.孩子的特殊名称,5.孩子的特殊说明。
餐馆D-我需要更新,1.厨师姓名。 2.特殊名称,3.特殊说明,4.孩子的特殊名称,5.孩子的特殊说明。

只需替换就无需保存任何内容-

所以现在我想如果我将每个新数据写入不同的txt文件,我就可以做到。 因此,餐厅A会具有Chefname.txt,specialname.txt,specialdescription.txt,kidspecial.txt和kiddescription.tx。

有没有人有更好的方法来做到这一点? 似乎这是一件简单的事情,而且我还很陌生,不知道该怎么做。

任何想法或帮助将不胜感激。

您可以像完成操作一样将数据存储在.txt文件中,但是可以使用某些格式,例如(第一家餐厅)厨师名称|特殊名称|特殊描述,|孩子的特殊名称| 孩子的特别说明。 之后,逐行解析并用特殊字符将其分割(例如:|)

不使用数据库的最简单方法是使用存储在简单.txt文件中的JSON。 但是,这确实需要对安全性进行更多思考。 最重要的问题是授权他人编辑您的表格,从而修改您的数据。

但要回答您的问题,我建议如下:

form.html

<form action="action.php" method="POST">
    <select name="restaurant">
        <option value="1">Restaurant 1</option>
        <option value="2">Restaurant 2</option>
        <option value="3">Restaurant 3</option>
        <option value="4">Restaurant 4</option>
    </select>
    <input name="chef" type="text" />
    <input name="special_name" type="text" />
    <input name="special_descr" type="text" />
    <input name="child_name" type="text" />
    <input name="child_descr" type="text" />
    <input type="submit" name="submit" value="Save Data">
</form>

action.php的

<?php
if (isset($_POST['submit'])) {
    $data = json_decode(file_get_contents("data.txt"), true); // true for assoc
    $data[$_POST['restaurant']] = array(
        "chef" => $_POST['chef'],
        "special_name" => $_POST['special_name'],
        "special_descr" => $_POST['special_descr'],
        "child_name" => $_POST['child_name'],
        "child_descr" => $_POST['child_descr']
    );
    $newData = json_encode($data);
    file_put_contents("data.txt", $newData);
}
?>

load.php

<?php
$data = json_decode(file_get_contents("data.txt"), true); // true for assoc

foreach($data as $k => $v) {
    echo "<p>" . PHP_EOL;
    echo "Special Restaurant " . $k . ":<br />" . PHP_EOL;
    echo "Chef: " . $v['chef'] . "<br />" . PHP_EOL;
    echo "Name: " . $v['special_name'] . "<br />" . PHP_EOL;
    echo "Description: " . $v['special_descr'] . "<br />" . PHP_EOL;
    echo "Children: " . $v['child_name'] . "<br />" . PHP_EOL;
    echo "Description: " . $v['child_descr'] . "<br />" . PHP_EOL;
    echo "</p>" . PHP_EOL;
}
?>

基本上,在action.php中,您首先将data.txt文件中的现有数据从JSON解码为PHP可读的多维数组,并使用键1至4(对于餐厅),每个键包含一个带有不同厨师值的arry,名称等。然后,您可以轻松更新此数组,再次将其转换为JSON并存储。

在load.php(不是load.html)中,您可以再次将JSON字符串转换为数组,循环遍历并输出每个餐厅的值。

现在,这仅是一个示例,说明我将如何处理此问题,您应该自己添加错误处理和授权检查。

  相关解决方案