这是我第一次在StackOverflow上,我想知道是否有人能在下面的场景中帮助我。
我有一个运行RS事件Pro组件的joomla网站。它的工作方式是,我发布了一个事件列表,人们可以搜索一个事件,就像谷歌一样,它会显示一个结果列表。从结果,您可以点击它购买门票和查看更多的细节。
现在,在结果页面上,我想添加一个小的函数,它可以使门票状态可用,或者如果事件已经售罄。
我已经创建了以下代码,但我希望合并结果,因为例如:事件1可能有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. ');
}
}
?>这里是我的数据库表转储--我希望这会有所帮助:
--
-- Table structure for table `tkmrf_rseventspro_tickets`
--
CREATE TABLE IF NOT EXISTS `tkmrf_rseventspro_tickets` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`ide` int(11) NOT NULL,
`name` varchar(255) NOT NULL,
`price` float NOT NULL,
`seats` int(10) NOT NULL,
`user_seats` int(10) NOT NULL,
`description` text NOT NULL,
`position` text NOT NULL,
`groups` text NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=27 ;
--
-- Dumping data for table `tkmrf_rseventspro_tickets`
--
INSERT INTO `tkmrf_rseventspro_tickets` (`id`, `ide`, `name`, `price`, `seats`, `user_seats`, `description`, `position`, `groups`) VALUES
(19, 65, 'Standard', 5, 190, 0, 'Standard ticket for entry to the club.', '', ''),
(20, 65, 'VIP Tables', 50, 10, 0, 'Get the VIP treatment! \r\nYour very own table and a bottle of Champagne to get you started.', '', ''),
(23, 68, 'Standard', 5, 0, 0, 'standard entry. prices are higher on the door.', '', ''),
(22, 67, 'Fast-Track', 5, 0, 0, 'Queue jump with the fast track tickets!', '', ''),
(24, 68, 'Queue Jump', 8, 0, 0, 'don''t wait around in the cold, pay a few quid more and jump the queue!', '', ''),
(25, 77, 'vip', 60, 500, 10, 'ticket description', '', '{"0":"1"}'),
(26, 77, 'cheap tickets', 5, 0, 0, 'ticket description', '', '{"0":"1"}');
enter code here发布于 2014-04-26 19:57:32
您可以在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. ');
}
} 除非您有大量的事件,否则它对性能有很大的影响,像这样循环数组是快速的。
https://stackoverflow.com/questions/23295996
复制相似问题