Php 如何在Joomla数据库/Seblod中选择(连接)多个表
我使用组件SEBLOD for joomla创建了一个表单,没关系,我可以正确查看输入的数据,但我想处理数据,但是我无法连接到数据库,因此我尝试了以下方法:Php 如何在Joomla数据库/Seblod中选择(连接)多个表,php,mysql,database,joomla3.0,Php,Mysql,Database,Joomla3.0,我使用组件SEBLOD for joomla创建了一个表单,没关系,我可以正确查看输入的数据,但我想处理数据,但是我无法连接到数据库,因此我尝试了以下方法: <?php defined( '_JEXEC' ) or die; $catId = 11; $catId2 = 12; $sql = "SELECT * FROM #__cck_store_form_add_compras"; $con = &JFactory::getDBO(); $con->setQuery(
<?php
defined( '_JEXEC' ) or die;
$catId = 11;
$catId2 = 12;
$sql = "SELECT * FROM #__cck_store_form_add_compras";
$con = &JFactory::getDBO();
$con->setQuery($sql);
$resultado = $con->loadObjectList();
$query = "SELECT * FROM #__content WHERE catid ='" . $catId . "' OR catid ='" . $catId2 . "'";
$db = JFactory::getDBO();
$db->setQuery($query);
$articles = $db->loadObjectList();
foreach($articles as $article){
echo '<br/><br/>ID:'. $article->id
.'<br/>Titulo: '. $article->title
.'<br/>Quantidade Comprada: '.$resultado[0]->add_compras_quantidade_comprada
.'<br/>Unidade de Medida: '.$resultado[0]->add_compras_unidade_de_medida
.'<br/>Preço Por Kilo/Unidade: '.$resultado[0]->add_compras_preco_por_unidade_kilo
.'<br/>Data da Compra: '.$resultado[0]->add_compras_data_da_compra
.'<br/>Total da Compra: '.$resultado[0]->add_compras_total_da_compra
.'<br/>Local da Compra: '.$resultado[0]->add_compras_local_da_compra
;
}
?>
如果我使用下面的代码,我只能看到其他字段,但看不到文章id和文章名称:
$sql = "SELECT * FROM #__cck_store_form_add_compras";
$con = &JFactory::getDBO();
$con->setQuery($sql);
$resultado = $con->loadObjectList();
查看文档,我发现这段代码:
// Get a db connection.
$db = JFactory::getDbo();
// Create a new query object.
$query = $db->getQuery(true);
// Select all articles for users who have a username which starts with 'a'.
// Order it by the created date.
// Note by putting 'a' as a second parameter will generate `#__content` AS `a`
$query
->select($db->quoteName(array('a.*', 'b.username', 'b.name')))
->from($db->quoteName('#__content', 'a'))
->join('INNER', $db->quoteName('#__users', 'b') . ' ON (' . $db->quoteName('a.created_by') . ' = ' . $db->quoteName('b.id') . ')')
->where($db->quoteName('b.username') . ' LIKE \'a%\'')
->order($db->quoteName('a.created') . ' DESC');
// Reset the query using our newly populated query object.
$db->setQuery($query);
// Load the results as a list of stdClass objects (see later for more options on retrieving data).
$results = $db->loadObjectList();
我想这正是我所需要的,但我不知道如何才能改变我的需要,有人可以帮助我吗
抱歉,我的英语不好,我正在使用谷歌翻译来帮助我。显示SEBLOD内容过滤列表的最佳方法是使用SEBLOD搜索,并通过菜单项、模块或SEBLOD内容内部(使用CCK模块或CCK列表字段)显示它。 在SEBLOD搜索中,您可以将“article category id”设置为过滤器,并将“11,12”设置为默认值,以便仅检索这两个类别中的文章 请在SEBLOD论坛上找到您问题的完整答案 谢谢。 Sebastien.与JTable::getInstance(“内容”);您可以从Joomla内容表中获取数据,并将SEBLOD内容留给查询 例如:
$query = "SELECT * FROM #__cck_store_form_produto";
$db = &JFactory::getDBO();
$db->setQuery($query);
$values = $db->loadObjectList();
foreach($values as $val){
echo $val->id; // The article ID is inside SEBLOD table too.
echo $val->your_field; // will write the value on a SEBLOD field called "your_field"
// now to get joomla values
$maindata =& JTable::getInstance("content");
$maindata->load($val->id);
echo $maindata->title; //will write article title
echo $maindata->alias; //will write article alias
echo $maindata->catid; //will write article Category ID
}
或者您也可以在两个表之间使用“内部联接”,只需使用ID链接值:
$query = "SELECT * FROM #__cck_store_form_produto";
$db = &JFactory::getDBO();
$db->setQuery($query);
$values = $db->loadObjectList();
foreach($values as $val){
echo $val->id; // The article ID is inside SEBLOD table too.
echo $val->your_field; // will write the value on a SEBLOD field called "your_field"
// now to get joomla values
$maindata =& JTable::getInstance("content");
$maindata->load($val->id);
echo $maindata->title; //will write article title
echo $maindata->alias; //will write article alias
echo $maindata->catid; //will write article Category ID
}