Avaleht
uus teema   vasta Tarkvara »  WWW »  PHP Kalender - nädal algaks esmaspäevaga märgi kõik teemad loetuks
märgi mitteloetuks
vaata eelmist teemat :: vaata järgmist teemat
Hinnavaatlus :: Foorum :: Uudised :: Ärifoorumid :: HV F1 ennustusvõistlus :: Pangalink :: Telekavad :: HV toote otsing
autor
sõnum Saada viide sõbrale.  :: Teata moderaatorile teata moderaatorile
otsing:  
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 23.09.2009 14:00:52 PHP Kalender - nädal algaks esmaspäevaga vasta tsitaadiga

Tervist, kas HV's leidub mõni tark mees kes oskaks mu kalendri algus päevaks panna esmaspäeva mitte pühapäeva?
Olen jamanud sellega tükk aega juba ja närv hakkab mustaks minema vaikselt.

php:
  1.  
  2. <?php
  3.   $monthNames = Array("January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December");
  4.         if (!isset($_REQUEST["month"])) $_REQUEST["month"] = date("n");
  5.         if (!isset($_REQUEST["year"]))  $_REQUEST["year"]  = date("Y");
  6.        
  7.   $cMonth = $_REQUEST["month"];
  8.   $cYear  = $_REQUEST["year"];
  9.                
  10.   $prev_year = $cYear;
  11.   $next_year = $cYear;
  12.  
  13.         $prev_month = $cMonth-1;
  14.         $next_month = $cMonth+1;
  15.  
  16.         if ($prev_month == 0 ) {
  17.     $prev_month = 12;
  18.     $prev_year = $cYear - 1;
  19.   }
  20.         if ($next_month == 13 ) {
  21.     $next_month = 1;
  22.     $next_year = $cYear + 1;
  23.   }
  24. ?>
  25.    <div id="calendar_div" name="calendar_div">
  26.     <table width="200">
  27.         <tr align="center">
  28.           <td bgcolor="#999999" style="color:#FFFFFF">
  29.                 <table width="100%" border="0" cellspacing="0" cellpadding="0">
  30.                     <tr>
  31.                       <td width="50%" align="left">&nbsp;&nbsp;<a href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $prev_month . "&year=" . $prev_year; ?>" style="color:#FFFFFF">Previous</a></td>
  32.                       <td width="50%" align="right"><a href="<?php echo $_SERVER["PHP_SELF"] . "?month=". $next_month . "&year=" . $next_year; ?>" style="color:#FFFFFF">Next</a>&nbsp;&nbsp;</td>
  33.                     </tr>
  34.               </table>
  35.           </td>
  36.         </tr>
  37.         <tr>
  38.             <td align="center">
  39.               <table width="100%" border="0" cellpadding="2" cellspacing="2">
  40.                 <tr align="center">
  41.                   <td colspan="7" bgcolor="#999999" style="color:#FFFFFF"><strong><?php echo $monthNames[$cMonth-1].' '.$cYear; ?></strong></td>
  42.                 </tr>
  43.                 <tr>
  44.                   <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>S</strong></td>
  45.                   <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>M</strong></td>
  46.                   <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>T</strong></td>
  47.                   <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>W</strong></td>
  48.                   <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>T</strong></td>
  49.                   <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>F</strong></td>
  50.                   <td align="center" bgcolor="#999999" style="color:#FFFFFF"><strong>S</strong></td>
  51.                 </tr>
  52.  
  53.                 <?php
  54.                         $timestamp = mktime(0,0,0,$cMonth,1,$cYear);
  55.                         $maxday    = date("t",$timestamp);
  56.                         $thismonth = getdate ($timestamp);
  57.                         $startday  = $thismonth['wday'];
  58.  
  59.                   for ($i=0; $i<($maxday+$startday); $i++) {
  60.                     if(($i % 7) == 0 ) echo "<tr>\n";
  61.                     if($i < $startday) echo "<td></td>\n";
  62.                     else echo "<td align='center' valign='middle' height='20px'>". ($i - $startday + 1) . "</td>\n";
  63.                     if(($i % 7) == 6 ) echo "</tr>\n";
  64.                   } 
  65.                  ?>
  66.               </table>
  67.             </td>
  68.         </tr>
  69.     </table>
  70. </div>
  71.  


Tänan
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
Naljatilk
HV kasutaja
Naljatilk

liitunud: 03.03.2006




sõnum 23.09.2009 15:30:26 vasta tsitaadiga

Muuda ära:

$startday  = $thismonth['wday'] - 1;


Tänud koodi eest, muideks! On see kellegi copyrighti all?

Ps. Selle parandamine võttis mul 5 minutit aega:

$timestamp = mktime(0,0,0,$cMonth,1,$cYear);
//Leiab päeva nimetuse (esm-puhapäev), kui kell on 00:00:00, kuu on currentMonth, päev on 1 ja aasta on currentAasta. Ehk siis antud kuu esimese päeva asukoht.

$maxday    = date("t",$timestamp);
//näitab kuus olevate päevade arvu (28-31)

$thismonth = getdate ($timestamp);
//leiab antud timestampile vastava kuupäeva

$startday  = $thismonth['wday'] - 1;
//"wday" - Numeric representation of the day of the week - 0 (for Sunday) through 6 (for Saturday)

wday oli ainus, mis sai selle määrata, pisut mõttetööd ning selgus, et selleks, et esmaspäev esimeseks teha, tuli tema väärtus 1 muuta 0-ks.

Vaheta ka päevade nimed ära üleval ning oledki mäel!

_________________
Vaata pilti
Kommentaarid: 11 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 11
tagasi üles
vaata kasutaja infot saada privaatsõnum
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 23.09.2009 15:48:39 vasta tsitaadiga

Ei tohiks olla copyright'i all. Vähemalt koodis mingeid viiteid sellekohta pole olnud.
Tänud ja võta heaks icon_razz.gif
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
inzinz
HV kasutaja

liitunud: 26.01.2005




sõnum 23.09.2009 15:53:13 vasta tsitaadiga

Naljatilk, sinu antud koodis on loogikaviga sees.

$startday  = $thismonth['wday'] - 1;

Kõik on ilus ja tore, välja arvatud üks erijuht:
mis saab siis kui kuu esimene päev on pühapäev ?
$startday väärtuseks tuleb siis -1, ja kalendrit hakatakse kuvama esmaspäevast (esmaspäeva nr on korrektselt 2) kuid pühapäeva nr 1 on kadunud icon_razz.gif

Korrektne oleks
$startday  = ($thismonth['wday']+6) % 7;

Kaob ära juht et startday väärtus on negatiivne, ja kui alguse päev on pühapäev, siis on startday väärtus korrektselt 6 ja esmaspäeva korral korrektselt 0 ( 1 + 6 = 7, 7%7 = 0)

_________________
Upload.ee - eestimaine failiupload
Kommentaarid: 4 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 4
tagasi üles
vaata kasutaja infot saada privaatsõnum
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 23.09.2009 18:38:03 vasta tsitaadiga

Super, kõik töötab nagu vaja.
Tänan thumbs_up.gif

Annaksin kerge boonus nuputamise ka. Kuidas teha nii, et tänane päev oleks märgitud teist värvi?
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 23.09.2009 19:28:41 vasta tsitaadiga

tsitaat:
Annaksin kerge boonus nuputamise ka. Kuidas teha nii, et tänane päev oleks märgitud teist värvi?


Spoiler Spoiler Spoiler


Kui huvi võid ka minu kalendrit vaadata.
Muffimaania kalender

_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 24.09.2009 00:20:36 vasta tsitaadiga

Kõik on ilus aga ainuke probleem on see, et järgmise või eelmise kuu valides näitab ka neil, et on 24 kuupäev icon_sad.gif
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
andrusny
Kreisi kasutaja
andrusny

liitunud: 20.03.2006




sõnum 24.09.2009 12:37:22 vasta tsitaadiga

Kasuta siis päeva numbrit aastas, siis annab ainult ühe päeva, või kontrolli ka kuud.
_________________
Kommentaarid: 7 loe/lisa Kasutajad arvavad:  :: 0 :: 0 :: 7
tagasi üles
vaata kasutaja infot saada privaatsõnum mine selle kasutaja kodulehele
redenergy
HV veteran
redenergy

liitunud: 22.03.2004




sõnum 24.09.2009 14:28:57 vasta tsitaadiga

Aretasin midagi mis töötab (üllatasin ennast), iseasi millise koodiga icon_lol.gif
Pole veel väga pädev sellekohapealt.

Aga teistele kel huvi koodi vastu:
php-brief:
  1.  
  2.                 <?php         
  3.                         $timestamp = mktime(0,0,0,$cMonth,1,$cYear);
  4.                         $maxday    = date("t",$timestamp);
  5.                         $thismonth = getdate ($timestamp);
  6.                         $startday  = ($thismonth['wday']+6) % 7;
  7.                                         $tanapaev  = date("d");
  8.                                         $tanakuu   = date("n");
  9.                                         $tanaaasta = date("Y");
  10.                                         $cKuu      = $_GET['kuu'];
  11.                                         $cAasta    = $_GET['aasta'];
  12.                     for ($i=0; $i<($maxday+$startday); $i++)
  13.                                         {
  14.                                         $paevad    = $i - $startday + 1;
  15.                                         if($tanakuu==$cKuu && $tanapaev==$paevad && $tanaaasta==$cAasta)
  16.                                         {
  17.                                                 $varv='#bbcd59';
  18.                                         }
  19.                                         elseif($tanapaev==$paevad && $cKuu==NULL)
  20.                                         {
  21.                                                 $varv='#bbcd59';
  22.                                         }
  23.                                         else
  24.                                         {
  25.                                                 $varv='#fff';
  26.                                         }
  27.                                         $paevad2   = "<a href=". $_SERVER["PHP_SELF"] . "?leht=kalender&paev=$paevad"."&kuu=$cMonth"."&aasta=$cYear". ">$paevad</a>";
  28.                     if(($i % 7) == 0 ) echo "<tr>\n";
  29.                     if($i < $startday) echo "<td></td>\n";
  30.                     else echo "<td align='center' valign='middle' style='background:".$varv."' class='paevad'>". "$paevad2"."</td>\n";
  31.                     if(($i % 7) == 6 ) echo "</tr>\n";
  32.                     }
  33.                  ?>
  34.  

Järgmine eneseületus oleks ära värvida päevad mil midagi andmebaasi sisestatud on
Kommentaarid: 30 loe/lisa Kasutajad arvavad:  :: 0 :: 1 :: 9
tagasi üles
vaata kasutaja infot saada privaatsõnum
näita postitusi alates eelmisest:   
uus teema   vasta Tarkvara »  WWW »  PHP Kalender - nädal algaks esmaspäevaga
[vaata eelmist teemat] [vaata järgmist teemat]
 lisa lemmikuks
näita foorumit:  
 ignoreeri teemat 
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.