Php 非常具体,在joomla组件中,将艺术家的图像添加到最近歌曲的表视图中

Php 非常具体,在joomla组件中,将艺术家的图像添加到最近歌曲的表视图中,php,mysql,sql,joomla,Php,Mysql,Sql,Joomla,我想有艺术家(歌曲艺术家)的形象,在最近的歌曲查看可用。 以下是php文件和数据库表,我猜您在回答以下问题时可能需要: (如果有人能这么快教我如何使用查询命令在交叉使用表(而不仅仅是一行表)中选择这样的数据,我会很高兴。如果没有plz,请更改代码以查看图片) 以下是帮助器php代码 <?php // no direct access defined('_JEXEC') or die('Restricted access'); class modMusColRecentlyAddedSo

我想有艺术家(歌曲艺术家)的形象,在最近的歌曲查看可用。 以下是php文件和数据库表,我猜您在回答以下问题时可能需要: (如果有人能这么快教我如何使用查询命令在交叉使用表(而不仅仅是一行表)中选择这样的数据,我会很高兴。如果没有plz,请更改代码以查看图片)

以下是帮助器php代码

<?php

// no direct access
defined('_JEXEC') or die('Restricted access');

class modMusColRecentlyAddedSongsHelper
{


function getSongs(&$params)
{
    global $mainframe;
    $_db    = & JFactory::getDBO();
    $model      = modMusColRecentlyAddedSongsHelper::getModel();

        $limit = $params->get( 'n_songs', 5 );

        if($params->get( 'artist_id' )) $where_clause[] = " s.artist_id = " . $params->get( 'artist_id' ) . " " ;

        if ($params->get( 'genre_id' )) {
            $genre_id = $params->get( 'genre_id' );
            $model->getDescendantsId($genre_id); 
            $descendants = $model->descendantsId;
            $descendants[] = $genre_id ;
            $genre_clause = ' ( s.genre_id = ' . implode(' OR s.genre_id = ',$descendants) . ' ) ';
            $where_clause[] = $genre_clause;
        }


            //$where_clause[] = ' ra.type = "song" ';
            $where_clause = (count($where_clause) ? ' WHERE '.implode(' AND ', $where_clause) : '');

            $query =    ' SELECT s.*, ar.artist_name,al.name as album_name, AVG(ra.points) as points FROM #__muscol_songs as s '.
                        ' LEFT JOIN #__muscol_albums as al ON al.id = s.album_id '.
                        ' LEFT JOIN #__muscol_artists as ar ON ar.id = s.artist_id '.
                        ' LEFT JOIN #__muscol_ratings as ra ON ra.album_id = s.id AND ra.type = "song" '.
                        $where_clause .
                        ' GROUP BY s.id ' .
                        ' ORDER BY s.added DESC '.
                        ' LIMIT '. $limit;

                        //echo $query;die;


        $_db->setQuery( $query );
        $recent_songs = $_db->loadObjectList();

        //print_r($query);die;

        return $recent_songs;

}

function getModel()
{
    if (!class_exists( 'ArtistsModelSearch' ))
    {
        // Build the path to the model based upon a supplied base path
        $path = JPATH_SITE.DS.'components'.DS.'com_muscol'.DS.'models'.DS.'search.php';
        $false = false;

        // If the model file exists include it and try to instantiate the object
        if (file_exists( $path )) {
            require_once( $path );
            if (!class_exists( 'ArtistsModelSearch' )) {
                JError::raiseWarning( 0, 'Model class ArtistsModelSearch not found in file.' );
                return $false;
            }
        } else {
            JError::raiseWarning( 0, 'Model ArtistsModelSearch not supported. File not found.' );
            return $false;
        }
    }

    $model = new ArtistsModelSearch();

    return $model;
}

}
数据库中的艺术家表(艺术家图片应从图片列中读取)


您已经在帮助器中查询了正确的表,因此-如果您显示的代码已经起作用-您只需返回额外的字段:

  $query =    ' SELECT s.*, ar.artist_name,al.name
变成

  $query =    ' SELECT s.*, ar.artist_name,ar.image as artistimage, al.name
<?php echo  $song->artist_name;
echo sprintf('<img src="%s" class="artistpic" />',$song->artistimage);
 ?>
然后在视图中:

<?php echo $song->artist_name; ?>

变成

  $query =    ' SELECT s.*, ar.artist_name,ar.image as artistimage, al.name
<?php echo  $song->artist_name;
echo sprintf('<img src="%s" class="artistpic" />',$song->artistimage);
 ?>


我有一个问题,:-p有些东西不工作,:)没有显示图像(抱歉耽搁)我之前没有时间测试这个。是否有任何检查错误的提示?当然,请查看浏览器中的标记(使用firebug或类似工具)并查看您编写的src属性,您可能有错误的路径。如果没有src,那么尝试使用JError::raiseNotice(100,var_export($song,true))或var_dump($song)来查看缺少的内容。还有,为什么要使用阿拉伯语键作为语言常量JText:u40;‘u1570;لوم’?这真的没有意义,阿拉伯语应该在你的语言文件中,你应该有英语常量,否则将你的组件翻译成其他语言会很困难。关于阿拉伯语常量:D你是对的:)我有点懒:)我之前一直在做语言文件的创建,我正在解决这样的问题。:)这不是阿拉伯语:)这是波斯语:)虽然这个词可能有一个与阿拉伯语相关的意思,但它在波斯语中的含义是一样的,因为Album是一个英语单词,被导入到两种语言中。但是我来自伊朗:)我会很快修复像UTF常量这样的东西(一般来说,不管语言:):)确保:)ThanQ,我会检查这些并通知你;)
<?php echo  $song->artist_name;
echo sprintf('<img src="%s" class="artistpic" />',$song->artistimage);
 ?>