使用PHP表单将值放入MySQL表中

时间:2010-12-29 07:06:41

标签: php mysql html forms

我正在使用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);
?>

5 个答案:

答案 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);