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