Witam
Kilka dni temu na podstawie książki PHP i MySQL. Projekty do wykorzystania napisałem krypt (przepisany skrypt) i prawie wszystko działa ok. Poprzerabiałem go oczywiście wyglądowo pod własne potrzeby ale mam kilka problemów:
1) w orginalnym skrypcie z książki nie mogę ani w kalendarzu dziennym ani w miesięczym za pomocą znaków "<" i ">" zminić na kolejny dzień lib miesiąc, pozostaje jedynie klikanie na poszczegolne daty (niestety nie mogę sobie poradzić by to naprawić"
2) dodałem możliwość pokazywania 10 najbliższych wydażeń niestety wyświela mi wszystkie a nie najbliższe
Poniżej podaje cały skypcik:
<?php
include 'lib/common.php';
include 'lib/db.php';
$timestamp = (isset($_GET['t'])) ?
$_GET['t'] : time();
list
($month, $day, $year) = explode('/', date('m/d/Y', $timestamp));$first_day_of_month = date('w', mktime(0
, 0
, 0
, $month, 1
, $year)); $total_days = date('t', $timestamp);
if (isset($_POST['submitted'])) {
$evt_name = (isset($_POST['evt_name'])) ?
$_POST['evt_name'] : ''; $evt_name = trim($evt_name); if (!$evt_name)
{
$evt_name = 'Nieznane';
}
$evt_pm = (isset($_POST['evt_pm']) && $_POST['evt_pm'] == 'yes'); $evt_hour = (isset($_POST['evt_hour'])) ?
(int
)$_POST['evt_hour'] : 0; if ($evt_pm)
{
$evt_hour += 12;
}
if ($evt_hour == 24)
{
$evt_hour = 12;
}
else if ($evt_hour == 12)
{
$evt_hour = 0;
}
$evt_min = (isset($_POST['evt_min'])) ?
(int
)$_POST['evt_min'] : 0; $evt_notify = (isset($_POST['evt_notify']) && $_POST['evt_notify'] == 'yes');
$query = sprintf('INSERT INTO %sCALENDAR (EVENT_NAME, EVENT_TSTAMP, ' . 'NOTIFY) VALUES ("%s", "%04d-%02d-%02d %02d:00", %d)',
DB_TBL_PREFIX,
$year, $month, $day,
$evt_hour, $evt_min,
$evt_notify);
}
?>
<table bgcolor="#ffffff" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td width="40%" valign="top">
<?php
// uklad dnia
echo '<center><h2>Plan dnia</h2></center>'; echo '<table width="100%" id="day_calendar">'; echo '<tr id="day_calendar_header"><th width="10%"colspan="2">'; strtotime('-l day', $timestamp) . '"><</a> '; strtotime('+l day', $timestamp) . '">></a>';
// wygenerowanie komorek
for ($i = DAY_HR_START; $i <= DAY_HR_END; $i++)
{
for ($j = 0; $j < 60; $j += 30)
{
if ($i < 12)
{
printf('<td class="time">%d:%02d %s</td>', $i, $j, 'AM'); }
else if ($i > 12)
{
printf('<td class="time">%d:%02d %s</td>', $i - 12
, $j, 'PM');
}
else
{
printf('<td class="time">%d:%02d %s</td>', $i, $j, 'PM'); }
echo '<td width="90%" class="event">';
$query = sprintf('SELECT EVENT_NAME FROM %sCALENDAR WHERE ' . 'EVENT_TSTAMP = "%04d-%02d-%02d %02d:%02d:00"',
DB_TBL_PREFIX,
$year, $month, $day,
$i, $j);
{
{
'</div>';
}
}
else
{
}
}
}
?>
</td>
<td width="35%" valign="top">
<center><h2>10 najbliższych zdarzeń</h2></center>
<hr />
<table width="100%" valign="top">
<tr>
<td align="center"><b>Data i godzina</b></td>
<td align="center"><b>Zaplanowane zdarzenie</b></td>
<td align="center"><b>Edycja</b></td>
</tr>
<tr>
<?php
$sortuj="EVENT_TSTAMP";
$sortujjak="ASC";
$data = "2010-12-27";
$result = mysql_query("SELECT * FROM `xxx`.`HELION_CALENDAR` WHERE EVENT_TSTAMP > $timestamp ORDER BY $sortuj $sortujjak LIMIT 10"); if($row[6] == "rezygnacja") echo"<tr style=\"text-align:center;border:1px solid #999999;background-color:#ffff00;height:30px;\">"; else echo"<tr style=\"text-align:center;border:1px solid #999999;background:white;height:30px;\" onMouseOver=\"this.style.background='#8ee992'\" onMouseOut=\"this.style.background='white'\" width=\"100%\" bgcolor=\"white\">";
<td align=\"center\">$row[2]</td>
<td align=\"left\">$row[1]</td>
<td align=\"center\">Edytuj / <a href=\"panel_termin_usun.php?id=$row[0]\"><font color=\"#af1e2d\" size=\"1\"><b>Usuń</b></font></a></td>
</tr>
");
}
}
?>
</table>
<p align="right"><a href="termin.php"><font color="#af1e2d" size="1"><b>zobacz wszystkie zdarzenia </b></font></a></p>
</td>
<td width="20%" valign="top">
<?php
// wyswietlenie kalendarza w ukladzie miesiaca
echo '<center><h2>Kalendarz</h2></center>'; echo '<table align="center" width="25%" id="calendar">'; echo '<tr id="calendar_header"><th colspan="7">'; strtotime('-l month', $timestamp) . '"><</a> '; strtotime('+l month', $timestamp) . '">></a>'; echo '<tr><th>Pon</th><th>Wto</th><th>Śro</th><th>Czw</th>' . '<th>Pią</th><th>Sob</th><th>Nie</th></tr>';
$current = 1;
while ($current <= $total_days)
{
echo '<tr class="calendar_dates">'; for ($i = 1; $i < 8; $i++)
{
if (($current == 1 && $i < $first_day_of_month) ||
($current > $total_days))
{
echo '<td class="empty"> </td>'; continue;
}
'?t=' . mktime(0
, 0
, 0
, $month, $current, $year) . '">' . $current . '</a></td>';
$current++;
}
}
//formularz dodawania zdarzeń
?>
<center><h2>Dodanie zdarzenia</h2></center>
<hr />
$timestamp; ?>" method="post">
<table align="center">
<tr>
<td class="label"><label for="evt_name">Zdarzenie:</label></td>
<td><input type="text" id="evt_name" name="evt_name"></td>
</tr><tr>
<td class="label"><label for="evt_hour">Godzina:</label></td>
<td>
<select name="evt_hour" id="evt_hour">
<option value="12">12</option>
<?php
for ($i = 1; $i < 12; $i++)
{
printf('<option value="%d">%02d</option>', $i, $i); }
?>
</select> : <select name="evt min">
<?php
for ($i = 0; $i < 59; $i += 30)
{
printf('<option value="%d">%02d</option>', $i, $i); }
?>
</select>
<select name="evt_pm">
<option value="no">AM</option>
<option value="yes">PM</option>
</select>
</td>
</tr><tr>
<td class="label">Powiadomienie</td>
<td>
<input type="radio" name="evt_notify" id="evt_notify_yes" value="yes" checked="checked"/>
<label for="evt_notify_yes">Tak</label>
<input type="radio" name="evt_notify" id="evt_notify_no" value="no" />
<label for="evt_notify_no">Nie</label>
</td>
</tr><tr>
<td></td>
<td>
<input type="hidden" name="submitted" value="true"/>
<input type="submit" value="Dodaj zdarzenie">
</td>
</tr>
</table>
</form>
<center><h2>Pozostałe zdarzenia</h2></center>
<hr />
<?php
//odczytanie i wyswietlenie zdarzen, ktore wykraczają poza godziny w widoku dnia
$query = sprintf( 'SELECT EVENT_NAME, UNIX_TIMESTAMP(EVENT_TSTAMP) AS ' . 'EVENT_TSTAMP FROM %sCALENDAR WHERE EVENT_TSTAMP NOT BETWEEN ' .
'"%4d-%02d-%02d %02d:00:00" AND "%4d-%02d-%02d %02d:59:59" ORDER BY ' .
'EVENT_TSTAMP ASC, EVENT_NAME ASC',
DB_TBL_PREFIX,
$year, $month, $day, DAY_HR_START,
$year, Smonth, $day, DAY_HR_END);
{
{
echo '<li>' . date('h:i A - ', $row['EVENT_TSTAMP']) . }
} else
{
echo '<p><i>Nie zaplanowano innych zdarzeń</i></p>'; }
?>
</td>
</tr>
</table>
Proszę o pomoc jak rozwiązać w/w problemy,
Dziekuje i przepraszam za bałagan w kodzie
punkt 2 udało mi się już rozwiązać, jeżeli ktoś by mi pomógł z punktem 1 to byłbym wdzięczny
Ten post edytował Focuss 27.12.2010, 14:30:25