Php Joomla-从列合并数据库结果

Php Joomla-从列合并数据库结果,php,mysql,database,joomla,Php,Mysql,Database,Joomla,这是我第一次使用StackOverflow,我想知道是否有人可以帮助我处理以下场景 我有一个joomla网站运行RS Events Pro组件。它的工作方式是我发布一个事件列表,人们可以搜索一个事件,就像谷歌一样,它显示一个结果列表。从结果中,您可以单击以购买门票并查看更多详细信息 现在,在结果页面上,我想添加一个小功能,它将显示可用门票的状态或活动是否已售完 我创建了以下代码,但我希望合并结果,因为例如: 活动一可能有3种不同类型的门票。第一种类型可能已售罄,因此我的查询返回以下内容:“售罄”

这是我第一次使用StackOverflow,我想知道是否有人可以帮助我处理以下场景

我有一个joomla网站运行RS Events Pro组件。它的工作方式是我发布一个事件列表,人们可以搜索一个事件,就像谷歌一样,它显示一个结果列表。从结果中,您可以单击以购买门票并查看更多详细信息

现在,在结果页面上,我想添加一个小功能,它将显示可用门票的状态或活动是否已售完

我创建了以下代码,但我希望合并结果,因为例如: 活动一可能有3种不同类型的门票。第一种类型可能已售罄,因此我的查询返回以下内容:“售罄”。可用。有空。”

我想要它,所以如果所有的票都卖完了,它只显示“卖完”

是否仍然可以合并数据库列中的结果,因为如果可以,也许我可以合并给定事件的所有可用票证,如果其>=1,则我可以显示“可用票证”

<?php
            $db = &JFactory::getDBO();
            $db->setQuery("SELECT * FROM #__rseventspro_tickets WHERE ide = '".$event->id."'");
            $tickets = $db->loadObjectList();

              foreach($tickets as $ticket)
              {
                if($ticket->seats >= '1'){
                    echo('Tickets available. ');

                }
                else{
                    echo('Sold out. ');
                }

              } 
              ?>

您可以在sql查询中进行组调用,但是处理起来会很困难。在这种情况下,只需额外运行一次结果就更容易了,如:

$available=array(); 
foreach($tickets as $ticket)
{ 
    if( !isset($available[$ticket->ide])) { $available[$ticket->ide]=true; }
    $available[$ticket->ide]=$available[$ticket->ide]?
    $ticket->seats > 0:$available[$ticket->ide]; 
}
// now like you said, only
foreach($tickets as $ticket)
{   
    if($available[$ticket->ide]){
        echo('Tickets available. ');
    }
    else{
        echo('Sold out. ');
    }
} 

除非有大量的事件,否则在性能方面不会有太大的差别,这样循环数组很快

你能发布一些示例结果集来帮助我们更好地理解你试图解析的数据吗?你在问如何显示结果吗?嗨,Elin和Brian,是的,我在请求帮助显示结果。我将解释我的数据库表是如何布局的,以及我的结果是如何显示在网页上的。表-门票:ID、活动ID(链接内容)、门票名称、价格、可用座位。因此,每个条目都指定了上述数据。现在让我们假设我有一个正在运行的事件。这里有两张票,便宜票和贵宾票。如果有50张便宜票可用,0张VIP票,我会在网页上输出=“票可用。售罄。”因此,它对每张票所做的是分别解析数据。我希望这样,如果有任何可用的票,无论是VIP票还是廉价票,它都会说“可用的票”。@BrianBolli我现在已经在原始帖子中包含了数据库转储谢谢你Jonasfh!今天我学到了一些新东西。我觉得我在阵列方面的知识还很薄弱,所以我打算好好玩玩。
$available=array(); 
foreach($tickets as $ticket)
{ 
    if( !isset($available[$ticket->ide])) { $available[$ticket->ide]=true; }
    $available[$ticket->ide]=$available[$ticket->ide]?
    $ticket->seats > 0:$available[$ticket->ide]; 
}
// now like you said, only
foreach($tickets as $ticket)
{   
    if($available[$ticket->ide]){
        echo('Tickets available. ');
    }
    else{
        echo('Sold out. ');
    }
}