如何在Post方法PHP

时间:2016-07-19 11:37:41

标签: php html sql

我需要你的帮助!我试图使用Php在sql表中保存变量,但我有问题。 php中有两个问题,第一个涉及大陆,第二个问题来自非洲大陆。我想使用循环来检查在第一个问题中选择了哪个大陆,然后保存第二个问题的值。我使用一些javascript代码隐藏了未经检查的大陆的选项(我没有问题)。

HTML代码:

<form method="post" action="">  
<fieldset><legend>Continents</legend>
            <select id="q1" name="q1">
                <option value="1">Africa</option>
                <option value="2">Asia</option> 
                <option value="3">Australia</option>
                <option value="4">America</option> 
                <option value="5">Europe</option>
            </select>

            <select id="q2" name="Africa">
                <option value="1">Choice 1</option>
                <option value="2">Choice 2</option> 
            </select>

            <select id="q2" name="Asia">
                <option value="1">Choice 1</option>
                <option value="2">Choice 2</option> 
            </select>

            <select id="q2" name="Australia">
                <option value="1">Choice 1</option>
                <option value="2">Choice 2</option> 
            </select>

            <select id="q2" name="America">
                <option value="1">Choice 1</option>
                <option value="2">Choice 2</option> 
            </select>

            <select id="q2" name="Europe">
                <option value="1">Choice 1</option>
                <option value="2">Choice 2</option> 
            </select>
</fieldset>     

Php代码

$q1 = $_POST['q1'];
$continents = array("Africa","Asia", "Australia","America","Europe");

for ($i = 1; $i <= 5; $i++) {
 if($q1 == $i) {
    $q2 = $_POST[$continents[$i-1]]
}
} 

5 个答案:

答案 0 :(得分:1)

您的数组应该来自1 to 5而不是0 to 4,因为1 to 5中的值为q1

或者,我建议您更改HTML结构,以便在不使用循环的情况下将continent值放在一行中。您需要更改大陆的值,如

<select id="q1" name="q1">
    <option value="Africa">Africa</option>
    <option value="Asia">Asia</option> 
    <option value="Australia">Australia</option>
    <option value="America">America</option> 
    <option value="Europe">Europe</option>
</select>

要获得所选大陆的价值,请使用$_POST[$_POST['q1']]。对于egs $_POST['q1']=Asia,那么$_POST['Asia']将返回亚洲的选择,

$q2= $_POST[$_POST['q1']];

答案 1 :(得分:0)

更改

$continents = 
  array(1 => "Africa",
        2 => "Asia", 
        3 => "Australia",
        4 => "America",
        5 => "Europe");

 if(($q1-1) == $i) {
    $q2 = $_POST[$continents[$i]]
}

答案 2 :(得分:0)

首先,您可以更改select大陆HTML:

<select id="q1" name="q1">
    <option value="Africa">Africa</option>
    <option value="Asia">Asia</option> 
    <option value="Australia">Australia</option>
    <option value="America">America</option> 
    <option value="Europe">Europe</option>
</select>

然后你可以遍布你的大陆并得到答案:

$q1 = $_POST['q1'];
$continents = array("Africa","Asia", "Australia","America","Europe");

foreach($continents as $continent) {
    if ($_POST['q1'] == $continent) {
        $q2 = $_POST[$continent];
    }
}

现在,您可以在$q2中找到第二个问题的答案。

答案 3 :(得分:0)

这个怎么样?

// Always try to seperate logic from your view

// Intialize data
$continents = array("Africa", "Asia", "Australia", "America", "Europe");

// Check for $_POST
if(isset($_POST["q1"])) {
    foreach($continents as $id => $continent) {
        if($_POST["q1"] == $id) {
            // Do something special here
        }
    }
}

// Render HTML
<form method="post" action="">  
    <fieldset>
        <legend>Continents</legend>
            <select id="q1" name="q1">
                <!-- Notice that I echo only variables not all of the html -->
                <?php foreach($continents as $id => $continent) { ?>
                    <option value="<?php echo $id; ?>"><?php echo $continent; ?></option>
                <?php } ?>
            </select>

            <select id="q2" name="Africa">
                <option value="1">Choice 1</option>
                <option value="2">Choice 2</option> 
            </select>

            <select id="q2" name="Asia">
                <option value="1">Choice 1</option>
                <option value="2">Choice 2</option> 
            </select>

            <select id="q2" name="Australia">
                <option value="1">Choice 1</option>
                <option value="2">Choice 2</option> 
            </select>

            <select id="q2" name="America">
                <option value="1">Choice 1</option>
                <option value="2">Choice 2</option> 
            </select>

            <select id="q2" name="Europe">
                <option value="1">Choice 1</option>
                <option value="2">Choice 2</option> 
            </select>
    </fieldset>     

关于我的解决方案的好处是,现在你可以创建你想要的任何数组,你的代码将始终有效。

例如,您可以从数据库中选择数据并将它们存储在$ continents变量中。

$query = "SELECT id, name FROM continents";
$result = mysql_query($query);

$continents = array();
while($row = mysql_fetch_assoc($result)) {
    $continents[$row["id"]] = $row["name"];
}

酷吧? :)

答案 4 :(得分:0)

我终于找到了解决方案!!!

替换

 $q2 = $_POST[$continents[$i-1]] 

$q2 = $_POST["{$continents[$i-1]}"];

我想要的解决方案!!