我正在使用PHP表单将值放入我拥有的表中。一切正常,但问题是下拉菜单中的文本不是文本,而是下拉选择的值。
此外,当我尝试连接我的日期和时间时,它会以某种方式创建另一个MySQL行并将斜杠和冒号放在该行中。
有任何帮助解决这个问题吗?
(我没有制作表格,我使用了表格制作者)
以下是代码:
<div id="form_container">
<ul >
<li id="li_4" >
<label class="description" for="element_4">restaurant </label>
<div>
<select class="element select medium" id="element_4" name="element_4">
<option value="" selected="selected"></option>
<option value="1" >Burger King</option>
<option value="2" >McDonald's</option>
<option value="3" >Wendy's</option>
<option value="4" >KFC</option>
<option value="5" >Taco Bell</option>
<option value="6" >Domino's Pizza</option>
<option value="7" >Pizza Hut</option>
<option value="8" >Quizno's</option>
<option value="9" >Chili's</option>
<option value="10" >TGI Friday's</option>
<option value="11" >Starbucks</option>
<option value="12" >Red Lobster</option>
<option value="13" >Olive Garden</option>
</select>
</div>
</li> <li id="li_1" >
<label class="description" for="element_1">date </label>
<span>
<input id="element_1_1" name="element_1_1" class="element text" size="2" maxlength="2" value="" type="text"> /
<label for="element_1_1">MM</label>
</span>
<span>
<input id="element_1_2" name="element_1_2" class="element text" size="2" maxlength="2" value="" type="text"> /
<label for="element_1_2">DD</label>
</span>
<span>
<input id="element_1_3" name="element_1_3" class="element text" size="4" maxlength="4" value="" type="text">
<label for="element_1_3">YYYY</label>
</span>
<span id="calendar_1">
<img id="cal_img_1" class="datepicker" src="calendar.gif" alt="Pick a date.">
</span>
<script type="text/javascript">
Calendar.setup({
inputField : "element_1_3",
baseField : "element_1",
displayArea : "calendar_1",
button : "cal_img_1",
ifFormat : "%B %e, %Y",
onSelect : selectDate
});
</script>
</li> <li id="li_2" >
<label class="description" for="element_2">time </label>
<span>
<input id="element_2_1" name="element_2_1" class="element text " size="2" type="text" maxlength="2" value=""/> :
<label>HH</label>
</span>
<span>
<input id="element_2_2" name="element_2_2" class="element text " size="2" type="text" maxlength="2" value=""/> :
<label>MM</label>
</span>
<span>
<input id="element_2_3" name="element_2_3" class="element text " size="2" type="text" maxlength="2" value=""/>
<label>SS</label>
</span>
<span>
<select class="element select" style="width:4em" id="element_2_4" name="element_2_4">
<option value="AM" >AM</option>
<option value="PM" >PM</option>
</select>
<label>AM/PM</label>
</span>
</li> <li id="li_3" >
<label class="description" for="element_3">catering </label>
<span>
<input id="element_3_1" name="element_3" class="element radio" type="radio" value="1" />
<label class="choice" for="element_3_1">Yes</label>
<input id="element_3_2" name="element_3" class="element radio" type="radio" value="2" />
<label class="choice" for="element_3_2">No</label>
</span>
</li> <li id="li_5" >
<label class="description" for="element_5">driver </label>
<div>
<select class="element select medium" id="element_5" name="element_5">
<option value="" selected="selected"></option>
<option value="1" >Derek</option>
<option value="2" >Joe</option>
</select>
</div>
</li> <li id="li_6" >
<label class="description" for="element_6">destination </label>
<div>
<select class="element select medium" id="element_6" name="element_6">
<option value="" selected="selected"></option>
<option value="1" >NYC</option>
<option value="2" >LA</option>
<option value="3" >Chicago</option>
<option value="4" >Boston</option>
<option value="5" >Miami</option>
<option value="6" >San Francisco</option>
<option value="7" >Seattle</option>
<option value="8" >Other</option>
</select>
</div>
</li>
<li class="buttons">
<input type="hidden" name="form_id" value="76657" />
<input id="saveForm" class="button_text" type="submit" name="submit" value="Submit" />
</li>
</ul>
</form>
</div>
<img id="bottom" src="bottom.png" alt="">
</body>
</html>
PHP代码
<?php
$restaurant = $_POST['element_4'];
$dateM = $_POST['element_1_1'];
$dateD = $_POST['element_1_2'];
$dateY = $_POST['element_1_3'];
$timeH = $_POST['element_2_1'];
$timeM = $_POST['element_2_2'];
$timeS = $_POST['element_2_3'];
$amPM = $_POST['element_2_4'];
$catering = $_POST['element_3'];
$driver = $_POST['element_5'];
$destination = $_POST['element_6'];
$date = $dateM . "/" . $dateD . "/" . $dateY;
$time = $timeH . ":" . $timeM . ":" . $timeS . " " . $amPM;
$con = mysql_connect("localhost","asdf","asdf");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("tableName", $con);
mysql_query("INSERT INTO stats (restaurant, date, time, catering, driver, destination)
VALUES ('$restaurant', '$date', '$time', '$catering', '$driver', '$destination')");
mysql_close($con);
?>
答案 0 :(得分:2)
只需设置值以匹配文本,例如:
<option value="Burger King">Burger King</option>
<option value="McDonald's">McDonald's</option>
答案 1 :(得分:2)
如果省略值,表单将在选项标记之间提交文本,例如......
<option>Burger King</option>
<option>McDonald's</option>
但是,出于规范化目的,我会选择使用数值并为我的餐馆设置一个单独的数据库表。这样,餐馆的名称只在数据库中的一个地方,并且由餐馆主键引用。您稍后仍可以使用加入查询访问餐馆名称。
您还可以使用访问餐馆数据库表的查询动态生成下拉选项。
答案 2 :(得分:1)
首先,值得一提的是,没有用户输入处理来检查SQL注入,这在任何面向公众的网站都非常危险。所以使用mysql_strip_slashes()或类似方法修复它。如果要在下拉列表中选择实际文本的值,则必须将value参数更改为标记。这是唯一的方法。
答案 3 :(得分:1)
一切正常,除了 问题是,而不是文本 下拉,它把价值放在了 下拉选择。
是的,这就是意味着要发生的事情。根据其他答案,您需要将文本放在“值”属性中,而不是1,2,3等。
关于日期的另一个问题,您可以尝试将生成的SQL查询打印到屏幕上,这样您就可以准确地检查发生了什么。
答案 4 :(得分:0)
我没有在你的HTML中看到任何表单打开标签...除非有表格标签,否则你的表格无法提交。另外在PHP脚本上执行var_dump($ _ POST);