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