Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] wyswietlanie w pętli daty od do
Forum PHP.pl > Forum > Przedszkole
wcg
Witam. Poszukuje rozwiązania takiego proglemu. Chce utworzyć tabelkę w ktorej za pomocą pętli wyświetlę wiersze tabeli pomiędzy jakimiś dwoma datami.
2006-07-01
2006-07-02
2006-07-03
itd...

Zrobiłem coś takiego:
<?
print "<TABLE class=tab border=0 cellpadding=0 cellspacing=0 width=600 align=left>";
print "<tr><th width=70>data</th></tr>";
$poczatek = date("Y-m-d");
$poczatek = "2006-07-01";
$koniec = date("Y-m-d");
$koniec = "2006-08-31";
for($i = $poczatek; $i <= $koniec; $i++) {
print "<tr><td>$i</td>";
}
print "</tr></table>";
?>
jednak nie za bardzo coś takiego chce działać, czy ktoś mógłby coś doradzić?
piotrekkr
  1. <?php
  2. for($i=1;$i<=$ile_dni;$i++){
  3. If($i>1){
  4. $days="+$i days";
  5. }else{
  6. $days="+$i day";
  7. };
  8. print(date('Y-m-d'), strtotime($days));
  9. };
  10. ?>


to powinno wyswietlic wszytkie daty od bierzacej daty do $ile_dni do przodu

PS uzywaj zancznikow [php][/php] kiedy wpisujesz kod php
wcg
To wszystko bardzo ładnie chodzi. Dzięki wielkie, ale jak zrobić aby podać w parametrze data1 i data2 zeby wtedy wypisywalo caly ciag, a nie od dnia dzisiejszego?
piczu
  1. <?php
  2. function printdates($start_date, $end_date, $format = "%Y-%m-%d") {
  3. for($i = strtotime($startdate); $i < strtotime($end_date); $i+=86400)
  4. echo strftime($format, $i)."n";
  5. }
  6. ?>

pisane z glowy, wiec nie wiem czy gdzies sie nie pomylilem
wcg
Kurcze, probowałem to odpalić ale nie dalem rady tego uruchomić, po podstawieniu parametrów nic sie kompletnie nie dzieje. Może jeszcze jakas podpowiedz?
piczu
wszystko dziala tylko literowke jedna machnalem:
  1. <?php  
  2. function printdates($start_date, $end_date, $format = "%Y-%m-%d") {  
  3. for($i = strtotime($start_date); $i < strtotime($end_date); $i+=86400)
  4. echo strftime($format, $i)."n";
  5. }
  6.  
  7. printdates("2006-07-01", "2006-08-31");
  8. ?>

tylko nie wiem czy chcesz date koncowa wlacznie, jezeli tak to zmien na mniejsze lub rowne.
wcg
Działa faktycznie bardzo ladnie. Probowałem to jednak wstawić w moj program:
  1. <?
  2. print '<TABLE width=600 align=left>';
  3. print '<tr><th width=70>data</th>';
  4. print '<th>1</th>';
  5. print '<th>2</th>';
  6. print '<th>3</th>';
  7. print '<th>4</th>';
  8. print '<th>5</th>';
  9. print '<th>6</th>';
  10. print '<th>7</th></tr>';
  11.  
  12. function printdates($start_date, $end_date, $format = '%Y-%m-%d') {
  13. for($i = strtotime($start_date); $i < strtotime($end_date); $i+=86400)
  14. $ad = strftime($format, $i)."n";
  15.  
  16. print '<tr><td>$ad</td>';
  17. print '<td></td>';
  18. print '<td> </td>';
  19. print '<td> </td>';
  20. print '<td> </td>';
  21. print '<td> </td>';
  22. print '<td> </td>';
  23. print '<td> </td>';
  24. }
  25. printdates('2006-07-01', '2006-08-31');
  26. print '</tr></table>';
  27. ?>


i cosik nie bardzo chce isc. Wyświetla tylko ostatni rekord. Gdzie może być problem nie mam pojecia?
piczu
  1. <?
  2.  
  3. function printdates($start_date, $end_date, $format = '%Y-%m-%d') {
  4. for($i = strtotime($start_date); $i < strtotime($end_date); $i+=86400)
  5. $array[] = strftime($format, $i);
  6. return $array;
  7. }
  8.  
  9. print '<TABLE width=600 align=left>';
  10. print '<tr><th width=70>data</th>';
  11. print '<th>1</th>';
  12. print '<th>2</th>';
  13. print '<th>3</th>';
  14. print '<th>4</th>';
  15. print '<th>5</th>';
  16. print '<th>6</th>';
  17. print '<th>7</th></tr>';
  18.  
  19. $dates = printdates('2006-07-01', '2006-08-31');
  20.  
  21. foreach ($dates as $ad) {
  22. print '<tr><td>$ad</td>';
  23. print '<td></td>';
  24. print '<td> </td>';
  25. print '<td> </td>';
  26. print '<td> </td>';
  27. print '<td> </td>';
  28. print '<td> </td>';
  29. print '<td> </td>';
  30. print '</tr>';
  31. }
  32. print '</table>';
  33. ?>

o to chodzi?
wcg
Dokładnie o to mi chodziło. Dziękuję bardzo!

A jak zrobić żeby np w drugiej kolumnie obok daty wyświetliło dzień tygodnia, np. 2006-07-01 sobota?
nospor
no musisz dopisac ten dzien tygodnia: date('l')
  1. <?php
  2. $array[] = array(strftime($format, $i), date('l',$i));
  3. ?>

A jak to wtloczyc do skryptu - pozostawiam tobie
wcg
Jakoś się udało. Tylko wyswietla oczywiście w angielskim. A nie mógłby po polsku? Ktoś pomoże?
wcg
Poradziłem sobie troche w inny sposób;)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.