2014-02-18 178 views
0

我正在爲joomla 3.2做一個模塊,我試圖在同一個類中將一個變量從一個函數傳遞給另一個函數,目的是在查詢中使用它。joomla 3.2模塊helper.php

如何在函數due()的查詢中傳遞「$ result」變量?

<?php 
class modUno 
{  
    public static function Uno() 
    { 
     $db = JFactory::getDBO(); 
     $query = "SELECT id AS memTotal FROM #__users WHERE username = 'bruno';"; 

     $db->setQuery($query); 
     $result = $db->query(); 
     return $result->fetch_object()->memTotal; 
    } 

    public static function due() 
    { 
     $result->due(); 

     $db = JFactory::getDBO(); 
     $query = "SELECT avatar AS memTotal FROM #__comprofiler WHERE id = '$result';"; 

     $db->setQuery($query); 
     $resulta = $db->query(); 
     return $resulta->fetch_object()->memTotal; 
    } 
} 
?> 

上面是 「helper.php」,然後還有 「mod_chat.php」,最後是 「如default.php」

mod_chat

enter code here 

<?php 

defined('_JEXEC') or die('Restricted access'); 
require_once(dirname(__FILE__).'/helper.php'); 

$risultato = modUno::uno(); 
$foto = modUno::due(); 
require JModuleHelper::getLayoutPath('mod_chat'); 
?> 

如default.php

enter code here 


<?php defined('_JEXEC') or die('Restricted access'); ?> 

<p> risultato: <?php echo $risultato; ?></p> 
<p> foto:<img src="http://somesite.com/images/comprofiler/<?php echo $foto; ?>" /></p> 

返回錯誤!

+0

在一個側面說明,請看看下面的鏈接,你的數據庫查詢HTTP: //docs.joomla.org/Selecting_data_using_JDatabase;)還要確保使用'execute()'而不是'query()' – Lodder

回答

0

首先,這是一個PHP問題,而不是Joomla問題。我發現codeacademy.com上的PHP教程是學習PHP的極好資源。

看起來你正試圖獲得用戶的社區生成器頭像。你不應該在這裏使用直接的數據庫查詢。使用社區生成器數據API來獲得你所需要的。閱讀更多關於它在這裏 - https://www.joomlapolis.com/support/tutorials/120-api-usage/18361-obtaining-field-values-through-getfields-api(看到這篇文章的結尾,得到頭像的代碼在那裏)

如果你想絕對查詢數據庫,而不是2個不同的功能,你應該只做1,並使用根據他的Joomla用戶名加入以獲取用戶的頭像。

<?php 
class modUno 
{  
    public static function avatar() 
    { 
     $db = JFactory::getDBO(); 
     $query = "SELECT cb.avatar FROM #__comprofiler AS cb, #__users AS u 
     WHERE u.id=cb.user_id AND u.username = 'bruno'"; 

     $db->setQuery($query); 
     $result = $db->loadResult(); 
     return $result; 
     //return $result->fetch_object()->memTotal; 
    } 
}  

@Lodder - 在Joomla中使用select查詢時,你永遠不應該直接調用execute()。

作爲一個側面說明 - 你需要使用ModUno ::由於()代替$ result->由於()

+0

當我指的是,我指的是'$ db-> execute()',其實不是'execute()' – Lodder

+0

我知道。但是,您不應該調用$ db-> execute()。總是使用包裝函數,如$ db-> loadObjectList() –

+0

當然,你是對的,我完全錯誤地閱讀查詢 – Lodder