• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPで郵便番号を検索し、住所を表示したい)

PHPで郵便番号を検索し住所を表示したい

このQ&Aのポイント
  • PHPを使用して郵便番号を検索し、住所を表示するプログラムを作成しています。テキストボックスに郵便番号を入力し、検索ボタンをクリックすると、入力された郵便番号に対応する住所がテキストボックスに表示されるようにしたいです。
  • 実際のソースコードでは、jQueryのAjaxを使用して郵便番号をサーバーに送信し、サーバーサイドで郵便番号に対応する住所を検索しています。検索結果はPHPからAjax通信で受け取り、住所のフィールドに表示されます。
  • しかし、現在のプログラムでは、Stateフィールドに「北海道札幌市中央区旭ヶ丘」という結果が表示されてしまいます。これを修正して、Stateフィールドには「北海道」、Cityフィールドには「札幌市」、Addressフィールドには「中央区旭ケ丘」という表示にしたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ok-rjak
  • ベストアンサー率52% (70/134)
回答No.1

ざくっと見てサッと回答していますが、 postal.phpの > echo $rec['State']; > echo $rec['City']; > echo $rec['Address']; ここを、 > echo json_encode($rec); に変更して、 postal.htmlの > $("#State").val(data); ここを、 > $("#State").val(data.State); > $("#City").val(data.City); > $("#Address").val(data.Address); にしたらどうでしょう?

do79tama13
質問者

お礼

お礼が遅くなってしまい申し訳ございません。 jsonコードを扱うのは初めてでしたので、理解するのに時間がかかっておりました。 ご回答をヒントに考えたところやっと解決いたしました。 「postal.php」で結果を配列に渡しjsonコードに変換する過程のコードを、 $row=array(); $row[]=$stmt->fetch(PDO::FETCH_ASSOC); header("Content-Type:application/json"); echo json_encode($row); 「postal.html」で、 $("#State").val(data[0].State); $("#City").val(data[0].City); $("#Address").val(data[0].Address); と修正してみたところ解決しました。 **********解決したソースを掲載します。*************** 「postal.php」 <?php $Zip=$_POST['Zip']; $State=""; $City=""; $Address=""; get_state($Zip); /* 郵便番号(zipcode)を入れると住所を表示する関数 */ function get_state($Zip) { //接続文字列 $dsn='mysql:dbname=zip;host=localhost'; $user='user'; $password='password'; $dbh= new PDO($dsn,$user,$password); $dbh->query('SET NAMES UTF-8'); $sql='SELECT * FROM zip WHERE Zip_Code='.$Zip; $stmt=$dbh->prepare($sql); $stmt->execute(); $row=array(); $row[]=$stmt->fetch(PDO::FETCH_ASSOC); header("Content-Type:application/json"); echo json_encode($row); } $dbh=null; ?> 「postal.html」 <!DOCTYPE html> <html> <head> <title>新規登録</title> <script src="http://code.jquery.com/jquery-1.6.2.min.js"> </script> <script type="text/javascript"> $(document).ready(function(){ //送信ボタンクリック $('#send').click(function(){ //POSTメソッドで送るデータを定義します var data = {パラメータ名 : 値}; var data = {Zip : $('#Zip').val()}; $.ajax({ type: "POST", url: "postal.php", dataType:"json", data: data, success: function(data, dataType) { //PHPから返ってきたデータの表示 $("#State").val(data[0].State); $("#City").val(data[0].City); $("#Address").val(data[0].Address); }, //Ajax通信が失敗した場合に呼び出されるメソッド error: function(XMLHttpRequest, textStatus, errorThrown){ //エラーメッセージの表示 alert('Error : ' + errorThrown); } }); //サブミット後、ページをリロードしないようにする return false; }); }); </script> </head> <body> <h1>ZIPCODE</h1> <form method="post" > <table> <tr> <th>Zip</th> <td><input type="text" name="Zip" id="Zip" size="8"/> <input type="button" id="send" name="send" value="send" ></td> </tr> <tr><th>State</th><td><input type="text" id="State" name="State" size="10"/></td></tr> <tr><th>City</th><td><input type="text" id="City" name="City" size="10"/></td></tr> <tr><th>Address</th><td><input type="text" id="Address" name="City" size="10"/></td></tr> </table> </form> </body> </html> ありがとうございました(#^^#)

関連するQ&A