PHP JavaScript mysqlを使って顧客管理システムのようなものを作っています。
leafletという地図ライブラリを使っており、ユーザは地図上をクリックして操作する事が出来ます。
データベースには顧客ごとの座標データ等が入っています。
地図上にはデータベースに登録された座標データに基づいて、アイコンが表示されます。
地図上のアイコンをクリックし、顧客との対応内容をフォーム上に入力する事で、テータベースへ登録するようになっています。
質問内容ですが、
新しい顧客をデータベースに登録し、そのデータを地図上に反映させる処理についてです。
当方、ほぼ独学でプログラミングをしているので、一般的な顧客管理システムでは、どう処理するのがスマートなのか分らないので、アドバイス頂きたいのです。
下記が、今思いつく方法です。
地図上をクリックした際に座標(lat,lng)を取得します。
地図上にポップアップが表示され、ポップアップ内のテキストを使用して送信formを作成、その情報をpost送信します。
ユーザは新しいタブにて登録情報を確認し、データベースへ登録します。
タブを閉じ、地図画面へ戻り、画面をリロードすることで、新しい顧客のアイコンが地図上に表示されます。
この方法は、画面をリロードする操作について、ユーザが行わなければならない点で、スマートではないように思います。
下記はソースコードの一部です。
//json形式で顧客のデータを受け取り、地図上に表示させるアイコンを生成
var rows_array = JSON.parse('<?php echo $php_json ?>');
var markerArray_L = [];//leafletのマーカー
for(i=0;i<rows_array.length;i++){
//leafletのマーカー
markerArray_L.push(create_maker_L(rows_array[i]['client_id'],rows_array[i]['client_name'],[rows_array[i]['lat'],rows_array[i]['lng']],rows_array[i]['address'],rows_array[i]['s_date'],rows_array[i]['last_content'],createMapIcon(rows_array[i]['icon_url'])));
}
//地図上をクリックし、ポップアップを表示。登録ボタンをクリックすると新しい顧客を登録する画面へ移動
//未完成
mymap.on('click',onClickMap);
function onClickMap(e){
var lat= (Math.round(e.latlng.lat * 1000000)) /1000000 ;
var lng= (Math.round(e.latlng.lng * 1000000)) /1000000 ;
L.popup().setLatLng( e.latlng )
.setContent( '<form target="newtab" action="./insert_client.php" method="post">'+get_hidden_element('lat',lat)+get_hidden_element('lng',lng) +'<input type="submit" value="登録"></form>')
.openOn( mymap );
console.log(lat +' '+ lng);
}
回答2件
あなたの回答
tips
プレビュー