我正在为餐厅管理系统制作一种滑块表单,用户将在每个表单中选择项目,所选值将在最后"确认表单"中显示,我要插入确认表单中获得的所选项目的值。
<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
将confirm form
获得的值插入数据库。
这是最重要的部分:
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您需要的列。我希望你有一个列是主键在表子菜单。假设它是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初学者
mysql .query. PHP