2016-08-17 2 views
0

index.php에 있습니다. 입력 데이터 (범위)를 변수 nova.php에 입력하고 싶습니다. 사용할 때 $ range = $ _GET [ 'range']; nova.php에서 보여줍니다 : 정의되지 않은 인덱스 : 범위. 제 생각에는 데이터와 같은 것을 넣어야합니다 : myAjax 함수에 {range : range}. 아약스를 통해 입력에서 변수를 외부 PHP로 가져옴

<?php 
if($_POST['action'] == 'call_this') { 
$con=mysqli_connect("localhost","tech","151987","portnew"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$range = $_GET['range']; 
// Perform queries 
$query = $con->query("SELECT (6371 * acos(cos(radians(53.216908))* 
cos(radians(lat)) * cos(radians(lng) - radians(7.453240)) + 
sin(radians(53.216908)) * sin(radians(lat)))) AS distance,  
port_name FROM ports HAVING distance < '".$range."' ORDER BY distance LIMIT 0 , 20; "); 

while ($row = $query->fetch_assoc()) { 
    $port_list[] = $row['port_name']; 
} 
echo json_encode($port_list); 
} 
?> 

그래서 기본적으로이 스크립트는 위도, logitude에 따라 인근 지역을 찾고있다 : 그러나 물론 내 아약스

function myAjax() { 
    $.ajax({ 
     type: "POST", 
     url: 'nova.php', 
     data:{action:'call_this'}, 
     success:function(html) { 
     alert(html); 
     } 
    }); 
} 

내 nova.php

<input id="range" type="text" name="range" class="enter" value=""> 
<input type="button" onclick="myAjax()" value="Show nearby" /> 

작동하지 않습니다. 내가 ...HAVING distance < 150 ORDER BY...을 넣을 때 일하고,하지만 난

$range = $_POST['range']; 

, 그래서 $_POST 같이하지 $_GET을 사용하여 정적 범위 당신은 post 방법을 사용

+0

답변 중 하나라도 맞으면 정답으로 표시하십시오. –

답변

2

확인오고있다 방법을 모르는이 jsFiddle

당신은 아약스 기능은 PHP 코드 변경이 줄

$range = $_GET['range']; 

에에서

function myAjax() { 
var range = document.getElementById('range').value; 
    $.ajax({ 
     type: "POST", 
     url: 'nova.php', 
     data:{action:'call_this',range:range}, 
     success:function(html) { 
     alert(html); 
     } 
    }); 
} 

해야한다

$range = $_POST['range']; 

또한 유형 범위의 입력에는 정의 된 값이 있어야합니다. ex 값 = "100". 공백으로 남겨 두지 마십시오.

+0

고마워요! .. 또한 작동 중입니다. – Burco

+0

그리고 53.216908 및 7.453240 대신 DB의 변수 값을 사용하고 싶습니다. 나는 $ lat와 $ lng을 port_name = $ port에 사용합니다. 아마도 두 개의 쿼리가 필요할 것입니다. 첫 번째 SELECT lat, lng FROM 포트 where port_name = $ port; while ($ row = $ query-> fetch_assoc()) { $ lat = $ row [ 'lat']; $ lng = $ row [ 'lng']; } 두 번째 예제에서는 53.216908 및 7.453240 대신 $ lat 및 $ lng를 사용합니다. 내가 맞습니까? – Burco

+0

2 개의 쿼리와 그 작업을 사용했습니다. – Burco

2

를 사용하여 입력 내 범위를 설정, 그리고 싶습니다 그리고 당신이 필요 같은 data 당신이 $_GET 사용하는

data:{action:'call_this',range:$('#range').val()}, 
+0

감사합니다! 작동 중입니다;) – Burco

1

그것을 통과하고 당신은 $_POST를 사용한다 또는 당신이 할 때 $_REQUEST을 사용할 수 있습니다 datas는

$range = $_REQUEST['range']; 
관련 문제