2013-05-30 3 views
0

Я пытаюсь вывести статистику вызовов, совершаемых агентами во всех кампаниях набора, которые вызывают в течение дня. существует несколько кампаний, в настоящее время 3, набранных за один день. Я получаю данные кампании из имени таблицы, которое изменяется по такой кампании: custom_16546546 и custom_1564654. Я запускаю запрос для получения числовой части имени столбца, а затем передаю его как переменную в другой запрос, который выводит статистику пользователей. Здесь отображаются только данные из того, что я могу сказать, это последняя информация о запросах запросов. Я отобразил данные массива из первого запроса, чтобы подтвердить, что имена таблиц хранятся, и это выглядит нормально.Mysql выводит только данные последних циклов

$today = "2013-05-29"; 
$customquery = "SELECT distinct(entry_list_id) FROM vicidial_list where entry_list_id > 0 and last_local_call_time between '$today 00:00:00' and '$today 23:59:59';" ; 
$customresult = mysql_query($customquery) or die(mysql_error()); 
$customrows = mysql_num_rows($customresult); 
     while ($customrowResult = mysql_fetch_array($customresult)) 
       { 
       $customID[] = $customrowResult["entry_list_id"]; 
       } 
$z = 0; 

if(!$customID){ 
//echo " Please Select a valid date range: ".$today. " - ".$today." is not valid" ; 
}else{ 

while($z<$customrows) 
{ 

$query = "SELECT 
      vicidial_users.user, 
      vicidial_users.full_name, 
      vicidial_log.list_id, 
      COUNT(CASE WHEN (vicidial_log.status = 'SALE') THEN 1 ELSE null END) as sumcountSamnt, 
      COUNT(CASE WHEN (vicidial_log.status = 'SALE' AND custom_$customID[$z].up_amt <> '') THEN 1 ELSE null END) as sumcountupAmnt, 
      COUNT(CASE WHEN (vicidial_log.status = 'SALE' AND custom_$customID[$z].cc_num <> '') THEN 1 ELSE null END) as sumccverifiedcountAmnt, 
      COUNT(CASE WHEN (vicidial_log.status = 'SALE' AND custom_$customID[$z].bank_act <> '') THEN 1 ELSE null END) as sumbankverifiedcountAmnt, 
      SUM(CASE WHEN (vicidial_log.status = 'SALE' AND custom_$customID[$z].cc_num <> '') THEN custom_$customID[$z].s_amount ELSE null END) as sumccverifiedAmnt, 
      SUM(CASE WHEN (vicidial_log.status = 'SALE' AND custom_$customID[$z].bank_act <> '') THEN custom_$customID[$z].s_amount ELSE null END) as sumbankverifiedAmnt, 
      SUM(CASE WHEN (vicidial_log.status = 'SALE') THEN custom_$customID[$z].d_amt ELSE null END) as sumDamnt, 
      SUM(CASE WHEN (vicidial_log.status = 'SALE') THEN custom_$customID[$z].up_amt ELSE null END) as sumUpamnt, 
      SUM(CASE WHEN (vicidial_log.status = 'SALE') THEN custom_$customID[$z].md_amt ELSE null END) as sumMdamnt, 
      SUM(CASE WHEN (vicidial_log.status = 'SALE') THEN custom_$customID[$z].s_amount ELSE null END) as sumSamnt 

     FROM 
      vicidial_log 
     INNER JOIN 
      vicidial_users 
     ON 
      (vicidial_log.user = vicidial_users.user) 
     INNER JOIN 
      custom_$customID[$z] 
     ON 
      (vicidial_log.lead_id = custom_$customID[$z].lead_id) 
     WHERE 
      call_date 
     BETWEEN 
      '$today 00:00:00' 
     AND 
      '$today 23:59:59' 
     AND 
      vicidial_log.user != 'VDAD' 
     AND 
      vicidial_users.user_group != 'TX-Training' 
     GROUP BY 
      vicidial_log.user, vicidial_log.campaign_id 
     "; 

//This query is used to sum loop data data 
$queryResult = mysql_query($query) or die(mysql_error()); //This line perfomrs query error handling 

$z++; 
} 

вот фрагмент того, как данные отображаются

$result = mysql_query($query) or die(mysql_error()); 
    while ($row = mysql_fetch_assoc($result)) 
{ 
    echo "<tr>\n"; 
    //--fullname and userID 
    echo "<td> ".$row["full_name"]. " - ".$row["user"]."</td>\n"; 

    //Agent total sales amount 

      if ($row["sumcountSamnt"] == '0') { 
    echo "<td>$nosalestxt</td>\n"; 
    } else { 
    echo "<td> $".$row["sumSamnt"]."</td>\n"; 
    } 
    } 

Так я хочу, чтобы иметь возможность отображать совокупность данных для каждого пользователя из всех кампаний они набираемых из.

Заранее спасибо за вашу помощь

EDIT: я использую & строки из цикла в то время как для вывода данных и да Chris я хотел бы сохранить его в массив, но я думаю, что им просто не хватает его, еще раз спасибо

+3

Что вы ожидаете? Вы запускаете этот огромный запрос, извлекаете результаты, а затем сразу повторяете цикл. Вы не обрабатываете данные, вы не выводите их. Итак, в конце концов, вы остались с результатами цикла ** LAST ** итерации цикла ... –

+0

В дополнение к тому, что сказал @MarcB, пожалуйста, не используйте функции 'mysql_ *'. Они больше не поддерживаются и [** устарели от PHP 5.5.0 **] (https://wiki.php.net/rfc/mysql_deprecation). Прочтите [this] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php) для более подробного объяснения. Вместо этого используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/mysqli) и узнайте о [_prepared statements_] (http://en.wikipedia.org/ вики/Prepared_statement). [Эта статья] (http://php.net/manual/en/mysqlinfo.api.choosing.php) поможет вам решить, какой API использовать. – PLPeeters

ответ

0

На основе фрагментов кода, которые вы указали, похоже, что вы перезаписываете значение $ queryResult после каждого выполнения цикла. Возможно, вы хотели выполнить запрос и поместить результаты в массив (или что-то подобное) для циклического перехода и отображения позже.

Также я замечаю, что вы ссылаетесь на $ row [] в своем выходе, как вы назначаете значение этой переменной?

Смежные вопросы