【问题标题】:PHP toggle button that keeps the value保持值的PHP切换按钮
【发布时间】:2017-07-12 10:05:25
【问题描述】:

潜伏了几年,终于创建了一个用户。

我会尽力向你解释我的问题:

我需要一个浏览器友好的小型文档(HTML、PHP 等),让我和几位同事能够打开开关,以便我们查看是否有人开车上班。 我可以创建开关,它工作正常 - 但是,我需要它来保持它的状态,跨越多台计算机,我想知道是否可以不制作数据库?

我希望保持简单,并在一个文件中。

例子:

Dude1 来上班,骑自行车。开关关闭

Dude2 走路来上班。开关关闭

Dude3 开车来上班。开关打开

--

Dude1 想看看今天谁在开车。打开 PHP/HTML 可以看到状态:

Dude1 - 关闭

Dude2 - 关闭

Dude3 - 开启


我希望这能解释我的问题,如果没有,请询​​问,我会尽量说得更清楚。

 <div class="onoffswitch">
    <input type="checkbox" name="onoffswitch" class="onoffswitch-checkbox" id="switch" checked>
    <label class="onoffswitch-label" for="switch">
        <span class="onoffswitch-inner"></span>
        <span class="onoffswitch-switch"></span>
    </label>
</div>

这是最简单的部分 - 现在如何保持状态。


编辑,添加图片。 enter image description here

【问题讨论】:

  • 您需要发布变量,将所有内容放在一个表单中,并对一个 php 脚本执行操作,该脚本将数据插入数据库或将其存储为 $_SESSION(不推荐使用后者)
  • 是否应该每个同事都能够从他们的设备访问应用程序,或者是否有每个人都为此目的使用的共享/公共站点?您不想使用数据库的原因是什么? SQLite 等基于文件的数据库是否可以接受?
  • @simlev 它应该可以从内部网络上的工作站/设备访问。 SQLite 是可以接受的,虽然我不太了解它 - 有什么要求?首先不使用数据库的原因是为了让它尽可能“小”,就像在服务器上有一个 PHP 文件一样,所以他们只需要导航到 server/file.php 或 10.10.10.10 /file.php
  • 那么我建议使用数据库,因为它可以提供更大的灵活性,但要以拥有除 file.php 之外的其他文件的“成本”为代价。 SQLite 的要求是可写文件和 php sqlite 扩展名。

标签: javascript php jquery html mysql


【解决方案1】:

在没有任何数据库的情况下,有几种方法可以做到这一点。我能想到的最简单的方法是使用HTML5 Local Storage

这样,您可以设法在浏览器中保留与特定网站相关的一些数据。数据以 JSON 格式存储,这显然意味着您将需要一个键和一个值。

设置值 -

localStorage.setItem('driving', 'Yes');

Javascript 设置复选框的值 -

if (localStorage.getItem('driving')=='Yes'){
    //code to set your checkbox
}

更多结帐Web Storage

【讨论】:

    【解决方案2】:

    兄弟,要保存状态,您有以下方法

    客户端

    1. 本地存储
    2. 会话存储

    服务器端

    1. 会话

    应用范围

    1. 数据库
    2. 文件

    客户端和服务器端仅适用于计算机。如果要在不同的计算机上维护,则必须使用 DB 或 File。

    【讨论】:

    • 所以没有“简单的解决方法”吗?我必须创建一个数据库并写入开关的状态,然后再读取它?如果是这样 - 我该如何做到这一点,而不是每天输入 10 多个条目?
    • 您只会为每个开车上班的同事写一个条目;太多了吗?为什么?
    • 如果你不想使用数据库。只需写入文件即可。在每位同事更改状态后覆盖该条目。 w3schools.com/php/func_filesystem_fwrite.asp
    • @simlev 它不会为每次点击写一个条目,还是会覆盖?
    • @imranahmed 谢谢,我会查看那个链接。
    【解决方案3】:

    没有数据库就无法做到这一点。就这么简单。

    如果你想减少数据库条目,你可以保留一个包含以下字段的表:

    id、姓名、状态、修改日期

    如果同事今天打开了开关,只需更新该同事的状态和日期

    在显示列表时(今天),具有今天日期的行将具有根据数据库的状态,其余的都将关闭开关

    【讨论】:

    • 我所做的几乎与您所写的完全一样 - 但我在从 SQL 的 date_modified 行中提取数据时遇到问题?我使用 CURRENT_TIMESTAMP 来更新行 - 但是当我尝试提取它时,它最终是空白的?有什么想法吗?
    • 愚蠢的我 - 一个简单的错字。它现在(几乎)完美地工作。谢谢。
    • @j.andreasen - 对不起!我给出了答案,但忘记回复后续问题。很高兴听到它正在工作。不客气!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-26
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    相关资源
    最近更新 更多