2014-11-03 3 views
0

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

Так у меня есть:

$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 UI на веб-интерфейсе, который сделать 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 class="btn btn-success">'+data+'</button>'; 
     }else { 
      return data; 
     } 
    } 
    } , etc... 

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

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

+0

Вы должны спрятать эти идентификаторы в строку, а затем запросить базу данных один раз. Но я дам вам ответ, основываясь на том, как вы это сделали. Дайте мне минуту – KyleK

+0

Основываясь на том, что вы сказали в моем удаленном ответе, вам не нужно было бы указывать данные data.data. Потому что вы называете свой массив в PHP как данные. Это означает, что вы придаете ему дополнительный слой, который ему не нужен. Данные в коде DataTable относятся к массиву ответов. – KyleK

+0

, пожалуйста, напишите ответ –

ответ

1

Он будет идти что-то вроде этого ...

 $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); 

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

+0

нет нет, я отправлю новый вопрос с лучшим объяснением –

1

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

"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

+0

да, но как насчет php-кода, только для php-кода? первая строка на таблице aktivnsti ... –

+0

Мне нужно было бы увидеть образец данных, которые у вас есть на этой таблице. – vcanales

+0

всего в секунду ... –

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