2014-02-18 2 views
0

Я делаю модуль для joomla 3.2, я пытаюсь передать переменную из одной функции в другую в том же классе, цель - использовать ее в запросе.joomla 3.2 module helper.php

Как передать переменную «$ result» в запросе функции due()?

<?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. Я нашел учебник PHP на codeacademy.com отличным ресурсом для изучения PHP.

Похоже, вы пытаетесь получить аватар сообщества сообщества Builder. Здесь вы не должны использовать прямые запросы к базе данных. Используйте API данных Community Builder, чтобы получить то, что вам нужно. Узнайте больше об этом здесь: https://www.joomlapolis.com/support/tutorials/120-api-usage/18361-obtaining-field-values-through-getfields-api (см. Конец этой статьи, код для получения аватара есть)

Если вы хотите абсолютно запросить БД, а не 2 разные функции, вы должны сделать всего 1 и использовать JOIN, чтобы получить аватар пользователя на основе его имени пользователя 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 - Вы никогда не должны напрямую обращаться к execute() при использовании отдельных запросов с помощью Joomla.

Как примечание стороны - вам нужно использовать ModUno :: из-() вместо $ result-> из-за()

+0

Когда я обращался к нему, я имел в виду '$ db-> execute()', на самом деле 'execute()' – Lodder

+0

Я знаю. Однако вы не должны вызывать $ db-> execute(). Всегда используйте функции обертки, такие как $ db-> loadObjectList() –

+0

Конечно, вы правы, я неправильно читаю запрос – Lodder

Смежные вопросы