ugrás a tartalomhoz

Aktuális havi naptár, eseményekkel, PHP-vel

ceops · 2005. Dec. 25. (V), 12.14
sikerült csinálnom egy ilyet:
http://www.tenou.org/cal.php

csak ez is minden napot linkké alakít :( méghozzá olyan linkké ami így néz ki:
http://www.tenou.org/cal.php?date=1134601200

szal ez így nagyon nem jó... mi van akkor ha én a linkeket nem ilyenre akarom, kanem konkrét linkeket akarok csinálni? mint példul:
http://www.tenou.org/_p051223.php

hm...? @_@
 
2

forráskód olvasgatás és értelmezés

zila · 2005. Dec. 25. (V), 11.18
sikerült csinálnom egy ilyet is:
http://www.tenou.org/cal.php


A kérdéseidből ítélve nem te csináltad, csak letöltötted és a működését sem sikerült megértened...

Keresd meg a forráskódban ahol linkeket állít elő (<a href...) Itt a link képzést kell átírnod olyanra ami neked kell (a date=1134601200 paraméter unix timestamp formátumú, ebből könnyedén tudsz bármilyen másik dátumformára konvertálni a neked szükséges yymmdd formátumra is)

Mivel neked nem minden napra kell link, ezért a link generálást valamilyen feltételhez kötöd, vagyis beteszed egy feltételvizsgáló blokk egyik ágába. (pl. előállítod a link filenevét _p051223.php és megnézed, van-e ilyen file, ha igen, akkor kell link ellenkező esetben pedig nem)

Olvasgasd a manual-t és igyekezz okosan kérdezni, mert a mostani kérdésedre ...

mi van akkor ha én a linkeket nem ilyenre akarom, kanem konkrét linkeket akarok csinálni?


... a válasz annyi, hogy olyankor az ember fogja és megírja magának olyanra amilyenre kell...

üdv,
Zila
1

jah... a kód!

ceops · 2005. Dec. 24. (Szo), 20.01
itt a kódja, mert az lemaradt:

<html> 
<head> 
<title>PHP Calendar</title> 
<style type="text/css"> 
<!-- 
.table.calendar {border: 1px solid #000000; border-collapse: collapse; color: #000000; background: #FFFFFF; } 
.td.today { border: 1px solid white; color: #000000; background: #EFEFEF; font-weight: bold;} 
.td.monthdays {border: 1px solid #434470; color: #000000; background: #FFFFFFF; } 
.td.nonmonthdays { border: 1px solid white; color: #000000; background: #EFEFEF;} 
--> 
</style> 
<body> 

<?php 
error_reporting('0'); 
ini_set('display_errors', '0'); 
// Gather variables from 
// user input and break them 
// down for usage in our script 

if(!isset($_REQUEST['date'])){ 
   $date = mktime(0,0,0,date('m'), date('d'), date('Y')); 
} else { 
   $date = $_REQUEST['date']; 
} 

$day = date('d', $date); 
$month = date('m', $date); 
$year = date('Y', $date); 

// Get the first day of the month 
$month_start = mktime(0,0,0,$month, 1, $year); 

// Get friendly month name 
$month_name = date('M', $month_start); 

// Figure out which day of the week 
// the month starts on. 
$month_start_day = date('D', $month_start); 

switch($month_start_day){ 
    case "Sun": $offset = 0; break; 
    case "Mon": $offset = 1; break; 
    case "Tue": $offset = 2; break; 
    case "Wed": $offset = 3; break; 
    case "Thu": $offset = 4; break; 
    case "Fri": $offset = 5; break; 
    case "Sat": $offset = 6; break; 
} 

// determine how many days are in the last month. 
if($month == 1){ 
   $num_days_last = cal_days_in_month(0, 12, ($year -1)); 
} else { 
   $num_days_last = cal_days_in_month(0, ($month -1), $year); 
} 
// determine how many days are in the current month. 
$num_days_current = cal_days_in_month(0, $month, $year); 

// Build an array for the current days 
// in the month 
for($i = 1; $i <= $num_days_current; $i++){ 
    $num_days_array[] = $i; 
} 

// Build an array for the number of days 
// in last month 
for($i = 1; $i <= $num_days_last; $i++){ 
    $num_days_last_array[] = $i; 
} 

// If the $offset from the starting day of the 
// week happens to be Sunday, $offset would be 0, 
// so don't need an offset correction. 

if($offset > 0){ 
    $offset_correction = array_slice($num_days_last_array, -$offset, $offset); 
    $new_count = array_merge($offset_correction, $num_days_array); 
    $offset_count = count($offset_correction); 
} 

// The else statement is to prevent building the $offset array. 
else { 
    $offset_count = 0; 
    $new_count = $num_days_array; 
} 

// count how many days we have with the two 
// previous arrays merged together 
$current_num = count($new_count); 

// Since we will have 5 HTML table rows (TR) 
// with 7 table data entries (TD) 
// we need to fill in 35 TDs 
// so, we will have to figure out 
// how many days to appened to the end 
// of the final array to make it 35 days. 


if($current_num > 35){ 
   $num_weeks = 6; 
   $outset = (42 - $current_num); 
} elseif($current_num < 35){ 
   $num_weeks = 5; 
   $outset = (35 - $current_num); 
} 
if($current_num == 35){ 
   $num_weeks = 5; 
   $outset = 0; 
} 
// Outset Correction 
for($i = 1; $i <= $outset; $i++){ 
   $new_count[] = $i; 
} 

// Now let's "chunk" the $all_days array 
// into weeks. Each week has 7 days 
// so we will array_chunk it into 7 days. 
$weeks = array_chunk($new_count, 7); 



// Build the heading portion of the calendar table 
echo "<table border=\"1\" cellpadding=\"2\" cellspacing=\"0\" width=\"300\" class=\"calendar\">\n". 
     "<tr>\n". 
     "<td colspan=\"7\">\n". 
     "<table align=\"center\">\n". 
     "<tr>\n". 
     "<td colspan=\"2\" width=\"75\" align=\"left\">$previous_link</td>\n". 
     "<td colspan=\"3\" width=\"150\" align=\"center\">$month_name $year</td>\n". 
     "<td colspan=\"2\" width=\"75\" align=\"right\">$next_link</td>\n". 
     "</tr>\n". 
     "</table>\n". 
     "</td>\n". 
     "<tr>\n". 
     "<td>S</td><td>M</td><td>T</td><td>W</td><td>T</td><td>F</td><td>S</td>\n". 
     "</tr>\n"; 

// Now we break each key of the array 
// into a week and create a new table row for each 
// week with the days of that week in the table data 

$i = 0; 
foreach($weeks AS $week){ 
       echo "<tr>\n"; 
       foreach($week as $d){ 
         if($i < $offset_count){ 
             $day_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month -1,$d,$year)."\">$d</a>"; 
             echo "<td class=\"nonmonthdays\">$day_link</td>\n"; 
         } 
         if(($i >= $offset_count) && ($i < ($num_weeks * 7) - $outset)){ 
            $day_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month,$d,$year)."\">$d</a>"; 
           if($date == mktime(0,0,0,$month,$d,$year)){ 
               echo "<td class=\"today\">$d</td>\n"; 
           } else { 
               echo "<td class=\"days\">$day_link</td>\n"; 
           } 
        } elseif(($outset > 0)) { 
            if(($i >= ($num_weeks * 7) - $outset)){ 
               $day_link = "<a href=\"".$_SERVER['PHP_SELF']."?date=".mktime(0,0,0,$month +1,$d,$year)."\">$d</a>"; 
               echo "<td class=\"nonmonthdays\">$day_link</td>\n"; 
           } 
        } 
        $i++; 
      } 
      echo "</tr>\n";    
} 

// Close out your table and that's it! 
echo '<tr><td colspan="7" class="days"> </td></tr>'; 
echo '</table>'; 
?> 
</body> 
</html> 

3

html date picker

h-k · 2014. Okt. 22. (Sze), 09.44
Üdv,
most regisztráltam a fórumra, és naptárral kapcsolatos szeretnék én is megoldani.
Azt szeretném kérdezni, hogy a html elemeket (date, week chooser) nem lehet erre egyszerűbben felhasználni? Nekem az vele a gondom, hogy ha nem az aznapi dátumra vagyok kíváncsi, és a hét-választóval lépek pár hetet, akkor hogy adom át azt az értéket a dátumválasztónak, hogy ott kezdődjön a kiíratás? Tud ebben valaki segíteni?

Nemrég kezdtem el php-val foglalkozni, alapszintűek az ismereteim.

Köszönöm.
4

Dokumentáció

Hidvégi Gábor · 2014. Okt. 22. (Sze), 11.36
Első körben javaslom a HTML tanulmányozását, például hogyan lehet az említett elemek viselkedését befolyásolni. Második körben olvasd át a PHP alapjait, aztán pedig el tudsz gondolkodni azon, a kettőt hogyan lehet úgy kombinálni, hogy bármilyen értéket programoból be tudj állítani.
5

Ha kérdésed van, nyiss neki

bamegakapa · 2014. Okt. 22. (Sze), 12.11
Ha kérdésed van, nyiss neki egy új témát.

Én is azt tudom tanácsolni, hogy fejleszd az ismereteidet. A PHP önmagában kevés, HTML, CSS, Javascript is szükséges ahhoz, hogy elkezdd kapisgálni az összefüggéseket. Utána az ilyen kérdéseid maguktól megoldódnak.