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-2526-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)をデータベースに直接挿入することはできません...私が行った解決策の1つは、配列を文字列に変換してから、図のようにデータベースに挿入することです...

<?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 に答える