Ben bir Joomla sitenin yönetici bir raporlama bileşeni var. Kullanıcı daha sonra sorgu ve çıktısını bir CSV dosyası çalıştırmak için bir işlevi çağıran kullanılabilir rapor türlerinden bir açılır listeden seçebilirsiniz. Çoğunlukla bu işleri. Ancak, bir rapor için, ben mySQL doğrudan sorguyu çalıştırırsanız benden Joomla fonksiyonu sayesinde sonuç farklı sayıda alıyorum. Ben neler olduğunu görmek için bir hatalar.log eklenir ve sorgu kez çalışıyorsa gibi görünür. (Maybe.)
İşte işlevi çağıran kod:
function getFullRedeemActivity($start, $end){
return getReportFullRedeemActivityByDate("v.UpdateDT", strtotime($start),strtotime($end));
}
$ Başlangıç ve bitiş $ geçirilen; Orada sorun yok. Sorun getReportFullRedeemActivityByDate işlevi bulunmaktadır. İşte bunun için kod:
function getReportFullRedeemActivityByDate($start, $end, $limitStart=null, $limitRows=null){
//open db
$db =& JFactory::getDBO();
$where = ($low && $high) ? " and v.UpdateDT between ".$db->quote($low)." and ".$db->quote($high) : "";
$sort = "v.UpdateDT";
$limit = (is_int($limitStart) && is_int($limitRows)) ? " limit ".$db->quote($limitstart).", ".$db->quote($limitRows) : "";
//set query
$query = "select r.RedeemAmt,
v.VoucherNbr, v.BalanceInit, v.UpdateDT, v.BalanceCurrent,
m.SkuAbbr, m.MerchantNm,
a.name, a.email, a.company, a.address1, a.address2, a.city, a.state, a.zip, a.phone
from arrc_RedeemActivity r
left outer join arrc_Voucher v on v.VoucherID = r.VoucherID
left outer join arrc_Merchant m on m.MerchantID = r.MerchantID
left outer join jos_customers_addresses a on a.id = r.AcctID
{$where}
order by {$sort} {$limit}";
$db->setQuery($query);
if (!$db->query()) error_log($db->stderr());
if (!$db->getNumRows()){
JError::raiseWarning( 100, 'No records returned' );
return false;
}
else{
error_log("there are ". $db->getNumRows()." rows");
}
//loop out records into array
foreach ($db->loadAssocList() as $row){
$data[$row['BalanceCurrent']] = $row;
return $data;
}
}
Benim error_log baktığımda, ne görürsünüz:
[Tue Oct 19 09:37:30 2010] [error] [client xxx.xx.xx.xxx] there are 5 rows, referer: http://mysite.com/administrator/index.php?option=com_arrcard§ion=reports
[Tue Oct 19 09:37:30 2010] [error] [client xxx.xx.xx.xxx] there are 2 rows, referer: http://mysite.com/administrator/index.php?option=com_arrcard§ion=reports
Tıpkı bunun gibi; birbiri ardına. Görünüşe göre iki katı bölüm ile çalışıyor bu yüzden yazdırır hat bir döngü içinde olmadığı göz önüne alındığında, ben çözemiyorum.
Herhangi bir fikir?