2015-02-08 3 views
1

моей БД следующим образом,удаления пустых значений в PHP массивах

date  income expenses maincat 
2015-02-06 10000   salary 
2015-02-05   500  bank charges 
2015-02-05   300  rent 
2015-02-01 500    bonus 

и я использую следующий SQL запрос, чтобы получить значения DB.

$sql= mysqli_query($con,"SELECT maincat as label,income as value FROM transaction where date BETWEEN '$date1' AND '$date2' AND email='$user' GROUP BY maincat") or die ("error3"); 

и идет, хотя следующий запрос PHP,

$arr = array(); 
While($row1 = mysqli_fetch_assoc($sql)){ 
    $arr[] = $row1; 
} 
$ar = array_values($arr); 

и выдает ставить так,

[{"label":"income","value":"10000"},{"label":"bank charges","value":""},{"label":"rent","value":""},{"label":"bonus","value":"500"}]  

и я передаю, что значения в Java Script (Morris. js), чтобы показать его в диаграмме пончика. но это не сработает. когда значения, как,

[{"label":"income","value":"10000"},{"label":"bonus","value":"500"}] 

работает fine.I косяк пут «» значения как «0», потому что нет никакого фактического дохода как «банковские сборы» или «аренда» (они являются расходами), есть ли способ чтобы удалить эти пустые значения ({ «метка»: «банковские сборы», «значение»: «»}) сверху и выйти кладется как,

[{"label":"income","value":"10000"},{"label":"bonus","value":"500"}] 

и мой morris.js код следующим образом,

<script> 
         Morris.Donut({ 
          element: 'donut', 
          resize : true, 
          data : <?php echo json_encode($ar); ?>, 
          backgroundColor: '#0011', 
          labelColor: 'black', 
          colors:[ 
            '#A4A4A4','#FE2E64','#0B610B','#0B615E', 
            '#FF8000','#088A68','#4B8A08','#A9D0F5', 
            '#5F4C0B','#F3F781','#81BEF7','#04B431', 
            '#D7DF01','#BE85F7','#BE59F7','#BE81F7', 
            '#F4FA58','#0431B4','#D8D8D8','#4C0B5F', 
            '#086A87','#F7D358','#DF7401','#B18904', 
            '#045FB4',        
          ], 
         }); 
        </script> 

спасибо ..

+0

Вы можете просто не запрашивать их у db в первую очередь. Просто добавьте 'И доход! = ''' К вашему запросу – user1950929

ответ

0

Почему бы просто не использовать петлю для фильтрации пустых предметов?

$legalArray = array(); 
foreach($ar as $item){ 
    if(is_numeric($item['value'])) 
     $legalArray[] = $item; 
} 

Вывести $ legalArray.

0

Вы должны проверить вас SQL код

SELECT maincat as label,income as value FROM transaction where date BETWEEN '$date1' AND '$date2' AND email='$user' AND label != '' AND value != '' GROUP BY maincat" 

Может иметь мой запрос неправильно думать, что есть лучший способ положить, что

также вы можете использовать PHP, чтобы сделать чек

While($row1 = mysqli_fetch_assoc($sql)){ 
if (!empty($row1['label']) && !empty($row1['value'])) 
    $arr[] = $row1; 
} 
+0

Твой код работает нормально .. Спасибо. :) – NuwanD

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

  • Нет связанных вопросов^_^