Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ PHP _ [PHP+jQuery] zakres dni w kalendarzu

Napisany przez: dopelganger 3.01.2014, 11:13:19

cześć mam problem, korzystam z komponentu jquery datepicker i chciałbym w kalendarzu zaznaczyć zakres dni.
Z bazy pobieram początkową date i końcową (zapisaną w formacie yyymmdd)

np:
20140101 - początkowa
20140103 - końcowa

jak zaznaczyć środkową date w kalendarzu: 20140102 itd, rozpiętości mogą być większe

prosze o pomoc.

  1. $sql = $db->query("SELECT * FROM kalendarz");
  2. $num = $sql->num_rows;
  3.  
  4. ?>
  5.  
  6. <script>
  7. var dateArray = new Array();
  8.  
  9. <?php
  10.  
  11. for ($i=1;$i<=$num;$i++)
  12. {
  13. $row = $sql->fetch_assoc();
  14.  
  15. $do = $row["data_koncowa"]; // yyyymmdd
  16. $od = $row["data_poczatkowa"]; // yyyymmdd
  17.  
  18. // $date1 i $date2 , $link1 i $link2 - pominąłem tutaj aby nie mieszać, date1 i date2 są po prostu przeformatowane do postaci: mm/dd/yyyy (aby pokazać je w kalendarzu)
  19.  
  20. http://www.php.net/echo "dateArray.push({date: new Date('".$data1."'), link: '".$link1."', title: ''});"; // data początkowa
  21. http://www.php.net/echo "dateArray.push({date: new Date('".$data2."'), link: '".$link2."', title: ''});"; // data końcowa
  22.  
  23. }
  24.  
  25. ?>

Napisany przez: rocktech.pl 3.01.2014, 11:41:24

Witam.

Wpleć ten kod odpowiednio ...

  1.  
  2. $begin = new DateTime('2013-08-31'); //$row["data_poczatkowa"]
  3. $end = new DateTime('2013-09-30'); //$row["data_koncowa"]
  4.  
  5. $interval = new DateInterval('P1D');
  6. $daterange = new DatePeriod($begin, $interval, $end);
  7.  
  8.  
  9. foreach ( $daterange as $date ) {
  10. http://www.php.net/echo "dateArray.push({date: new Date('". $date->format("Y/m/d")."'), link: '".$link1."', title: ''});";
  11. }
  12.  

Napisany przez: dopelganger 3.01.2014, 12:08:59

fajnie działa, tylko że jak podstawie zmienne to nie działa , może coś źle robie?

  1. $od_rok = http://www.php.net/substr($row["data_rozpoczecia"],0,4);
  2. $od_miesiac = http://www.php.net/substr($row["data_rozpoczecia"],4,2);
  3. $od_dzien = http://www.php.net/substr($row["data_rozpoczecia"],6,2);
  4.  
  5. $dat1 = $od_rok.'-'.$od_miesiac.'-'.$od_dzien;
  6. $begin = new DateTime($dat1);
  7.  
  8. // analogicznie $dat2...

Napisany przez: rocktech.pl 3.01.2014, 12:13:42

http://www.php.net/manual/en/datetime.formats.date.php bezpośrednio string w formacie YYYYMMDD.

  1. $begin = new DateTime($row["data_rozpoczecia"]);

Napisany przez: dopelganger 3.01.2014, 12:17:12

Cytat(rocktech.pl @ 3.01.2014, 12:13:42 ) *
http://www.php.net/manual/en/datetime.formats.date.php bezpośrednio string w formacie YYYYMMDD.

  1. $begin = new DateTime($row["data_rozpoczecia"]);


dziwne, zaznacza wszystkie daty , dni w kalendarzu ...
(działa dobrze jak podam przykładowe daty jak mi podałeś, a jak przekazuje zmienne to już nie działa )

Napisany przez: rocktech.pl 3.01.2014, 12:25:11

  1. http://www.php.net/var_dump($row["data_rozpoczecia"]);

Napisany przez: dopelganger 3.01.2014, 12:31:03

Cytat(rocktech.pl @ 3.01.2014, 12:25:11 ) *
  1. http://www.php.net/var_dump($row["data_rozpoczecia"]);



ahh to mój błąd ;////

dziękuje Ci bardzo za pomoc, działa bardzo dobrze

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)