2014-09-23 1 views
0

Проблема в том, что я хочу получить результаты, полученные из mysql, в один массив: {"date": "2014-09-28", "2014-09- 29" , "2014-09-30"} Inspite этого результата { "дата": "2014-09-28"} { "финики": "2014-09-29"} { "финики": "2014 -09-30" } , что он будет использовать, чтобы отключить эти даты на моем DatePicker в другой странице это мой исходный кодполучить несколько результатов от mysql в одном массиве

<?php 
@session_start; 
include '../includes/db_login.php'; 
$flat_id= $_GET['flat_id']; 

$result = mysql_query("SELECT startDate,endDate FROM reservation WHERE flat_id='$flat_id'"); 
$i=0; 
while($row = mysql_fetch_array($result)) 
    { 


$s_dte=$row['startDate']; 
$s_dte2=strtotime($s_dte); 
$s=date("Y-m-d",$s_dte2); 
$e_dte=$row['endDate']; 
$diff = abs(strtotime($e_dte) - strtotime("-1 day",strtotime($s))); 



$yrs = floor($diff/(365*60*60*24)); 
$mnth = floor(($diff - $yrs * 365*60*60*24)/(30*60*60*24)); 
$days = floor(($diff - $yrs * 365*60*60*24 - $mnth*30*60*60*24)/ (60*60*24)); 
$t=1; 


while($t <= $days){ 

//echo $s."\n"; 
$confirmedSends = array ("dates" => $s); 
$date = strtotime("+1 day", strtotime($s)); 
$s=date("Y-m-d", $date); 
$t++; 
$jsonConfirmedSends = json_encode($confirmedSends); 
    echo $jsonConfirmedSends; 
} 

} 

?> 

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

jQuery(document).ready(function() { 

        $("#datepick").datepicker({ 
         defaultDate: "d", 
         dateFormat: 'yy-mm-dd', 
         changeMonth: true, 
         numberOfMonths: 1, 
         beforeShowDay: checkAvailabilityStart, 
         onClose: function (selectedDate) { 
          $("#datepick2").datepicker("option", "minDate", selectedDate); 
         } 
        }); 



        var dates = []; 
        var flat_id = $("#flat_id").val(); 



        $.getJSON("ajax.php?flat_id=" + flat_id, function (data) { 
         $.each(data, function(index, value) { 
            dates.push(value.data); // i don't know what's (value.data) refer to ! 
        }); 
    }); 


        function checkAvailabilityStart(mydate) { 
         var $return = true; 
         var $returnclass = "available"; 
         $checkdate = $.datepicker.formatDate('yy-mm-dd', mydate); 
         for (var i = 0; i < dates.length; i++) 
         { 
      if (dates[i] == $checkdate)    

          { 
           $return = false; 
           $returnclass = "unavailable"; 
          } 
         } 
         return [$return, $returnclass]; 
        } 



       }); 


      </script> 
+1

Пожалуйста, [не использовать '' mysql_ * функции в новом коде] (http://stackoverflow.com/ вопросы/12859942/почему-не должны-и-потребительная MySQL-функция-в-PHP). * Они больше не поддерживаются и [официально устарели] (https://wiki.php.net/rfc/mysql_deprecation) *. См. [Красная рамка] (http://uk.php.net/manual/en/function.mysql-connect.php)? Узнайте о [подготовленных заявлениях] (http://en.wikipedia.org/wiki/Prepared_statement) и используйте [PDO] (http://us1.php.net/pdo) или [MySQLi] (http: // us1.php.net/mysqli). [Эта статья] (http://php.net/manual/en/mysqlinfo.api.choosing.php) поможет вам решить, какой из них. –

+0

im new в php и mysql, я знаю, что я должен использовать mysqli или PDO, но теперь я просто хочу помочь решить эту проблему :) – Tarek

ответ

0

немного короче

$dates = array('dates' =>array()); 
while ($row = mysqli_fetch_assoc($result)) { 
    $date = strtotime($row['startDate']); 
    $enddate = strtotime($row['endDate']); 
    while ($date <= $enddate) { 
     $dates['dates'][] = date('Y-m-d', $date); 
     $date += 86400; 
    } 

} 
echo json_encode($dates); 
+0

кажется не работает слишком .. выход Фатальная ошибка: разрешены памяти размером 67108864 байт исчерпаны :( – Tarek

+0

Editted мой ответ, работает прекрасно знаю – Gervs

0

многомерный массив это то, что вам нужно. Проверьте изменения в коде -

<?php 
    @session_start; 
    include '../includes/db_login.php'; 
    $flat_id= $_GET['flat_id']; 

    $result = mysql_query("SELECT startDate,endDate FROM reservation WHERE flat_id='$flat_id'"); 
    $i=0; 
    $final = array(); 
    while($row = mysql_fetch_array($result)) 
    { 


     $s_dte=$row['startDate']; 
     $s_dte2=strtotime($s_dte); 
     $s=date("Y-m-d",$s_dte2); 
     $e_dte=$row['endDate']; 
     $diff = abs(strtotime($e_dte) - strtotime("-1 day",strtotime($s))); 



     $yrs = floor($diff/(365*60*60*24)); 
     $mnth = floor(($diff - $yrs * 365*60*60*24)/(30*60*60*24)); 
     $days = floor(($diff - $yrs * 365*60*60*24 - $mnth*30*60*60*24)/ (60*60*24)); 
     $t=1; 


     while($t <= $days){ 

//echo $s."\n"; 
      $confirmedSends = array ("dates" => $s); 
      $date = strtotime("+1 day", strtotime($s)); 
      $s=date("Y-m-d", $date); 
      $t++; 
      $final[] = $confirmedSends; 
      //$jsonConfirmedSends = json_encode($confirmedSends); 
      //echo $jsonConfirmedSends; 
     } 
    } 
    echo json_encode($final); 
    ?> 
+0

Thnx для справки ... но его то же самое .. вывод [ "дата": "2014-09-28"}, { "финики": "2014-09-29"}, { "финики": "2014-09-30"}, { "финики": "2014-09 -21 "}, {" date ":" 2014-09-22 "}, {" date ":" 2014-09-23 "}, {" date ":" 2014-09-24 "}] – Tarek

0
instead of below code, 

while($t <= $days){ 

//echo $s."\n"; 
$confirmedSends = array ("dates" => $s); 
$date = strtotime("+1 day", strtotime($s)); 
$s=date("Y-m-d", $date); 
$t++; 
$jsonConfirmedSends = json_encode($confirmedSends); 
    echo $jsonConfirmedSends; 
} 

Try below code : 

while($t <= $days){ 

//echo $s."\n"; 
$confirmedSends["dates"][] = $s; 
$date = strtotime("+1 day", strtotime($s)); 
$s=date("Y-m-d", $date); 
$t++; 
} 

$jsonConfirmedSends = json_encode($confirmedSends); 
echo $jsonConfirmedSends; 
+0

Thnx Сонал .. он работает в настоящее время, и выход, как: { «даты»: [ "2014- , «2014-09-19», «2014-09-20», «2014-09-21», «2014-09-22»]} Теперь я попытался отключить эти даты в datepicker, но im также сталкивается с проблемой. Только 1 день отключен :(плохо поставил мой код для jquery, который я использовал, и надеюсь, что вы можете мне помочь – Tarek

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