ugrás a tartalomhoz

Naptár archívum

Vas Dávid · 2007. Feb. 11. (V), 18.34
Üdv!

Nos lenne egy kérdésem: hogy lehet ezt megvalósítani ami itt a weblaboron is van hogy egy naptár amin ha a nappokra kattintok akkor az aznapi bejegyzéseket látom?

a bejegyzések kiirását megtudnám csinálni, de azt a fránya naptárat nem...:(

tehát hogy tudnék egy olyan naptárat csinálni ami kiirja az évet, hónapot, napot (hogy hánbyadika van) és a hét napját (pl.: Hétfő, Kedd stb.)

és hogy csak arra a napra lehessen kattintani ami a múltban volt...

és lehessen lapozni a évet és a hónapot is...

neki álltam én de nem sikerült, mert pl nálam ugye az 1. nap hétfőnél kezdődött míg februárban az első nap az csütörtök pl.

Nos tud valaki nekem ebben segíteni egy részét értem, de sehogy sem sikerül...
 
1

Hol a gond?

janoszen · 2007. Feb. 11. (V), 18.42
Nem értem, hol a probléma. Megnézed a WL forráskódját, föllapozod a PHP doksiban a dátum kezelésre vonatkozó részt és megírod. Az egész nem lehet sokkal több, mint egy két órás munka.
2

probléma

Vas Dávid · 2007. Feb. 11. (V), 19.04
hol tudom megnézni a wl forrását?
az a problémám h honnan tudja a progi h mondjuk február az csütörtökön keződődik 2007-ben és így a hétfő-kedd-szerda alatt üres lesz a hely de ha mondjuk átváltanék 2006-ra akkor nem hiszem h február 1-je az csüt

1-2 órás munka?
ehh hát én szántam rá kb 10-15 percet ugyhogy lehet hogy ezért nem sikerült...
3

gugli mindig a barátod

vbence · 2007. Feb. 11. (V), 19.23
Nos, ráguglizunk: php date rákattintunk az első találatra és elolvassuk a kis táblázat első néhány sorát:

w
Numeric representation of the day of the week
0 (for Sunday) through 6 (for Saturday)

vagy

N
ISO-8601 numeric representation of the day of the week (added in PHP 5.1.0)
1 (for Monday) through 7 (for Sunday)

ezután ki is próbálhatjuk:
<?
    echo (date ("w", mktime (0, 0, 0, 2, 11, 2007)));
?>
és megkapjuk, hogy vasárnap van.
4

Nos

Vas Dávid · 2007. Feb. 12. (H), 19.09
kössz a segítséget, de eddig én is eljutottam, csak ugye ezt meg kell csinálni minden honapnál addig is ok, de ezt hogy tolom el csütörtökig mondjuk?
hogy az 1. az ne hétfőnél kezdődjön?
mert ugye a számokat while-val íratom ki pl.:

$nap = 1;
$max_nap = //itt az a date tag ami kiirja a maximum napot az adott hónapban;

while ($nap =< $max_nap) {

}
5

Ez már ne legyen probléma

vbence · 2007. Feb. 13. (K), 12.36
Azt tudod, hogy a hét x-edik napjára esik elseje. Megoldás: x-1 darab üres cellát (vagy divet) szúrsz be egy forciklussal az elején.
6

oksi

Vas Dávid · 2007. Feb. 13. (K), 20.58
oksi majd megpróbálgatom igen tudom hogy a 0 az vasárnap a 6 meg szombat...

kössz a segítslget mindekitől most megpróbálok kicsit hosszab időt rászánni aztán majd kiderül meddig jutok.
7

nem mindig 0 a vasárnap

gex · 2007. Feb. 14. (Sze), 10.26
a 0 az vasárnap a 6 meg szombat

ezzel vigyázz, néha vannak keveredések, bár azért van némi következetesség.
date():
w A hét napjának számreprezentációja 0-tól (Vasárnap) 6-ig (Szombat)

strftime():
%u - hét napja, számmal [1,7], az 1 a hétfőt jelenti
%w - hét napja számmal, a vasárnap a 0
8

Sikerült

Vas Dávid · 2007. Feb. 25. (V), 22.16
Üdv!

Köszönök minden segítséget ma végre rászántam magam és egy kis gondolkodással sikerült. Persze volt 2 rész amit újra kellett kezdenem, jobban átgondolni, mert nem jött össze és a 20 soros rossz megoldásomat átjavítottam 5 soros jóvá kb. :). Nem volt kevés idő szerintem egy jó másfél óra alatt csináltam meg, de megérte. Itt is látszik, hogy a programozást nem lehet csakúgy betanulni könyvekből, hanem kell hozzá gondolkozni is, hogy mikor mit hszsnálj és hogy...

Persze lehet kicsitt jobb is ez a progi, de szerintem ez is bőven elég...
Miben lehetne jobb? pl.: mikor december hónapnál a tovább gombra kattintasz akkor a következő év januárja jöjjön be, ez most ilyenkor nem csinál semmit, hanem egyhelyben marad, de szerintem így is jó, mert ilyenkor az év-re kattint a tovább gombnál na de mind1.

Hátha valakinek ilyesmi gondja támad, ugy hogy ideteszem a forráskódot:

<?php

if (!empty($_GET['ev']) AND empty($_GET['honap'])) {
print 'Nincs hónap.';
}

elseif (!empty($_GET['honap']) AND empty($_GET['ev'])) {
print 'Nincs év.';
}

elseif (!is_numeric($_GET['ev']) AND !empty($_GET['ev'])) {
print 'Hibás év formátum.';
}

elseif (!is_numeric($_GET['honap']) AND !empty($_GET['honap'])) {
print 'Hibás hónap formátum.';
}

elseif ($_GET['ev'] < 1970 AND !empty($_GET['ev'])) {
print 'Az év 1970 alá nem csökkenhet.';
}

elseif ($_GET['ev'] > 2037 AND !empty($_GET['ev'])) {
print 'Az év 2037 főlé nem emelkedhet.';
}

elseif ($_GET['honap'] > 12 AND !empty($_GET['honap'])) {
print 'A hónap 12-nél nem lehet nagyobb.';
}

elseif ($_GET['honap'] <= 0 AND !empty($_GET['honap'])) {
print 'A hónap nem lehet 0 vagy annál kisebb.';
}

$time = time();
$mostani_honap = date("m", $time);
$mostani_ev = date("Y", $time);

if (empty($_GET['honap'])) {
$valasztott_honap = $mostani_honap;
}

else {
$valasztott_honap = $_GET['honap'];
}

if (empty($_GET['ev'])) {
$valasztott_ev = $mostani_ev;
}

else {
$valasztott_ev = $_GET['ev'];
}

$mostani_datum = mktime(0, 0, 0, $valasztott_honap, 1, $valasztott_ev);

$max_nap = date("t", $mostani_datum);
$honap_elso_napja = date("w", $mostani_datum);

if ($honap_elso_napja == 0) {
$honap_elso_napja = 7;
}

$datum_kiir_ev_datum = date("Y.", $mostani_datum);
$datum_kiir_honap_datum = date("n", $mostani_datum);

$magyar_honapok = array("Január", "Február", "Március", "Április", "Május", "Június", "Július", "Augusztus",
"Szeptember", "Október", "November", "December");
$magyar_honap = $datum_kiir_honap_datum-1;
$datum_kiir_honap_datum = $magyar_honapok[$magyar_honap];

if (empty($_GET['ev'])) {
$ev_novelo = date("Y", $time) + 1;
$ev_csokkento = date("Y", $time) - 1;
$ev = date("Y", $time);
}

else {
$ev_novelo = $_GET['ev'] + 1;
if ($_GET['ev'] >= 2037) {
$ev_novelo = date("Y", $time);
}

$ev_csokkento = $_GET['ev'] - 1;
if ($_GET['ev'] <= 1970) {
$ev_csokkento = date("Y", $time);
}

$ev = $_GET['ev'];
}

if (empty($_GET['honap'])) {
$honap_novelo = date("n", $time) + 1;
$honap_csokkento = date("n", $time) - 1;
$honap = date("n", $time);
}

else {
$honap_novelo = $_GET['honap'] + 1;
if ($_GET['honap'] > 12) {
$honap_novelo = date("n", $time);
}

$honap_csokkento = $_GET['honap'] - 1;
if ($_GET['honap'] <= 0) {
$honap_csokkento = date("n", $time);
}

$honap = $_GET['honap'];
}

$datum_kiir_ev = '<a href="?ev='.$ev_csokkento.'&honap='.$honap.'">&laquo;</a> '.$datum_kiir_ev_datum.' <a href="?ev='.$ev_novelo.'&honap='.$honap.'">&raquo;</a>';

if ($_GET['honap'] == 12 OR date("n", $time) == 12) {
$honap_novelo = 12;
}

if ($_GET['honap'] == 1 OR date("n", $time) == 1) {
$honap_csokkento = 1;
}

$datum_kiir_honap = '<a href="?ev='.$ev.'&honap='.$honap_csokkento.'">&laquo;</a> '.$datum_kiir_honap_datum.' <a href="?ev='.$ev.'&honap='.$honap_novelo.'">&raquo;</a>';

?>
<table>
<tr><th colspan="7"><?php print $datum_kiir_ev; ?><th></tr>
<tr><th colspan="7"><?php print $datum_kiir_honap; ?><th></tr>
<tr><td>H</td><td>K</td><td>Sz</td><td>Cs</td><td>P</td><td>Sz</td><td>V</td></tr>
<?php

$most_nap = 1 - $honap_elso_napja + 1;
$tr_nap = 0;

while ($most_nap <= $max_nap) {

$most_nap_stamp = mktime(0, 0, 0, $valasztott_honap, $most_nap, $valasztott_ev);

if ($tr_nap%7 == 0) {
print '</tr>';
}

if ($tr_nap%7 == 0) {
print '<tr>';
}

if ($most_nap > 0) {

if ($time >= $most_nap_stamp) {

if (date("j", $time) == $most_nap AND date("n", $most_nap_stamp) == date("n", $time) AND date("Y", $most_nap_stamp) == date("Y", $time)) {
$mai_nap = ' class="naptar_mai_nap"';
}

print '<td'.$mai_nap.'><a href="?ev='.$ev.'&honap='.$honap.'&nap='.$most_nap.'">'.$most_nap.'</a></td>';
}

else {
print '<td>'.$most_nap.'</td>';
}

}

else {
print '<td>&nbsp;</td>';
}

$most_nap++;
$tr_nap++;

}

?>
</table>
9

Hibaüzenetek

vbence · 2007. Feb. 25. (V), 23.50
Így elsőre túl verbózus (van ilyen szó)? Nem divat a látogató orrára kötni, hogy mivel van gond, mert gondolom ezek belső üzenetek. (Nem tőle kéred be a GET-ben szereplő adatokat, hanem általad generált URL-ből jönnek.)
Namármost, ha rákkatintok egy URL-re és azt kepom, hogy "Nincs hónap", akkor tudom, hogy a programozó elszúrt valamit :) Ehelyett ha logba menne a hiba, és én annyit látnék, mondjuk hogy "A funkció jelenleg nem elérhető, próbálja később.", akkor mindjárt nem sérül annyira az oldal presztízse :)