我承认我不太了解php准则,需要帮助-如果可能的话,在一些基本的php注意事项上。尽管可以通过关闭错误报告来安全地忽略它们。但是,正如所谓的学习来自工作经验
已最大限度地打开错误报告有两个样本通知-这是发生在许多页面上的不同变量是
A) 注意:未定义的变量:第45行/home/truecar7/public_html/contensions/com_toys/products/search.php中的列表
B) 未定义的属性:第180行上的stdClass::$prod_small_pic
A的功能是:-
function brand_drop_down(){
$mainframe =& JFactory::getApplication();
$option = JRequest::getCmd('option');
global $Itemid;
$database = &JFactory::getDBO();
$sql = "SELECT * from #__toys_products where cat_status='1' order by cat_sorder Asc";
$database->setQuery($sql);
$rows = $database->loadObjectList();
$list.="";
foreach($rows as $row){
$list.="<option value='".$row->cat_id."' style='padding-left:10px;'>".$row->cat_name."</option>";
}
return $list;
B的功能是
$database->setQuery($sql);
$rows = $database->loadObjectList();
$list="";
if($rows){
$flg=0;
foreach($rows as $row){
if($row->prod_small_pic!=""){
$img = "uploads/products/".$row->cat_image;
}else{
$img="templates/pioneer_home/images/dvd1.jpg";
}
我可以看到变量-list和prod_small_pic没有定义。我认为它们是空字符串。
我指的是如何定义它们,或者更确切地说是删除此类错误通知的最佳方式。看到,多个页面上有许多错误通知,但使用不同的变量
A的函数:
function brand_drop_down(){
$mainframe =& JFactory::getApplication();
$option = JRequest::getCmd('option');
global $Itemid;
$database = &JFactory::getDBO();
$sql = "SELECT * from #__toys_products where cat_status='1' order by cat_sorder Asc";
$database->setQuery($sql);
$rows = $database->loadObjectList();
// ***** changed next line
$list="";
foreach($rows as $row){
$list.="<option value='".$row->cat_id."' style='padding-left:10px;'>".$row->cat_name."</option>";
}
return $list;
}
功能B
$database->setQuery($sql);
$rows = $database->loadObjectList();
$list="";
if($rows){
$flg=0;
foreach($rows as $row){
// ***** changed next line
if(isset($row->prod_small_pic) && $row->prod_small_pic !==""){
$img = "uploads/products/".$row->cat_image;
}else{
$img="templates/pioneer_home/images/dvd1.jpg";
}
}
}
第45行看起来像是在初始化变量,但不是,它应该是$list="";
第80行在$row中查找属性,但它不包含该属性。也许您没有在查询中选择它?试试print_r($row)
看看里面有什么。
另外,global $Itemid;
-难道不可能使它成为函数参数吗?function brand_drop_down($Itemid){