Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
升级Joomla后PHP代码不起作用_Php_Joomla - Fatal编程技术网

升级Joomla后PHP代码不起作用

升级Joomla后PHP代码不起作用,php,joomla,Php,Joomla,我正在joomla网站上工作。一些开发人员创建了一个模块,显示城市选择的数据。该代码在joomla 1.5上运行良好,但升级joomla后,它会显示所有数据而不进行过滤。 我正在研究解决方案。我没有编码。下面是代码,PHP5.3中是否有不推荐的内容 // no direct access defined('_JEXEC') or die('Restricted access'); if(isset($_SESSION['CITY_SELECTION'])){ $selected_c

我正在joomla网站上工作。一些开发人员创建了一个模块,显示城市选择的数据。该代码在joomla 1.5上运行良好,但升级joomla后,它会显示所有数据而不进行过滤。 我正在研究解决方案。我没有编码。下面是代码,PHP5.3中是否有不推荐的内容

 // no direct access
defined('_JEXEC') or die('Restricted access'); 

if(isset($_SESSION['CITY_SELECTION'])){
    $selected_city = $_SESSION['CITY_SELECTION'];
}
else {
    $selected_city = '-SELECT A CITY-';
}

echo "<div id='city_selector'><form name='CITY_SELECTION_FORM' method='get' action='/residential-home.html'>" ;
echo "<SELECT id='city_input' name='CITY_SELECTION' onchange='this.form.submit();'>"; 


echo $selected_city;

foreach ($cities as $city=>$cityname) 
{
    $select = "";   
    if(strtolower(trim($selected_city))==strtolower(trim($cityname)))
    {
         $select = " SELECTED";
    }
    else
    {
        $select = "";
    }
    echo "<OPTION value='".$cityname."'".$select."> ".$cityname."</option>"; 
}

echo '</select>';
echo '</form></div>';  
helper.php

defined('_JEXEC') or die('Direct Access to this location is not allowed.');

class CitySelection
{
    /**
     * Returns a list of cities
    */
    public function getCities()
    {
        // get a reference to the database
        $db = &JFactory::getDBO();

        // get the list of cities in the custom city_selection
        $query = 'SELECT CS.cityname FROM #__city_selection AS CS Order By cityname ASC;';

        $db->setQuery($query);
        $cities = $db->loadResultArray();

        return $cities;
    } //end getCities

} //end CitySelection

joomla框架中有一些更改,如果您想在以后的joomla版本中使用J1.5-extensions,则需要对其进行一些小的更改


其中很多都在本文中进行了描述。但是,我假设问题出在代码的另一部分,可能在处理表单数据的文件中。

尝试在helper.php文件中使用以下查询,该文件使用Joomla 2.5编码标准:

$db = JFactory::getDbo();     
$query = $db->getQuery(true);

$query->select($db->quoteName('CS.cityname'))
 ->from($db->quoteName('#__city_selection', 'CS'))
 ->order($db->quoteName('cityname') . ' DESC');

$db->setQuery($query);

$cities = $db->loadObjectList();

希望这有帮助

else语句完全没有用处,您可以删除它。至于这一点,如果没有更多的细节,没有什么是错误的。与php升级无关,但是当您输出到html时,您应该转义您的值,因为这些值可能会破坏它:
htmlspecialchars($cityname)
,如果它显示了太多的城市,问题就出在检索城市的位置,这里没有。同样的代码在1.5 Joomla上工作。不知何故,它显示了所有城市的数据。我在哪里可以看到这个模块的设计?你能提供helper.php或mod_modulename.php中的代码吗?我相信问题将出现在这两个文件中的一个文件中
$db = JFactory::getDbo();     
$query = $db->getQuery(true);

$query->select($db->quoteName('CS.cityname'))
 ->from($db->quoteName('#__city_selection', 'CS'))
 ->order($db->quoteName('cityname') . ' DESC');

$db->setQuery($query);

$cities = $db->loadObjectList();