2013-08-25 109 views
-1

任何建議PHP通告,以下是玩具變體的功能 - 功能loadProductVarients優化PHP代碼 - 功能顯示和未定義的變量

目前其顯示: -

一個)玩具變異名稱只是,其中i打算實現產品名稱和變體名稱。例如,如果Hotwheels是公司,法拉利是產品,Zsi是其變種。

現在以下功能只顯示ZSI作爲變種的名字,我打算實現法拉利ZSI的變種名稱

我認爲需要增加在$ temp1目錄產品的變量,但是儘管採用多種組合 - 我是無法實現它。

b)第二越來越PHP公告:未定義的變量:temp1中& TEMP2注意在功能loadproductvarients

我在學習PHP的 - 你提供幫助和建議將非常感激!

編輯

你好Lodder,

原函數

function loadProductVarients($id,$minprice,$maxprice,$fuel_type){ 
     $mainframe =& JFactory::getApplication(); 
     $option = JRequest::getCmd('option'); 
     $database =& JFactory::getDBO(); 
     global $Itemid; 
     $Vcond=""; 
     if($minprice!="" and $maxprice!=""){ 
     $Vcond.=" and (v_price between ".$minprice." and ".$maxprice.")"; 
     }elseif($minprice){ $Vcond.=" and v_price >= ".$minprice.""; 
     }elseif($maxprice){ $Vcond.=" and v_price <= ".$maxprice."";} 

     if($fuel_type!="") 
      $Vcond.=" and v_fuel_type='$fuel_type' "; 

     $sql = "Select * from #__newcar_variants Where v_prod_id='".$id."' $Vcond and v_status='1'"; 

     $database->setQuery($sql); 
     $rows = $database->loadObjectList(); 
    $list=""; 
     if($rows){ 
      foreach($rows as $row){ 
       if($row->v_small_img!=""){ 
        $img = "uploads/variants/".$row->v_big_img ; 
       }else{ 
        $img="templates/pioneer_home/images/dvd1.jpg"; 
       }  

    $temp1.='<li><a href="index.php?newcar&id='.$row->v_prod_id.'&vid='.$row->v_id.'">'.$row->v_name.'</a></li>'; 
    $temp2.='<li>Rs. '.$row->v_price.'</li>'; 
      } 
      $list.='<div class="sliding-box-middle"><ul>'.$temp1.'</ul></div>'; 
      $list.='<div class="sliding-box-right"><ul>'.$temp2.'</ul></div>'; 

     }else{ 
      $list.='<p>No Variants.</p>'; 
     } 
     return $list; 
    } 


    $sql = "Select * from #__newcar_variants Where v_prod_id='".$id."' $Vcond and v_status='1'"; 

下面是修改後的代碼與變化勸寫: -

 function loadProductVarients($id,$minprice,$maxprice,$fuel_type){ 
     $db = JFactory::getDBO(); 
     $Vcond=""; 
     if($minprice!="" and $maxprice!=""){ 
     $Vcond.=" and (v_price between ".$minprice." and ".$maxprice.")"; 
     }elseif($minprice){ $Vcond.=" and v_price >= ".$minprice.""; 
     }elseif($maxprice){ $Vcond.=" and v_price <= ".$maxprice."";} 

     if($fuel_type!="") 
      $Vcond.=" and v_fuel_type='$fuel_type' "; 

     $query = $db->getQuery(true); 
     $query->select('*'); 
     $query->from('#__newcar_variants');  
     $query->where($db->quote($Vcond), $db->quote($id), $db->quote('v_status=1'));  

     $db->setQuery($query); 
     $rows = $db->loadObjectList(); 

     $list=""; 
     if($rows){ 
      foreach($rows as $row){ 
       if($row->v_small_img!=""){ 
        $img = "uploads/variants/".$row->v_big_img ; 
       }else{ 
        $img="templates/pioneer_home/images/dvd1.jpg"; 
       }  

    $temp1.='<li><a href="index.php?newcar&id='.$row->v_prod_id.'&vid='.$row->v_id.'">'.$row->v_name.'</a></li>'; 
    $temp2.='<li>Rs. '.$row->v_price.'</li>'; 
      } 
      $list.='<div class="sliding-box-middle"><ul>'.$temp1.'</ul></div>'; 
      $list.='<div class="sliding-box-right"><ul>'.$temp2.'</ul></div>'; 

     }else{ 
      $list.='<p>No Variants.</p>'; 
     } 
     return $list; 
    } 
+0

請爲您的數據庫queires使用Joomla編碼標準:http://docs.joomla.org/J2.5:Accessing_the_database_using_JDatabase – Lodder

+0

Hello Lodder,建議按照編碼標準重新編寫代碼,但會獲得新通知。 5月冥想!感謝您的Joomla編碼標準的鏈接 – Ruchika

+0

嗨,更改'$ db-> quote(v_status =='1')'爲'$ db-> quote('v_status = 1')' – Lodder

回答

1

您在未設置的變量上使用連接。

更換

$temp1.='<li><a href="index.php?new&id='.$row->v_prod_id.'&vid='.$row->v_id.'">'.$row->v_name.'</a></li>'; 
$temp2.='<li>Rs. '.$row->v_price.'</li>'; 

通過

$temp1='<li><a href="index.php?new&id='.$row->v_prod_id.'&vid='.$row->v_id.'">'.$row->v_name.'</a></li>'; 
$temp2='<li>Rs. '.$row->v_price.'</li>'; 

或者

$temp1 = ''; 
$temp2 = ''; 
// CODE 
$temp1.='<li><a href="index.php?new&id='.$row->v_prod_id.'&vid='.$row->v_id.'">'.$row->v_name.'</a></li>'; 
$temp2.='<li>Rs. '.$row->v_price.'</li>'; 

我沒有,雖然得到你的第一個問題。

+0

謝謝,但它不起作用。使用上面雖然刪除錯誤通知,但它只顯示一個產品變體。我的意思是說法拉利有3個變種 - zsi,lsi,msi。因此,使用上面的代碼只顯示一個變體,即zsi – Ruchika

+0

是的,正如我所說的,我沒有得到您的第一個問題。變體位於v_name字段中,對嗎?您是否嘗試在foreach中回顯某些內容($ rows爲$ row)循環以查看您是否真的有3個變體?你確定你的查詢返回3行嗎? – Sugar

+0

是的,變體是v_name。我在第一個查詢中提出的問題: - 目前,變體中的字段僅以變體名稱即zxi,lxi,exi,hxi顯示。雖然我實現它的目的是在變體名稱下顯示產品名稱和變體名稱。我的意思是法拉利zxi,法拉利lxi,法拉利exi和法拉利hxi。原始的sql查詢正確顯示 - 但只有變種。然而,產品名稱,即prod_id ='$ Carmodel'以及v_name變體沒有得到顯示 - 儘管嘗試了很多組合。 – Ruchika