javascript - 将值从 javascript 插入数据库

标签 javascript php jquery mysql

我正在为餐厅管理系统制作一种 slider 表单,用户将在每个表单中选择项目,所选值将显示在最后的“确认表单”中,我想插入在确认表单中获得的所选项目的值插入数据库。

 <script>

    function changeColor(obj){
        obj.style.color = "red";
        var selected_val = obj.innerHTML;
        document.getElementById('target_div').innerHTML=document.getElementById('target_div').innerHTML+" "+selected_val;
    }

</script>


 <form id="formElem" name="formElem" action="" method="post">
            <fieldset class="step">
                <legend>Roti</legend>
                <?php
                $qu = mysql_query("select * from submenu WHERE menu_id=33") or die(mysql_error());
                while($f = mysql_fetch_array($qu)){
                ?>
                <p>
                    <label for="name" onclick="changeColor(this)"><?php echo $f['submenu']; ?></label>
                    <input id="name" name="name" type="hidden" AUTOCOMPLETE=OFF value="<?php echo $f['id']; ?>"/>
                    </p>
                <?php } ?>
            </fieldset>
            <fieldset class="step">
                <legend>Sabji</legend>
                <?php
                $qu2 = mysql_query("select * from submenu WHERE menu_id=34");
                while($f2 = mysql_fetch_array($qu2)){
                ?>
                <p>
                    <label for="name" onclick="changeColor(this)"><?php echo $f2['submenu']; ?></label>
                    <input id="name" name="name" type="hidden" AUTOCOMPLETE=OFF value="<?php echo $f2['id']; ?>"/>
                </p>
                <?php } ?>
            </fieldset>
            <fieldset class="step">
                <legend>Salad</legend>
                <?php
                $qu3 = mysql_query("select * from submenu WHERE menu_id=35");
                while($f3 = mysql_fetch_array($qu3)){
                ?>
                <p>
                    <label for="name" onclick="changeColor(this)"><?php echo $f3['submenu']; ?></label>
                    <input id="name" name="name" type="hidden" AUTOCOMPLETE=OFF value="<?php echo $f3['id']; ?>"/>
                </p>
               <?php } ?>
            </fieldset>
            <fieldset class="step">
                <legend>Sweets</legend>
                <?php
                $qu4 = mysql_query("select * from submenu WHERE menu_id=36");
                while($f4 = mysql_fetch_array($qu4)){
                ?>
                <p>
                    <label for="name" onclick="changeColor(this)"><?php echo $f4['submenu']; ?></label>
                    <input id="name" name="name" type="hidden" AUTOCOMPLETE=OFF value="<?php echo $f4['id']; ?>"/>
                </p>
                <?php } ?>
            </fieldset>
            <fieldset class="step">
                <legend>Confirm</legend>
                <p>
                    <label id="target_div" for="name"></label>

                </p>
                <p class="submit">
                    <button id="registerButton" type="submit" name="confirm">Confirm</button>

                </p>
            </fieldset>
        </form>

我想使用PHP确认表单获得的值插入数据库。

最佳答案

这是重要部分:

           while($f = mysql_fetch_array($qu)){
            ?>
            <p>
                <label for="name" onclick="changeColor(this)"><?php echo $f['submenu']; ?></label>
                <input id="name" name="name" type="hidden" AUTOCOMPLETE=OFF value="<?php echo $f['id']; ?>"/>
                </p>
            <?php } ?>

您对其他类别(沙拉、糖果等)重复此操作,所以让我们先看一下。

还有一些问题。 首先,你的标签上写着 for="name"。名称应该是文档中的唯一标识符。标识符是 id="whatever"。因此,如果您想使用标签定位特定元素,请务必使 id=""与 for=""匹配。

在您的情况下,通过从底层数据库表添加唯一键可以最轻松地完成此操作。

但我无法提供帮助,因为我在数据库中看不到您的列。您使用:

select * from submenu WHERE menu_id=33

请停止使用懒惰的 * 并命名您需要的列。 我希望你有一个列是 tblsubmenu 中的主键。假设它是id。 (我认为更好的名字应该是 submenuid。)

然后您可以使用它来进行标签和 ID 的正确操作,如下所示:

            <?php
            $qu = mysql_query("select submenuid, submenu,  from submenu WHERE menu_id=33") or die(mysql_error());
            while($f = mysql_fetch_array($qu)){
            ?>
            <p>
                <label for="name<?php echo $f['id']; ?>" onclick="changeColor(this)"><?php echo $f['submenu']; ?></label>
                <input id="name<?php echo $f['id']; ?>" name="submenuid[]" type="hidden" AUTOCOMPLETE=OFF value="<?php echo $f['id']; ?>"/>
                </p>
            <?php } ?>

这样您就可以匹配 for=""和 id="",例如:在标签中:for="name181"和 id="name181"。

另请注意,我更改了您的输入表单元素,现在它的名称是“submenuid[]”

如果您现在发布表单,您将在 $_POST["submenuid"] 中收到一个 ARRAY。

打印出来:

echo "<pre>".print_r($_POST,true)."</pre>";

并查看它是否与您要发送的内容匹配。

如果是这样,您现在可以开始插入,例如:

foreach ($_POST["submenuid"] as $submenuid){ $id = (int)$submenuid;//强制其为整数 $SQL = "INSERT INTO tblorders (submenuid, customerid) VALUES ($id, 111)"; //在此处针对数据库执行,请参阅下面的链接 }

w3schools-link for starters

PHP website mysqli.query.php

关于javascript - 将值从 javascript 插入数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31532974/

相关文章:

javascript - Bluebird promise 循环

php - 单击在 WooCommerce 管理员订单列表中显示文本时隐藏自定义操作按钮

jquery - Grails 干扰 jquery-tmpl 语法

jquery - 2 列主体,可变宽度,100% 高度,固定页眉和页脚

javascript - 自动播放点导航 jquery setInterval

javascript - Kendo 网格 - 分组不适用于自定义编辑器下拉列表

javascript - 如何获取和设置 Bootstrap 多选下拉列表值?

php - 等效于php python的二维数组插入

php - Magento 订单被收取两次费用

JavaScript 将函数参数与现有变量相结合