Zapisywanie i wyświetlanie kolejno dat


(Kloc221) #1

Witam chciał bym zrobić coś takiego, że mam plik txt a w nim w osobnych linijkach różne daty, które nie są poukładane.

I w pewnym miejscu na stronie wyświetla mi się kolejno 5 dat najbliższych do dzisiejszej.

Jak takie coś zrobić ??


(Grzelix) #2

nie na pisałeś w jakim języku chciałbyś to zrobić

załóżmy żę w php

1 wczytujesz plik

2 tworzysz tablice z datami

3 zamieniasz daty do formatu unix timestamp

4 sortujesz

5 sprawdzasz dzisiejsza

6 wybierasz interesujce cię daty.

a tu wszystko co potrzebujesz dla operacji na datach: http://www.php.net/manual/en/function.date.php


(Kloc221) #3

Może ktoś by się znalazł mi jakiś tutek jak takie coś zrobić. Lub sam pomógł... Bo siedzę już kilka godzin szukam i nic...


(Jacek705) #4

zakładając, że plik daty.txt wygląda tak:

2010-07-10

2010-06-05

2010-07-15

2010-06-07

2010-08-30

2010-06-11

2010-06-28

2010-07-01

2010-06-13

2010-06-25

2010-06-12

2010-06-18

aby wybrać 5 dat wcześniejszych od dziś:

<?php

$table=file('daty.txt');

rsort($table);

$dzis=date('Y-m-d');

$i=0;

foreach ($table as $linia){

	if ($dzis >= trim($linia)){

		echo $linia.'
';

		$i++;

	}

	if ($i==5){

		break;

	}

}

?>

-- Dodane 08.07.2010 (Cz) 13:51 -- 2 daty z przyszłości (jeśli istnieją)+ 3 z przeszłości:

<?php

$table=file('daty.txt');

rsort($table);

$dzis=date('Y-m-d');

while ($linia=current($table)){

	if ($dzis >= trim($linia)){

		$klucz=key($table);

		break;

	}

	next($table);

}

if ($klucz<2) $klucz=2;

for ($i=$klucz-2; $i<=$klucz+2; $i++){

	echo $table[$i].'
';

}

?>

(Kloc221) #5

a może być coś takiego, żeby podczas wyświetlania 5 najbliższych dat z boku pisały np: imiona : ??

Po prostu w pliku txt będę zapisywał obok dat jakieś wyrazy np :

2010-07-10 - Adam

2010-06-05 - Karol

2010-07-15 - Andrzej

2010-06-07 - Bolek

2010-08-30 - Marek

Czy to także zadziała ?????


(Jacek705) #6

Ja bym proponował rozdzielić datę w pliku od imienia nie myślnikiem a np. średnikiem i zmodyfikować trochę kod:

while ($linia=current($table)){

   $komorka=explode(';',$linia);

   if ($dzis >= trim($komorka[0])){