praegune kellaaeg 22.06.2025 08:37:56
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
redenergy
HV veteran

liitunud: 22.03.2004
|
12.06.2010 17:20:12
Kalendriga natuke abi tarvis |
|
|
Tervist, pärast 2 päeva otsides ja uurides erinevaid kalendreid leidsin lõpuks korraliku ja sobiva.
Toon lingi ka ära kui kellelgi veel peaks vaja minema: http://keithdevens.com/software/php_calendar
Nüüd teen seda natuke ümber. Nimelt lisan oma moodi eelmine ja järgmine kuu, et klikkides näiteks
järgmisel kuul tuleks aaddressi ribale calendar.php?year=2010&month=6
Hiljem üritan selle kalendri panna kuvama päevi mil on tehtud sisestus sql andmebaasi. Arvatavasti läheks sellega ka natuke abi vaja hiljem.
Probleem seisneb selles, et aaddressi ribal kuvatakse ainult kuu, aastat mingil põhjusel ei kuvata!?
Kas keegi targem teab põhjust?
php:
|
<?php # PHP Calendar (version 2.3), written by Keith Devens if (! isset($_REQUEST["month"])) $_REQUEST["month"] = date("n"); if (! isset($_REQUEST["year"])) $_REQUEST["year"] = date("Y"); $month = $_REQUEST["month"]; $year = $_REQUEST["year"]; $prev_month = $month-1; $next_month = $month+1; if ($prev_month == 0 ) { $prev_month = 12; $prev_year = $year - 1; } if ($next_month == 13 ) { $next_month = 1; $next_year = $year + 1; } function generate_calendar ($year, $month, $days = array(), $day_name_length = 3, $month_href = NULL, $first_day = 0, $pn = array()){ $first_of_month = gmmktime(0, 0, 0, $month, 1, $year); #remember that mktime will automatically correct if invalid dates are entered # for instance, mktime(0,0,0,12,32,1997) will be the date for Jan 1, 1998 # this provides a built in "rounding" feature to generate_calendar() $day_names = array(); #generate all the day names according to the current locale for($n=0,$t=(3+$first_day)*86400; $n<7; $n++,$t+=86400) #January 4, 1970 was a Sunday $weekday = ($weekday + 7 - $first_day) % 7; #adjust for $first_day $title = htmlentities(ucfirst($month_name)). ' '. $year; #note that some locales don't capitalize month and day names @ list($p, $pl) = each($pn); @ list($n, $nl) = each($pn); #previous and next links, if applicable if($p) $p = '<span class="calendar-prev">'. ($pl ? '<a href="'. htmlspecialchars($pl). '">'. $p. '</a>' : $p). '</span> '; if($n) $n = ' <span class="calendar-next">'. ($nl ? '<a href="'. htmlspecialchars($nl). '">'. $n. '</a>' : $n). '</span>'; $calendar = '<table class="calendar">'."\n". '<caption class="calendar-month">'. $p. ($month_href ? '<a href="'. htmlspecialchars($month_href). '">'. $title. '</a>' : $title). $n. "</caption>\n<tr>"; if($day_name_length){ #if the day names should be shown ($day_name_length > 0) #if day_name_length is >3, the full name of the day will be printed foreach($day_names as $d) $calendar .= "</tr>\n<tr>"; } if($weekday > 0) $calendar .= '<td colspan="'.$weekday.'"> </td>'; #initial 'empty' days for($day= 1, $days_in_month= gmdate('t', $first_of_month); $day<= $days_in_month; $day++, $weekday++ ){ if($weekday == 7){ $weekday = 0; #start a new week $calendar .= "</tr>\n<tr>"; } @ list($link, $classes, $content) = $days[$day]; if(is_null($content)) $content = $day; $calendar .= '<td'. ($classes ? ' class="'. htmlspecialchars($classes). '">' : '>'). ($link ? '<a href="'. htmlspecialchars($link). '">'. $content. '</a>' : $content). '</td>'; } else $calendar .= "<td>$day</td>"; } if($weekday != 7) $calendar .= '<td colspan="'.(7-$weekday).'"> </td>'; #remaining "empty" days return $calendar."</tr>\n</table>\n"; } $oldlocale = setlocale(LC_TIME, NULL); #save current locale $today = date('j', $time); $days = array($today=>array (NULL, NULL, '<span style="color: red; text-decoration: underline;">'. $today. '</span>'), 2=>array('/weblog/archive/2010/6/02','linked-day'), 3=>array('/weblog/archive/2010/6/03','linked-day'), 8=>array('/weblog/archive/2010/6/08','linked-day'), 22=>array('/weblog/archive/2010/6/22','linked-day'), ); echo generate_calendar ($year, $month, $days, 1, NULL, 1); ?> <table border="0" cellpadding="0" cellspacing="0" width="150px"> <tr> <td colspan="7" bgcolor="#FFFFFF" align="center" class="paev"> <a href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $prev_month . "&year=" . $prev_year; ?>" style="color:#000">< Eelmine</a> <a href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $next_month . "&year=" . $next_year; ?>" style="color:#000">Järgmine ></a> </td> </tr> </table>
|
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
DoS
HV veteran

liitunud: 19.08.2002
|
12.06.2010 17:30:03
|
|
|
$prev_year ja $next_year on defineerimata ju enamus juhtudel
|
|
Kommentaarid: 50 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
47 |
|
tagasi üles |
|
 |
andrusny
Kreisi kasutaja

liitunud: 20.03.2006
|
12.06.2010 17:38:18
|
|
|
Viga peaks sul siin olema, $prev_month = $month-1; ja $next_month = $month+1; arvutatakse välja, kuid nüüd tuleb kontroll, kui $prev_month == 0; siis ta võrdub 12 ja sama kontrolli sees arvutatakse ka eelmine aasta.
See on kõik hea, kui sa küsid kuid järjest, aga kui sinu kuu päring on näiteks nüüd juuni (6) ja eelmine aasta, siis $prev_year = $year - 1; ei toimugi ja su lingil pole seda kusagilt võtta.
$month = $_REQUEST["month"];
$year = $_REQUEST["year"];
$prev_month = $month-1;
$next_month = $month+1;
if ($prev_month == 0 ) {
$prev_month = 12;
$prev_year = $year - 1;
}
if ($next_month == 13 ) {
$next_month = 1;
$next_year = $year + 1;
} |
Sa peaksid selle aasta otse lingi sees välja arvutama, või siis koodi lõpus
<a href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $prev_month . "&year=" . ($year - 1); ?>" style="color:#000">< Eelmine</a>
<a href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $next_month . "&year=" . ($year + 1); ?>" style="color:#000">Järgmine ></a> |
Edit: Näe ette jõuti, kole pikalt kirjutasin.
Kas seda kalendrit oled vaadanud, seal peaks olema kõik sind huvitavad funktsioonid sees. Ka andmebaasis päevade märkmik.
MF Kalender
Täis versioon
ja link ka moditud css pisikalendrile (sama mootor)
Tilluke versioon
_________________

viimati muutis andrusny 12.06.2010 17:42:05, muudetud 1 kord |
|
Kommentaarid: 7 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
7 |
|
tagasi üles |
|
 |
redenergy
HV veteran

liitunud: 22.03.2004
|
12.06.2010 20:52:24
|
|
|
Kerge tähelepanematus minupoolt.
Lisasin:
$prev_year = $year;
$next_year = $year;
Ja asi töötab
Teine küsimus oleks ka.
php-brief:
|
$days = array($today=>array (NULL, NULL, '<span style="color: red; text-decoration: underline;">'. $today. '</span>'), 2=>array('/weblog/archive/2010/6/02','linked-day'), 3=>array('/weblog/archive/2010/6/03','linked-day'), 8=>array('/weblog/archive/2010/6/08','linked-day'), 22=>array('/weblog/archive/2010/6/22','linked-day'),
|
Kas on mingit valemit sellele, et nende 2, 3, 8, 22 (kuupäevade) asemele saaks panna kuidagi sql tabelist võetud päeva
Näiteks sellisel kujul see ei tööta. Aga kuidas selle "point'i" saaks tööle teisiti?
php-brief:
|
{ $paev = date('d', $timestamp); $paev=>array('/2010/6/$paev','linked-day'), ); }
|
|
|
Kommentaarid: 30 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
1 :: |
9 |
|
tagasi üles |
|
 |
mikk36
HV Guru

liitunud: 21.02.2004
|
12.06.2010 21:04:08
|
|
|
php:
|
$days[$paev] = array('/2010/6/$paev', 'linked-day');
|
|
|
Kommentaarid: 85 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
2 :: |
78 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|