0

我有一个带有几个不同文本和复选框字段的 HTML 表单。我将文本字段发布到正确的表格,但复选框响应根本没有发布(打算发布到单独的表格)。

这是我的 HTML 表单:

    <!Doctype html>
    <html>
    <?php include 'C:\xampp\htdocs\paxdb\head.php'; 
    include 'config/menu.php';?> 
    <div id="dataentry">
    <!--This section is the demographic text field area-->
    <form method="post" action="dataentered.php">
    First Name:&nbsp;<input type="text" id="First_Name" name="First_Name"/></br>
    </br>
    Last Name:&nbsp;<input type="text" id="Last_Name" name="Last_Name"/></br>
    </br>
    E-mail:&nbsp;<input type="text" id="email" name="email"/></br>
    </br>

    <!--This section is the age range checkbox selection area-->
    <p><u><b>Age Range</b></u></p>
    <input type="checkbox" name="age[]" id="20-25" value="1"/>&nbsp;20-25</br>
    <input type="checkbox" name="age[]" id="26-30" value="1"/>&nbsp;26-30</br>
    <input type="checkbox" name="age[]" id="31-35" value="1"/>&nbsp;31-35</br>
    <input type="checkbox" name="age[]" id="36-40" value="1"/>&nbsp;36-40</br>
    <input type="checkbox" name="age[]" id="41-45" value="1"/>&nbsp;41-45</br>
    </div>

<p><u><b>What City or region would you like to visit in the US or Canada?:</b></u></p>
<textarea name="comment2" rows="4" cols="50"></textarea>

<?php include 'footer.php';?>       
        </div>
    </body>
</html>

这是我正在尝试的 PHP 代码,但只有文本字段有效:

<html>
<?php
$host="localhost";
$username="someusername";
$password="somepassword";
$dbname="somedbname";

$dbc = mysql_connect($host, $username, $password, $dbname);
if (!$dbc)
{
    die('Error connecting to MySQL server' . mysql_error());
    }
mysql_select_db($dbname, $dbc);

//send pax data to pax database table
$first_name=$_POST['First_Name'];   
$last_name=$_POST['Last_Name'];
$email=$_POST['email'];

mysql_query("INSERT INTO pax (First_Name, Last_Name, email)
VALUES('$first_name','$last_name','$email')"); 

//send age checkbox data to age database table
$age = $_POST['age'];
foreach($age as $range) mysql_query("INSERT INTO age ($age) VALUES ('$range')") or die (mysql_error());


mysql_close($dbc);

任何帮助表示赞赏。

编辑澄清一下: mysql表'age'有以下字段:age_id(键),pax_id(表格开头的文本字段数据的索引),20-25 26-30等通过年龄范围。

4

2 回答 2

1

在您尝试实际运行 mysql 查询之前,您应该进行测试以确保您正在构建的查询中包含正确的信息。

你可以做这样的事情来快速检查:

foreach($age as $range) {
    print "INSERT INTO age ($age) VALUES ('$range')";
}

此外,您不应该将$_POST数据直接粘贴到查询中,有人可以轻松地将 SQL 代码写入字段并删除您的数据库。查找“mysql输入卫生”的话题

于 2012-09-09T16:57:05.770 回答
0

我已经为你编辑了代码

<!Doctype html>
<html>
<?php include 'C:\xampp\htdocs\paxdb\head.php'; 
include 'config/menu.php';?> 
<div id="dataentry">
<!--This section is the demographic text field area-->
<form method="post" action="dataentered.php">
First Name:&nbsp;<input type="text" id="First_Name" name="First_Name"/></br>
</br>
Last Name:&nbsp;<input type="text" id="Last_Name" name="Last_Name"/></br>
</br>
E-mail:&nbsp;<input type="text" id="email" name="email"/></br>
</br>

<!--This section is the age range checkbox selection area-->
<p><u><b>Age Range</b></u></p>
<!-- Change your checkbox value -->
<input type="checkbox" name="age[]" id="20-25" value="20-25"/>&nbsp;20-25</br>
<input type="checkbox" name="age[]" id="26-30" value="26-30"/>&nbsp;26-30</br>
<input type="checkbox" name="age[]" id="31-35" value="31-35"/>&nbsp;31-35</br>
<input type="checkbox" name="age[]" id="36-40" value="36-40"/>&nbsp;36-40</br>
<input type="checkbox" name="age[]" id="41-45" value="41-45"/>&nbsp;41-45</br>
</div>

<p><u><b>What City or region would you like to visit in the US or Canada?:</b></u></p>
<textarea name="comment2" rows="4" cols="50"></textarea><br/>
<input type="submit" name="submit" value="Submit"/>
<?php include 'footer.php';?>       
</div>
</body>
</html>

您不能像在 INSERT 语句中所做的那样将数组($age)直接插入数据库......我所做的解决方案之一是将数组转换为字符串,然后将其插入数据库,如图所示......

<?php
$host="localhost";
$username="someusername";
$password="somepassword";
$dbname="somedbname";

$dbc = mysql_connect($host, $username, $password, $dbname);
if (!$dbc)
{
    die('Error connecting to MySQL server' . mysql_error());
}
mysql_select_db($dbname, $dbc);

//send pax data to pax database table
$first_name=$_POST['First_Name'];   
$last_name=$_POST['Last_Name'];
$email=$_POST['email'];

mysql_query("INSERT INTO pax (First_Name, Last_Name, email)
VALUES('$first_name','$last_name','$email')"); 

//send age checkbox data to age database table
$age = $_POST['age'];
$my_range = "";
foreach($age as $range)
$my_range = $my_range . $range . " ";
//You have written this query wrong
mysql_query("INSERT INTO age(age) VALUES ('$my_range')") or die (mysql_error());

mysql_close($dbc);

从数据库中检索它时,您可以使用 expode() 来获取每个年龄范围......这是示例代码

$range_string = "20-25 26-30 31-35";
$range_array = explode(" ", $range_string);
echo $range_array [0]; // 20-25
echo $range_array [1]; // 26-30
echo $range_array [2]; // 31-35

您可能还想查看http://www.html-form-guide.com/php-form/php-form-checkbox.html以获取有关复选框的一些信息...

希望这可以帮助

于 2012-09-09T18:31:52.297 回答