2016-11-22 2 views
0

2つの関連オプションからデータベースにオプション値を入力しようとしましたが、問題はオプションの値であり、文字列ではありません。私は正常に1つのオプション値だけで値を入力しますが、私は2つのオプション値を自分のデータベースに入力する必要があります。APIデータに基づいて2つの関連オプションからデータベースに値を入力する方法

私は、この行のコードに変更した場合
$(document).ready(function(){ 
    loadProvinsi('#oriprovince'); 
    loadProvinsi('#desprovince'); 
    $('#oriprovince').change(function(){ 
     $('#oricity').show(); 
     var idprovince = $('#oriprovince').val(); 
     loadCity(idprovince,'#oricity') 
    }); 
}); 

function loadProvinsi(id){ 
    $('#oricity').hide(); 
    $('#descity').hide(); 
    $(id).html('loading...'); 
    $.ajax({ 
     url:'process.php?act=showprovince', 
     dataType:'json', 
     success:function(response){ 
      $(id).html(''); 
      province = ''; 
       $.each(response['rajaongkir']['results'], function(i,n){ 
        province = '<option value="'+n['province_id']+'">'+n['province']+'</option>'; 
        province = province + ''; 
        $(id).append(province); 
       }); 
     }, 
     error:function(){ 
      $(id).html('ERROR'); 
     } 
    }); 
} 
function loadCity(province,id){ 
    $.ajax({ 
     url:'process.php?act=showcity', 
     dataType:'json', 
     data:{province:province}, 
     success:function(response){ 
      $(id).html(''); 
      city = ''; 
       $.each(response['rajaongkir']['results'], function(i,n){ 
        city = '<option value="'+n['city_id']+'">'+n['city_name']+'</option>'; 
        city = city + ''; 
        $(id).append(city); 
       }); 
     }, 
     error:function(){ 
      $(id).html('ERROR'); 
     } 
    }); 
} 

:都市のリストが表示さカント

province = '<option value="'+n['province']+'">'+n['province']+'</option>'; 

それが正常になった文字列が、他のオプションの州に基づいているため

は、ここに私のJSコードですid、オプションの2つの値のような任意の提案?あなたがで作業する必要がprocess.php

header("Content-Type: application/json"); 
require_once('idmore.php'); 
$IdmoreRO = new IdmoreRO(); 
if(isset($_GET['act'])): 
    switch ($_GET['act']) { 

     case 'showprovince': 
      $province = $IdmoreRO->showProvince(); 
      echo $province; 
     break; 

     case 'showcity': 
      $idprovince = $_GET['province']; 
      $city = $IdmoreRO->showCity($idprovince); 
      echo $city; 
     break; 

idmore.php(PHPクラス)

class IdmoreRO{ 
    private $key; 
    public function __construct() 
    { 
     //masukan api key disini 
     $this->key = '3f01f13ce2b42ba983ad3f3bc4852f84';  
    } 
    //menampilkan data provinsi 
    public function showProvince() 
    { 
     $curl = curl_init(); 
     curl_setopt_array($curl, array(
      CURLOPT_URL => "http://rajaongkir.com/api/starter/province", 
      CURLOPT_RETURNTRANSFER => true, 
      CURLOPT_ENCODING => "", 
      CURLOPT_MAXREDIRS => 10, 
      CURLOPT_TIMEOUT => 30, 
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
      CURLOPT_CUSTOMREQUEST => "GET", 
      CURLOPT_HTTPHEADER => array(
       "key: $this->key" 
       ), 
      )); 
     $response = curl_exec($curl); 
     $err = curl_error($curl); 
     curl_close($curl); 
     if ($err) { 
      $result = 'error'; 
      return 'error'; 
     } else { 
      return $response; 
     } 
    } 
    //menampilkan data kabupaten/kota berdasarkan id provinsi 
    public function showCity($province) 
    { 
     $curl = curl_init(); 
     curl_setopt_array($curl, array(
      CURLOPT_URL => "http://rajaongkir.com/api/starter/city?province=$province", 
      CURLOPT_RETURNTRANSFER => true, 
      CURLOPT_ENCODING => "", 
      CURLOPT_MAXREDIRS => 10, 
      CURLOPT_TIMEOUT => 30, 
      CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, 
      CURLOPT_CUSTOMREQUEST => "GET", 
      CURLOPT_HTTPHEADER => array(
       "key: $this->key" 
       ), 
      )); 
     $response = curl_exec($curl); 
     $err = curl_error($curl); 
     curl_close($curl); 
     if ($err) { 
      $result = 'error'; 
      return 'error'; 
     } else { 
      return $response; 
     } 
    } 
+0

文章の始めと「I」という単語は、常に大文字にする必要があります。あなたの質問を編集してください –

+0

このコードは私によく知られているsooo見て!しかし、あなたの質問は何ですか?私はそれを理解しました。オプション値をデータベースに入力したい場合は、コードのどの部分を正確に実行していますか? – EhsanT

+0

@EhsanT同じプロジェクトの新しい問題、私はオプションリストに値を入力しようとしましたが、市または州の名前ではないIDの値です、質問を更新しました –

答えて

1

の登録フォームregistuser.php

      <tr> 
          <td><label for="prov_usr">Provinsi</label></td> 
          <td> 
          <select name="prov_usr" id="oriprovince"> 
          <option>Provinsi</option> 
          </select> 
          </td> 
          </tr> 
          <tr> 
          <td><label for="kota_usr">Kota</label></td> 
          <td> 
          <select name="kota_usr" id="oricity"> 
          <option>Kota</option> 
          </select> 
          </td> 
          </tr> 

スライスの

スライス2つの値、送信時にサーバーに送信する文字列、およびajaxリクエストの都市を照会するID。 value属性に文字列を使用する必要があります。これはフォームがサーバーに送信するもので、idを持つ属性を追加してajaxリクエストで使用できるようにするためです。だから、地域を構築するための

あなたがこれを行うことができます選択します。

'<option value="'+n['province']+'" data-province_id="'+n['province_id']+'">'+n['province']+'</option>'; 

、どこが都市を照会するprovince_idを取得し、あなたのコードは次のようになります

var idprovince = $("#oriprovince option:selected").data("province_id"); 

のようにアクセス:

$(document).ready(function(){ 
    loadProvinsi('#oriprovince'); 
    loadProvinsi('#desprovince'); 
    $('#oriprovince').change(function(){ 
     $('#oricity').show(); 
     var idprovince = $("#oriprovince option:selected").data("province_id") 
     loadCity(idprovince,'#oricity') 
    }); 
}); 

function loadProvinsi(id){ 
    $('#oricity').hide(); 
    $('#descity').hide(); 
    $(id).html('loading...'); 
    $.ajax({ 
     url:'process.php?act=showprovince', 
     dataType:'json', 
     success:function(response){ 
      $(id).html(''); 
      province = ''; 
       $.each(response['rajaongkir']['results'], function(i,n){ 
        province = '<option value="'+n['province']+'" data-province_id="'+n['province_id']+'">'+n['province']+'</option>' 
        province = province + ''; 
        $(id).append(province); 
       }); 
     }, 
     error:function(){ 
      $(id).html('ERROR'); 
     } 
    }); 
} 
function loadCity(province,id){ 
    $.ajax({ 
     url:'process.php?act=showcity', 
     dataType:'json', 
     data:{province:province}, 
     success:function(response){ 
      $(id).html(''); 
      city = ''; 
       $.each(response['rajaongkir']['results'], function(i,n){ 
        city = '<option value="'+n['city_id']+'">'+n['city_name']+'</option>'; 
        city = city + ''; 
        $(id).append(city); 
       }); 
     }, 
     error:function(){ 
      $(id).html('ERROR'); 
     } 
    }); 
} 

を使用できjQuery.data()またはjQuery.attr()

+0

その仕事:) thatsなぜオプションは2つの値を使用することができますここでユーザーに尋ねるが、私はそれがどのように動作しなかった、 –

関連する問題