问题描述
我有一张产品表和一张订单表,我想结合这些数据来绘制条形图。如果我运行订单 foreach 循环产品将不会显示,如果我运行产品则订单将不会显示。如何结合这些?
$query_product = "SELECT *,count(products.id) as no_products FROM products group by MONTH(products.added_on),YEAR(products.added_on)";
$query_order = "SELECT *,count(orders.id) as no_orders FROM orders group by MONTH(orders.added_on),YEAR(orders.added_on) order by YEAR(orders.added_on) asc,MONTH(orders.added_on) asc";
$result_order = MysqLi_query($con,$query_order);
$result_product = MysqLi_query($con,$query_product);
$chart_data = '';
$product_data = array();
while ($row = MysqLi_fetch_assoc($result_product)) {
$product_data[] = $row;
}
$order_data = array();
while ($row = MysqLi_fetch_assoc($result_order)) {
$order_data[] = $row;
}
foreach ($order_data as $key => $val) {
$date = $val['added_on'];
$month_year = date('F,Y',strtotime($date));
$chart_data .= "{ year:'" . $month_year . "',income:" . '5' . ",products:" . '' . ",orders:" . $val['no_orders'] . "},";
}
//I want to gain my data like this below string.
//$chart_data .= "{ year:'".$month_year."',income:".'5'.",products:".$val['no_products'].",orders:".$val['no_orders']."},";
}
解决方法
也许是这样的 - 使用关联数组来存储您的数据,因为您按月/年对其进行分组
public class ApplicationLookupProtectorKeyRing : ILookupProtectorKeyRing
{
public IDictionary<string,IKey> Keys { get; set; }
private readonly IKeyManager _keyManager;
private readonly object _keyDictionaryLock;
public ApplicationLookupProtectorKeyRing(IKeyManager keyManager)
{
Keys = new Dictionary<string,IKey>();
_keyManager = keyManager;
_keyDictionaryLock = new object();
}
public string this[string keyId]
{
get
{
ReloadKeys();
lock (_keyDictionaryLock)
{
return Keys[keyId].KeyId.ToString();
}
}
}
public string CurrentKeyId
{
get
{
ReloadKeys();
lock (_keyDictionaryLock)
{
return GetAllKeyIds()
.Where(w => Keys[w].ActivationDate <= DateTimeOffset.UtcNow)
.OrderByDescending(o => Keys[o].ActivationDate)
.FirstOrDefault();
}
}
}
public IEnumerable<string> GetAllKeyIds()
{
ReloadKeys();
lock (_keyDictionaryLock)
{
return Keys.Keys;
}
}
private void ReloadKeys()
{
lock (_keyDictionaryLock)
{
if (!_keyManager.GetCacheExpirationToken().IsCancellationRequested && Keys.Count != 0) { return; }
var keys = _keyManager.GetAllKeys()
.Where(w => !w.IsRevoked)
.ToList();
if (!keys.Any())
{
keys.Add(_keyManager.CreateNewKey(DateTimeOffset.UtcNow,DateTimeOffset.UtcNow.AddDays(7)));
}
Keys.Clear();
keys.ForEach(key => Keys.Add(key.KeyId.ToString(),key));
}
}
}
现在您可以引用数组:
while ($row = mysqli_fetch_assoc($result_product)) {
$product_data[date("m-Y",strtotime($row['added_on']))] = $row;
}
while ($row = mysqli_fetch_assoc($result_order)) {
$order_data[date("m-Y",strtotime($row['added_on']))] = $row;
}