Получать данные из базы с помощью php

Здесь у меня есть цикл dataRange, но для этого случая это не важно, более важно, чем dateRange это $i:

Так что я:

$dateString = '09.03.2014';
$startDate = new DateTime($dateString);

$period = new DateInterval('P1M');
$endDate = clone $startDate;
$endDate->add($period);

$interval = new DateInterval('P1D');
$daterange = new DatePeriod($startDate, $interval ,$endDate);
$i=1;
foreach($daterange as $date){
 $temp = array();
 // the following line will be used to slice the Pie chart
 $temp['ID'] = $i;
 $temp['datum'] = $date->format("d/m") . PHP_EOL;

 $rs1 = $db->prepare('SELECT naziv FROM aktivnosti WHERE user_id=:idd');
 $rs1->bindParam(':idd', $i); 

 $rs1->execute();
 $naz = $rs1->fetchColumn();
 if ($naz != false) {
 $temp['vrsta'] = $naz;
 } else {
 $temp['vrsta'] = '';
 }


 $output['data'][] = $temp;
 $i++;
 }
 $jsonTable = json_encode($output);

Как вы можете видеть, у меня есть цикл и с помощью temp ['vrsta'] я хочу получить данные из таблицы активности.

У меня также есть слой интерфейса JS на интерфейсе, который создает html из данных:

$('#example').dataTable( {
 "ajax": "table1.php",
 "columns": [
 { "data": "ID" },
 { "data": "datum" },
 { "data": "naziv" },
 { "data": "vrsta" },

 ],
 "lengthMenu": [ 31 ],
 "columnDefs": [ {
 "targets": 3,
 "data": "download_link",
 "render": function ( data, type, full, meta ) {
 if (data != '') {
 return '<button>'+data+'</button>';
 }else {
 return data;
 }
 }
 } , etc...

Теперь мой код извлекает только данные первой строки, поэтому проблема заключается в том, что у меня много строк на табличной атрибутивности с тем же user_id, поэтому, когда у меня есть много одинаковых user_id по активности, мне также нужно создать "+ данные +"; для каждой строки из таблицы активности, но у меня нет идеи, как это сделать?

Некоторые идеи? Как я могу это сделать?

2 ответа

Это будет что-то вроде этого...

$startDate = date('Y-m-d',strtotime("2013-01-01")); //put first date here
 $endDate = date('Y-m-d',,strtotime("2013-12-31")); //put second date here

 $rs1 = $db->prepare('SELECT * FROM aktivnosti WHERE DATE(start_date)>=DATE('.$startDate.') AND DATE(end_date)<=('.$endDate.') GROUP BY user_id');
 $rs1->execute();
 $naz = $rs1->fetchAll();

 $jsonTable = json_encode($naz);

Обратите внимание на столбцы даты, которые я назвал start_date и end_date. Я понятия не имею, как вы называете ваши столбцы.


Подумайте, используя что-то вроде этого:

"columnDefs": [{
 "targets": 3,
 "createdCell": function(td,data,row,rIndex,cIndex) {
 // actions for every cell generated on the column you specified.
 }
}]

Больше информации:

https://datatables.net/reference/option/columns.createdCell

licensed under cc by-sa 3.0 with attribution.