簡體   English   中英

PHP下拉列表選擇的值未插入數據庫

[英]PHP Drop down list selected value not inserted in the database

我確實在網絡上的任何地方都找不到解決方案,因為我的問題有點獨特。

我有兩個單選按鈕,分別是Division和External。 單擊后,“分區”單選按鈕將顯示一個下拉列表,而“外部”單選按鈕將顯示一個輸入文本框。

這是我Html編寫的代碼。

<html>
<head>
    <title> Submit a Contract </title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">



<script type="text/javascript">
function ShowHideDiv() {
    var client1 = document.getElementById("client1");
    var client2 = document.getElementById("client2");
    var division = document.getElementById("division");
    var external = document.getElementById("external");

    division.style.display = client1.checked ? "block" : "none";
    external.style.display = client2.checked ? "block" : "none";
}

function showfield(name){
if(name=='Other')document.getElementById('div1').innerHTML='<input type="text" name="client_details" value="" />';
 else document.getElementById('div1').innerHTML='';
}
</script>
</head>

<body>
<form method="post" action="" enctype="multipart/form-data">

<label for = "client1">
        <input type="radio" name="client_type" id = "client1" value="Division" onclick="ShowHideDiv()"/> Division
    </label>
    <label for ="client2">
        <input type="radio" name="client_type" id = "client2" value="External" onclick="ShowHideDiv()"/> External
    </label>    
    <br><br>
<div id="division" style="display:none">
    Division:
        <select name="client_details" onchange="showfield(this.options[this.selectedIndex].value)">
        <option value="">Choose Division...</option>
        <option value="Distribution">Distribution</option>
        <option value="Transmission">Transmission</option>
        <option value="Generation">Generation</option>
        <option value="Procument">Procument</option>
        <option value="Other">Others</option>
        </select>   
        <br><br>
        <div id="div1"></div>
    </div>

    &nbsp

    <div id="external" style="display:none">
    External:
    <input type="text" name="client_details" value=""/> 
    </div>
    <br><br>    
    <input type="submit" name="submit" value="Submit"/>
    </form>     
</body>

</html>

這是PHP代碼。

<?php
require("config.php");

if(isset($_POST['submit']))
{
$client_type = isset($_POST ['client_type']) ? $_POST['client_type'] :null;
$client_details = isset($_POST ['client_details']) ? $_POST['client_details'] :null;

$sql = "SELECT * FROM contracts";
$query = "INSERT INTO contracts
(
`client_type`,
`client_details`) VALUES (
                                '$client_type',
                                '$client_details')" ;

if ($con->query($query) === TRUE) 
{
echo "<br><br> New record created successfully";

echo $query;


} 
else {
echo "Error: " . $query . "<br>" . $con->error;
}

$con->close(); 
}
?>

外部單選按鈕和輸入文本框都可以正常工作,因為兩個值都已成功插入數據庫中。 外部 但是對於除法 ,它僅插入值除法。 師

我做錯了什么?

嘗試這個 :

我將類型的條件放在代碼的開頭,並更改了下拉列表的名稱。

你的PHP代碼

<?php
require("config.php");
if(isset($_POST['submit']))
{
echo $client_type = isset($_POST ['client_type']) ? $_POST['client_type'] :null;
if($client_type == 'Division'){
$client_details = isset($_POST ['client_details1']) ? $_POST['client_details1'] :null;

}
else{
$client_details = isset($_POST ['client_details']) ? $_POST['client_details'] :null;

}

echo $query = "INSERT INTO contracts
(
`client_type`,
`client_details`) VALUES (
                                '$client_type',
                                '$client_details')" ;
if ($con->query($query) === TRUE) 
{
echo "<br><br> New record created successfully";

echo $query;


} 
else {
echo "Error: " . $query . "<br>" . $con->error;
}

$con->close();                                 
}

?>

您的HTML代碼

<html>
<head>
    <title> Submit a Contract </title>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">



<script type="text/javascript">
function ShowHideDiv() {
    var client1 = document.getElementById("client1");
    var client2 = document.getElementById("client2");
    var division = document.getElementById("division");
    var external = document.getElementById("external");

    division.style.display = client1.checked ? "block" : "none";
    external.style.display = client2.checked ? "block" : "none";
}

function showfield(name){
if(name=='Other')document.getElementById('div1').innerHTML='<input type="text" name="client_details" value="" />';
 else document.getElementById('div1').innerHTML='';
}
</script>
</head>

<body>
<form method="post" action="" enctype="multipart/form-data">

<label for = "client1">
        <input type="radio" name="client_type" id = "client1" value="Division" onclick="ShowHideDiv()"/> Division
    </label>
    <label for ="client2">
        <input type="radio" name="client_type" id = "client2" value="External" onclick="ShowHideDiv()"/> External
    </label>    
    <br><br>
<div id="division" style="display:none">
    Division:
        <select name="client_details1" onchange="showfield(this.options[this.selectedIndex].value)">
        <option value="">Choose Division...</option>
        <option value="Distribution">Distribution</option>
        <option value="Transmission">Transmission</option>
        <option value="Generation">Generation</option>
        <option value="Procument">Procument</option>
        <option value="Other">Others</option>
        </select>   
        <br><br>
        <div id="div1"></div>
    </div>

    &nbsp

    <div id="external" style="display:none">
    External:
    <input type="text" name="client_details" value=""/> 
    </div>
    <br><br>    
    <input type="submit" name="submit" value="Submit"/>
    </form>     
</body>

</html>

普拉卡什坦克的版本是正確的,甚至可能更好。 我發布了此解決方案,因此您知道還有其他解決方法,並且在注釋中我向您解釋了您做錯了什么。

 <html>
        <head>
            <title> Submit a Contract </title>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">



        <script type="text/javascript">
        function ShowHideDiv() {
            var client1 = document.getElementById("client1");
            var client2 = document.getElementById("client2");
            var division = document.getElementById("division");
            var external = document.getElementById("external");

            division.style.display = client1.checked ? "block" : "none";
            external.style.display = client2.checked ? "block" : "none";
        }

        function showfield(name){
        if(name=='Other')document.getElementById('div1').innerHTML='<input type="text" name="client_details" value="" />';
         else document.getElementById('div1').innerHTML='';
        }
        </script>
        </head>

        <body>

        <form method="post" action="" enctype="multipart/form-data">

        <label for = "client1">
                <input type="radio" name="client_type" id = "client1" value="Division" onclick="ShowHideDiv()"/> Division
            </label>
            <label for ="client2">
                <input type="radio" name="client_type" id = "client2" value="External" onclick="ShowHideDiv()"/> External
            </label>    
            <br><br>
        <div id="division" style="display:none">
            Division:
            <!-- client_details has to be changed to client_detailsDiv as after clicking "submit" data from Division and External were put in to the same variable "client_details" so even if External was empty PHP though that it's suppose to be empty and as long as external
            DO NOT MIX TWO TYPES OF FORM TYPES AS ONE VARIABLE = DON'T GIVE THEM THE SAME name - in other words you can't give same name for SELECT and TEXT and so on.-->
                <select name="client_detailsDiv" onchange="showfield(this.options[this.selectedIndex].value)">
                <option value="">Choose Division...</option>
                <option value="Distribution">Distribution</option>
                <option value="Transmission">Transmission</option>
                <option value="Generation">Generation</option>
                <option value="Procument">Procument</option>
                <option value="Other">Others</option>
                </select>   
                <br><br>
                <div id="div1"></div>
            </div>

            &nbsp

            <div id="external" style="display:none">
            External:
            <!--client_details has to be changed to  client_detailsExt for reason described above-->
            <input type="text" name="client_detailsExt" value=""/> 
            </div>
            <br><br>    
            <input type="submit" name="submit" value="Submit"/>
            </form>     
        </body>

        </html>


        <?php
        require("config.php");

        if(isset($_POST['submit']))
        {
        $client_type = isset($_POST ['client_type']) ? $_POST['client_type'] :null;
        /*
$client_details = isset($_POST ['client_details']) ? $_POST['client_details'] :null;
        above functions was wrong as I already explained it got $_POST['client_type'] for the External - PHP works the way that it gets variable from the first $_POST['same_name'] and then from second $_POST['same_name'] and then overwrites value of first $_POST['same_name'] and for this reason it displayed only value for External and none for Division as when user set External, Division was empty. So if you would switch form for External as first and put form for Division as second then you wouldn't get variable from External but from Division.
        $client_details = isset($_POST ['client_details']) ? $_POST['client_details'] :null;

        so what we need to do is to to put this code:
        */
        if(!empty($_POST['client_detailsDiv'])) {$client_details = $_POST['client_detailsDiv'] ? $_POST['client_detailsDiv'] :null;}
        else {$client_details = $_POST['client_detailsExt'] ? $_POST['client_detailsExt'] :null;}
        // at fist we make sure that client_detailsDiv is not empty, if it's not than we set client_detailsDiv as $client_details. But if it's empty we use else statement to 

        $sql = "SELECT * FROM contracts";
        $query = "INSERT INTO contracts
        (
        `client_type`,
        `client_details`) VALUES (
                                        '$client_type',
                                        '$client_details')" ;

        if ($con->query($query) === TRUE) 
        {
        echo "<br><br> New record created successfully";

        echo $query;


        } 
        else {
        echo "Error: " . $query . "<br>" . $con->error;
        }

        $con->close(); 
        }
        ?>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM