协助调试未定义的变量

时间:2014-12-07 21:52:37

标签: php

以下代码会生成以下错误。我希望有人能帮我调试它。

  

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.';
        }
    }
}
?>

2 个答案:

答案 0 :(得分:1)

只有一行使用变量tmp,它就在这一行:

$xml = convertXMLtoArray($tmp);

在这种情况下,变量用作函数的输入,因此变量必须存在。由于代码中没有任何地方,因此尚未分配,因此您会收到错误。

现在,很难说如何解决这个问题,因为我不知道convertXMLtoArray期望什么。我希望它能够将一些XML(作为字符串或XML文档对象)作为输入并返回一个数组。因此,在这种情况下,$tmp应该包含XML,并且结果数组将存储在名为$xml的变量中,根据具体情况,这个名称很差。

由于还提到了Google api密钥,因此您似乎意外删除了可从Google服务获取XML内容的代码段。

答案 1 :(得分:0)

它会出现此错误,因为第57行的$tmp变量不存在。