JS변수를 PHP변수로 받아서 DB저장시 스크립트로 저장되네요
본문
고수님들, 안녕하세요.
js변수를 php 변수로 받아서 update 하려고 합니다.
<script>
var swlat = swLatLng.getLat();
var swlng = swLatLng.getLng();
var nelat = neLatLng.getLat();
var nelng = neLatLng.getLng();
</script>
<?php
$wr_1 = "<script>document.write(swlat);</script>";
$wr_2 = "<script>document.write(swlng);</script>";
$wr_3 = "<script>document.write(nelat);</script>";
$wr_4 = "<script>document.write(nelng);</script>";
$query1 = " update $write_table set wr_1 = '$wr_1' , wr_2 = '$wr_2' , wr_3 = '$wr_3' , wr_4 = '$wr_4' where wr_id = '$view[wr_id]' ";
echo $query1;
sql_query($query1);
?>
echo $query1;
에는 update g5_wonokwrite_commute_area set wr_1 = '36.44910809047835' , wr_2 = '128.56638847355053' , wr_3 = '36.45229328573961' , wr_4 = '128.57493410795699' where wr_id = '25'
정상 노출되어 db에서 작동시는 업데이트가 됩니다.
근데, 페이지에서 작동되면 DB에 wr_1에 변수값이 아닌,
<script>document.write(swlat);</script> 문자열 그대로 업데이트 되네요.
참 난감합니다.. 어떤방법이 있을까요?
!-->답변 3
ajax 로 처리해야 됩니다.
1) ajax 처리 파일 생성 (ex. 동일 디렉토리에 db_update.php 파일 생성)
<?php
include "../common.php"; // 그누보드 루트의 common.php 경로를 정확하게 지정
$write_table = $g5['write_prefix'] . $bo_table;
$query1 = " update $write_table set wr_1 = '$wr_1' , wr_2 = '$wr_2' , wr_3 = '$wr_3' , wr_4 = '$wr_4' where wr_id = '$wr_id' ";
// echo $query1;
sql_query($query1);
2) ajax 처리 코드 추가
<script>
var swlat = swLatLng.getLat();
var swlng = swLatLng.getLng();
var nelat = neLatLng.getLat();
var nelng = neLatLng.getLng();
var _bo = '<?php echo $bo_table ?>';
var _id = '<?php echo $wr_id ?>';
$.ajax({
url: './db_update.php',
type: 'POST',
data: {wr_1 : swlat, wr_2 : swlng, wr_3 : nelat, wr_4 : nelng, bo_table : _bo, wr_id : _id},
success: function(data) {
}
});
</script>
자바스크립트에서 php 값을 변수로 쓸 수는 있지만 그 반대는 원리적으로 불가능합니다.
그건 아버지보다 내가 먼저 탄생했다는 의미와 같으니까요. 즉 과거와 현재의 시제가 바뀔 수는 없는 것이죠.
이게 가능하려면 결국 아작스를 이용하셔야 합니다.
왜냐하면 아작스의 시제는 모두 실시간 곧 현재진행형이기 때문입니다.
js변수를 받아서 php 에 뿌려주려면 ajax를 써서 해보세요
맵을 이용해서 만든거 같은데 저는 ajax 써서 문제 해결 했어요
답변을 작성하시기 전에 로그인 해주세요.