我正在为餐厅管理系统创建一种滑块形式,其中用户将在每种表单中选择项目,并且所选值将显示在最后的“确认表单”中,我想插入在确认表单中获得的所选项目的值以插入进入数据库。

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


我想使用confirm 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


请停止使用惰性*和NAME所需的列。
我希望您有一列是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 =“插入到tblorders(子菜单,客户ID)值($ id,111)”
   //在此处针对数据库执行,请参见下面的链接
}

w3schools-link for starters

PHP website mysqli.query.php

10-05 21:02
查看更多