2016-05-17 2 views
0

Ich bin auf der Suche nach im Kalender die nicht verfügbaren Daten von Hotelzimmern, die schon ausgebucht sind, aber ich kann nur ein Datum zeigen, aber ich will inwollen Datum zu Ende in While-Schleife in einem Array für ein Zimmer ID

Array ( 
[0] => 15-5-2016 
[1] => 16-5-2016 
[2] => 17-5-2016 
[3] => 18-5-2016 
[4] => 19-5-2016 
[5] => 20-5-2016 
) 

Array ( 
[0] => 29-5-2016 
[1] => 30-5-2016 
[2] => 31-5-2016 
) 

wie diese alle Daten auf diesem Monat gefallen hat, ein 20 bis 25, zweite 29-31 ...

echo $query = "SELECT * FROM booking_request where room_id = 1' '<br>' "; 
$result = $db->query($query); 
     if($result -> num_rows > 0) { 
      while($row = $result-> fetch_assoc()) 
      { 
      echo $name = $row['getaway_name']." <br>"; 
      echo $start = $row['check_in_date']." <br>"; 
      echo $end = $row['check_out_date']." <br>"; 
      $cp = array(); 
      $arr1 = range(strtotime($row['check_in_date']),strtotime($row['check_out_date']), "86400"); 

      array_walk_recursive($arr1, function(&$element) { $element = date("d-n-Y", $element); }); 
      print_r ($arr1); 
      } 

i die Daten alle von while-Schleife bin immer gebucht zu zeigen, Ich möchte dies in einem einzigen Array ..

+0

versuchen Sie es mit array_merge ($ a1, $ a2); – Poria

+0

wenn ich versuche mit array_merge, dass ich nicht vollständige Daten zwischen 20-24 o/p- 20,21,22,23,24 .. –

Antwort

0

Arrays haben immer Schlüssel, ob Sie sie wollen oder nicht. Selbst eine einfache array('15-5-2016', '16-5-2016'); wird array([0] => '15-5-2016', [1] => '16-5-2016'); sein. Das heißt, Ihr Array beginnt mit 0 und nicht mit 1.

Wenn Sie nur Werte wollen, dann müssen Sie Schleife (Foreach, ich empfehle), wo Sie dieses Array verwenden möchten. Sie erhalten also Werte aus dem Array.

+0

in meinem Projekt bekomme ich habe ein Zimmer ID, die Buchung von 2 haben -5, und 7-9, 10-12, ich möchte alle Daten zwischen ihnen holen, und möchte im Kalender anzeigen, dass diese Daten schon ausgebucht sind, indem ich oben Code tue, kann ich nur letzten Eintrag im Kalender zeigen das sind gebuchte, –

+0

Weil '$ arr1' jedes Mal in while-Schleife überschreiben. Drucken Sie '$ arr1' außerhalb der Schleife, Sie erhalten nur den letzten Eintrag. – Poonam

+0

Ich möchte alle Daten dieser Zimmer-ID im Monat gebucht haben. –

0

Erste Merage Array alle ähnliche

$arr1[] = range(strtotime($row['check_in_date']),strtotime($row['check_out_date']), "86400"); 

nach foreach Schleife des Arrays.

+0

Ich habe Ihre Lösung ausprobiert, aber ich bin unale, um alle Daten für die Zimmer-ID zu finden. –

0

Ich habe meine vorherige Antwort bearbeitet und die Informationen von Ihren Arrays verwendet.

Dies ist das Beispiel für Ihr Array: New example!

<?php 
$date = date("Y-m-d"); 
$time=strtotime($date); 
$month=date("m",$time); 
$year=date("Y",$time); 
$end = $year. "-" . $month . "-" . date('t', strtotime($date)); 
$datebooked=array ('2016-05-15', '2016-05-16', '2016-05-17', '2016-05-18', '2016-05-19', '2016-05-20'); 
$datebooked1=array('2016-05-29', '2016-05-30', '2016-05-31'); 
$datesbooked=array_merge($datebooked, $datebooked1); 

?> 
<table> 
<tr> 
<?php while(strtotime($date) <= strtotime($end)) { 
    $day_num = date('d', strtotime($date)); 
    $day_name = date('l', strtotime($date)); 
    $date = date("Y-m-d", strtotime("+1 day", strtotime($date))); 
    if(in_array("".$year."-".$month."-".$day_num, $datesbooked)){ 
     echo "<td style='color:red;'>$day_num <br/> $day_name</td>"; 
    }else{ 
     echo "<td style='color:blue;'>$day_num <br/> $day_name</td>"; 
    } 
} 
?> 
</tr> 
</table> 

Sie müssen Variablen der Bereichsarrays ändern. Verwendung so etwas wie dieses:

$count=0; 
while($count!==$result->num_rows()){ 
$count++; 
${arr.$count}=range(strtotime($row['check_in_date']),strtotime($row['check_out_date']), "86400");; 
} 

Sie können dann jedes Array lesen wie: $ arr1, $ arr2, $ arr3

Dann, als die Leitung 9 in meinem Code:

$datesbooked=array_merge($arr1, $arr2, $arr3); 
+0

in meinem Code, ich versuche, das Start-und Enddatum für eine Zimmer-ID aus der Datenbank zu holen, dann gibt es immer die Werte im Array, innerhalb der gleichen Variablen .. –

+0

Versuchen Sie mit meinem Code und ändern Array-Variablen mit $ Syntax {'varname'}: –

+0

$ count = 0; while ($ count! == $ result-> num_rows()) { \t $ count ++; \t $ {arr. $ Count} = Bereich (strtotime ($ row ['check_in_date']), strtotime ($ row ['check_out_date']), "86400") ;; } Verwenden Sie so etwas, um die Variablen zu ändern. Ich werde dies zu meiner Antwort hinzufügen, um es klarer zu machen. –

Verwandte Themen