2016-04-07 25 views
-1

私はこれについて助けが必要です。私はこのコードを持っていますが、データベースに挿入するときに、データベースの2つのテーブルの間の関係を作成するために主キーと外部キーとして使用するidとstate_idを挿入しています。 idやstate_idではなく、正確な値を挿入したいと思っています。ありがとう。データベースに正確なデータ値を入力してください

<?php 
include 'dbconnect.php'; 
$query = "SELECT `id`,`states` FROM `states`"; 
$result1 = mysqli_query($dbconnect,$query); 
$rows = mysqli_num_rows($result1); 
if ($rows){ 
    while($row = mysqli_fetch_assoc($result1)){ 
    $states[] = array("id" => $row['id'], "val" => $row['states']); 
} 
} 

$query = "SELECT `id`, `state_id`, `local_government` FROM `local_governments`"; 
$result2 = mysqli_query($dbconnect,$query); 
$rows2 = mysqli_num_rows($result1); 
if ($rows2){ 
    while($row2 = mysqli_fetch_assoc($result2)){ 
    $local_government[$row2['state_id']][] = array("id" => $row2['id'], "val" => $row2['local_government']); 
    } 

    $jsonStates = json_encode($states); 
    $jsonLocal_government = json_encode($local_government); 
} 

if (isset($_POST['submit'])){ 
    $stateOforigin = htmlspecialchars(trim($_POST['stateOforigin'])); 
    $LGA = htmlspecialchars(trim($_POST['LGA'])); 

    $sql = "UPDATE `sono` SET `stateOforigin`='$stateOforigin', `LGA`='$LGA' WHERE `eMail`='$email'"; 
    $check = mysqli_query($dbconnect, $sql); 
    header ('location: form2.php');   
    ?> 



    <script type="text/javascript"> 
    <?php 
     echo "var states = $jsonStates; \n"; 
     echo "var local_government = $jsonLocal_government; \n"; 
    ?> 
    function loadStates(){ 
     var select = document.getElementById("statesSelect"); 
     select.onchange = updateLocal_government; 
     for(var i = 0; i < states.length; i++){ 
     select.options[i] = new Option(states[i].val,states[i].id);   
    } 
    } 
    function updateLocal_government(){ 
     var statesSelect = this; 
     var state_id = this.value; 
     var local_governmentSelect=document.getElementById("local_governmentSelect"); 
    local_governmentSelect.options.length = 0; //delete all options if any present 
     for(var i = 0; i < local_government[state_id].length; i++){ 
     local_governmentSelect.options[i] = new Option(local_government[state_id][i].val,local_government[state_id][i].id); 
     } 
    } 

</script> 
    <body onload='loadStates()'> 
    <p style='padding-left: 0px; font-size: 12px; font-weight: bold'>State Of Origin</p> 
     <p><select name="stateOforigin" class="userarea" id="statesSelect"></p></select> 
     <p style='padding-left: 0px; font-size: 12px; font-weight: bold'>Local Govt. Area</p> 
     <p><select name="LGA" class="userarea" id="local_governmentSelect"> 
     <option value="Null">Loading</option></p> 
     </select> 
</body> 
+0

最も簡単な方法は、 'new option()'で必要な値を2回使用することです。 '' – RST

+0

は分かりません。どんな結果が得られ、何を得たいですか?加えて、あなたは$ email varがありますが、初期化されていません。 – Jimmmy

+0

私はidとstate_idをデータベースに挿入しましたが、私が望むのはデータベースに挿入される状態の正確な名前です。 –

答えて

0

今あなたが new Option(states[i].val,states[i].id) を使用している、これは <option value = states[i].id>states[i].val</option>

になりますが、formを送信するとoptionvalue$_POST、ない​​3210タグ間のテキストに使用されています。そのテキストは人間のためだけのものなので、私たちは何を選んでいるのか理解しています。 new Option(states[i].val,states[i].val) にコマンドを変更

は希望値が$_POSTに使用されている今 <option value = states[i].val>states[i].val</option> になります。

正規表現の観点から、@CBroeが言っていることは本当ですが、あなたが望むものではないかもしれません。

+0

ありがとう@RST。あなたの解決策を試しましたが、正しい値が入力されましたが、2番目のセレクタオプションがロードされていません。 –

+0

あなたは何を意味するのか分かりません。 – RST

+0

私が意味することは、あなたが与えた答えが今働いているということです。私は今データベースに正確な値を取得しています。しかし、地方自治体である第2選択肢オプションはロードされていない。コードからチェックすることができます。 –

関連する問題