以下代码会生成以下错误。我希望有人能帮我调试它。
PHP注意:未定义的变量:第57行的... / index.php中的tmp
未定义的索引:第59行的... / index.php中的响应
<?php
// include config file
include_once './includes/config.inc.php';
// list of available distances
$distances = array(
200=>'200 Miles',
100=>'100 Miles',
50=>'50 Miles',
);
if(isset($_POST['ajax'])) {
if(isset($_POST['action']) && $_POST['action']=='get_nearby_stores') {
if(!isset($_POST['lat']) || !isset($_POST['lng'])) {
echo json_encode(array('success'=>0,'msg'=>'Coordinate not found'));
exit;
}
// support unicode
mysql_query("SET NAMES utf8");
// category filter
if(!isset($_POST['products']) || $_POST['products']==""){
$category_filter = "";
} else {
$category_filter = " AND cat_id='".$_POST['products']."'";
}
$sql = "SELECT *, ( 3959 * ACOS( COS( RADIANS(".$_POST['lat'].") ) * COS( RADIANS( latitude ) ) * COS( RADIANS( longitude ) - RADIANS(".$_POST['lng'].") ) + SIN( RADIANS(".$_POST['lat'].") ) * SIN( RADIANS( latitude ) ) ) ) AS distance FROM stores WHERE status=1 AND approved=1 ".$category_filter." HAVING distance <= ".$_POST['distance']." ORDER BY distance ASC LIMIT 0,60";
echo json_stores_list($sql);
}
exit;
}
$errors = array();
if($_POST) {
if(isset($_POST['address']) && empty($_POST['address'])) {
$errors[] = 'Please enter your address';
} else {
$google_api_key = '';
$region = 'us';
$xml = convertXMLtoArray($tmp);
if($xml['Response']['Status']['code']=='200') {
$coords = explode(',', $xml['Response']['Placemark']['Point']['coordinates']);
if(isset($coords[0]) && isset($coords[1])) {
$data = array(
'name'=>$v['name'],
'address'=>$v['address'],
'latitude'=>$coords[1],
'longitude'=>$coords[0]
);
$sql = "SELECT *, ( 3959 * ACOS( COS( RADIANS(".$coords[1].") ) * COS( RADIANS( latitude ) ) * COS( RADIANS( longitude ) - RADIANS(".$coords[0].") ) + SIN( RADIANS(".$coords[1].") ) * SIN( RADIANS( latitude ) ) ) ) AS distance FROM stores WHERE status=1 HAVING distance <= ".$db->escape($_POST['distance'])." ORDER BY distance ASC LIMIT 0,60";
$stores = $db->get_rows($sql);
if(empty($stores)) {
$errors[] = 'Stores with address '.$_POST['address'].' not found.';
}
} else {
$errors[] = 'Address not valid';
}
} else {
$errors[] = 'Entered address'.$_POST['address'].' not found.';
}
}
}
?>
答案 0 :(得分:1)
只有一行使用变量tmp
,它就在这一行:
$xml = convertXMLtoArray($tmp);
在这种情况下,变量用作函数的输入,因此变量必须存在。由于代码中没有任何地方,因此尚未分配,因此您会收到错误。
现在,很难说如何解决这个问题,因为我不知道convertXMLtoArray期望什么。我希望它能够将一些XML(作为字符串或XML文档对象)作为输入并返回一个数组。因此,在这种情况下,$tmp
应该包含XML,并且结果数组将存储在名为$xml
的变量中,根据具体情况,这个名称很差。
由于还提到了Google api密钥,因此您似乎意外删除了可从Google服务获取XML内容的代码段。
答案 1 :(得分:0)
它会出现此错误,因为第57行的$tmp
变量不存在。