[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Частичное отображение языка.
Rustam26
Здравствуйте.
Установил скрипт календаря. В нём есть функция перевода на любой язык, т.е. загружается файл английской версии и рядом с каждым словом вводишь перевод на русском. Всё сделал, но календарь начал показывать вопросики и квадратики. Кодировка utf-8, база тоже. После этого удалил файл с переводом, сделал перевод ещё раз но уже локально в редакторе. Сохранил в utf-8 и залил обратно. Теперь всё работает кроме дней недели. http://calendar.julianahome.com/?id_item=2〈=ru посмотрите пожалуйста, я просто не понимаю почему так происходит. Если нужно какие-то файлы выложить, то выложу.

P.S. Теперь в редакторе скрипта когда открываю языковой файл, то иероглифы появляются sad.gif



Спустя 25 минут, 2 секунды (20.02.2011 - 19:47) Invis1ble написал(а):
Rustam26
Цитата
Error getting item name

smile.gif
Цитата
Теперь в редакторе скрипта когда открываю языковой файл, то иероглифы появляются

какой редактор? возможно, нужно поковыряться в настройках редактора

Спустя 3 минуты, 28 секунд (20.02.2011 - 19:50) Rustam26 написал(а):
PSPad. Я уже не знаю куда смотреть.

Спустя 2 минуты (20.02.2011 - 19:52) Invis1ble написал(а):
Rustam26
ты покажи, в чем проблема, ибо не ясно. Я прохожу по ссылке, а мне выдает:
Error getting item name

Спустя 3 минуты, 23 секунды (20.02.2011 - 19:55) Rustam26 написал(а):
Цитата (Invis1ble @ 20.02.2011 - 16:52)
Rustam26
ты покажи, в чем проблема, ибо не ясно. Я прохожу по ссылке, а мне выдает:
Error getting item name



А вот так если: http://calendar.julianahome.com/

Спустя 5 минут, 8 секунд (20.02.2011 - 20:01) Invis1ble написал(а):
Rustam26
приведи те участки кода, в которых формируются и выводятся дни недели

Спустя 5 минут, 15 секунд (20.02.2011 - 20:06) Rustam26 написал(а):
ниже

Спустя 2 минуты, 50 секунд (20.02.2011 - 20:09) Invis1ble написал(а):
подсвети код

Спустя 9 минут, 31 секунда (20.02.2011 - 20:18) Rustam26 написал(а):
Цитата (Invis1ble @ 20.02.2011 - 17:09)
подсвети код

А я не знаю как это делается

Спустя 2 минуты, 13 секунд (20.02.2011 - 20:20) Invis1ble написал(а):
кнопка "PHP" на панели над окном, где сообщение пишешь. Выделяешь код и нажимаешь на эту кнопку

Спустя 4 минуты, 19 секунд (20.02.2011 - 20:25) Rustam26 написал(а):
<?php
/*
script: Ajax availability calendar
author: Chris Bolson

file: functions.inc.php
use: common functions for all pages
inst:
*/


// create calendar for given month

function draw_cal($id_item,$month,$year){
global $lang;


$month=sprintf("%02s",$month);
// define vars
$today_timestamp = mktime(0,0,0,date('m'),date('d'),date('Y')); # current timestamp - used to check if date is in past
$this_month = getDate(mktime(0, 0, 0, $month, 1, $year)); # convert month to timestamp
$first_week_day = $this_month["wday"]; # define first weekday (0-6)
$days_in_this_month = cal_days_in_month(CAL_GREGORIAN,$month,$year); # define number of days in week
$day_counter_tot = 0; # count total number of days showin INCLUDING previous and next months - use to get 6th row of dates

// get num days in previous month - used to add dates to "empty" cells

$month_last = $month-1;
$year_last = $year;
if($month_last<1){
$month_last=12;
$year_last=$year-1;
}
$days_in_last_month = cal_days_in_month(CAL_GREGORIAN,$month_last,$year_last);

// CREATE THE CALENDAR

// day column titles - using first letter of each day

if($show_week_num) $list_day_titles='<li class="weeknum_spacer"></li>';

if(AC_START_DAY=="sun"){
//$cal_row_counter=0;

for($k=0; $k<7; $k++){
$weekday = substr($lang["day_".$k.""],0,1);
$list_day_titles.='<li class="cal_weekday"> '.$weekday.'</li>';
}
}
else{
//$cal_row_counter=1;
if ($first_week_day == 0) $first_week_day =7;
for($k=1; $k<=7; $k++){
//echo "<br>".$k;
if($k==7) $weekday = substr($lang["day_0"][0],0,1);
else $weekday = substr($lang["day_".$k.""],0,1);
$list_day_titles.='<li title="'.$lang["day_".$k.""].'"> '.$weekday.'</li>';
}
}



// Fill the first week of the month with the appropriate number of blanks.
$j=1;
if(AC_START_DAY=="sun") $first_week_day_start = $first_week_day; # start sunday
else $first_week_day = $first_week_day-1; # start monday

if($first_week_day!=7){
if($show_week_num) $list_days.='<li class="weeknum">-</li>';
$last_month_start_num=$days_in_last_month-$first_week_day+1;
for($week_day = 0; $week_day < $first_week_day; $week_day++){
$list_days.='<li class="cal_empty">'.$last_month_start_num.'</li>';
++
$last_month_start_num;
++
$j;
++
$day_counter_tot;
}
}

$week_day=$j;



// get bookings for this month and item from database
$booked_days=array();
$sql = "
SELECT
t1.the_date,
t2.class,
t2.desc_"
.LANG." AS the_state
FROM
"
.T_BOOKINGS." AS t1
LEFT JOIN "
.T_BOOKING_STATES." AS t2 ON t2.id=t1.id_state
WHERE
t1.id_item="
.$id_item."
AND MONTH(t1.the_date)="
.$month."
AND YEAR(t1.the_date)="
.$year."
"
;
if(!$res=mysql_query($sql)) die("ERROR checking id item availability dates<br>".mysql_error());
while($row=mysql_fetch_assoc($res)){
$booked_days[$row["the_date"]]=array("class"=>$row["class"],"state"=>$row["the_state"]);
}



// loop thorugh days (til max in month) to draw calendar
for($day_counter = 1; $day_counter <= $days_in_this_month; $day_counter++){




// reset xtra classes for each day
// note - these classes acumulate for each day according to state, current and clickable

$day_classes = "";
$day_title_state= " - ".$lang["available"];

// set all dates to clickable for now.... need to control this for admin OR for user side booking
$day_classes.=' clickable';


// turn date into timestamp for comparison with current timestamp (defined above)
$date_timestamp = mktime(0,0,0, $month,($day_counter),$year);

// get week number
$week_num=date("W",$date_timestamp);
if($week_num!=$last_week_num){
// new week
//$list_days .= '<li>-</li>';

}
// highlight current day
if($date_timestamp==$today_timestamp) $day_classes.=' today';

// format date for db modifying - the date is passed via ajax
$date_db = $year."-".sprintf("%02s",$month)."-".sprintf("%02s",$day_counter);

// format date for display only
if(AC_DATE_DISPLAY_FORMAT=="us") $date_format = $month."/".$day_counter."/".$year;
else $date_format = $day_counter."/".$month."/".$year;

// check if day is available
if(array_key_exists($date_db,$booked_days)){
$day_classes.=" ".$booked_days[$date_db]["class"];
$day_title_state=" - ".$booked_days[$date_db]["state"];
}


// check if date is past
if( $date_timestamp<$today_timestamp){
$day_classes.=" past"; #add "past" class to be modified via mootools if required
// overwrite clickable state if CLICKABLE_PAST is off

if(AC_ACTIVE_PAST_DATES=="off"){
// date is previous - strip out "clickable" from classes
$day_classes=str_replace(' clickable','',$day_classes);
}
}


// add weekend class - used in javascript to alter class or set opacity
$getdate=getdate($date_timestamp);
$day_num=$getdate["wday"]+1;
if ($day_num % 7 == 1) $day_classes.=' weekend';
elseif ($day_num % 6 == 1) $day_classes.=' weekend';

//'.$lang["day_".$getdate["wday"].""].'
$list_days .= '
<li class="'
.$day_classes.' " id="'.$date_db.'" title="'.$date_format.$day_title_state.'">'.$day_counter.'</li>';

// reset weekday counter if 7 (6)
$week_day %= 7; # reset weekday to 0
++$week_day; # increase weekday counter
++$day_counter_tot; # add 1 to total days shown
//echo "<br>".$week_day;

if($show_week_num){
if ($week_day==1) $list_days .= '<li class="weeknum">'.$week_num.'</li>';
}
$last_week_num=$week_num;
}
// add empty days till end of row
$next_month_day=1;
/*
if($week_day > 1){
for($till_day = $week_day; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++$next_month_day;
++$day_counter_tot; # add 1 to total days shown
}
}
*/
/*
echo $day_counter_tot % 6;
// now check that we have the full six rows...
if ($day_counter_tot % 6 !=0){
// add empty row
for($till_day = 1; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++$next_month_day;
++$day_counter_tot; # add 1 to total days shown
}
}
*/
// add more rows untill we get to 6

while($day_counter_tot % 6 !=0){
//add days until it does :)
for($till_day = $week_day; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++
$next_month_day;
++
$day_counter_tot; # add 1 to total days shown
}
$week_day=1;

}
// add empty dates (with next month numbers) until we get to 7
if($week_day > 1){
for($till_day = $week_day; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++
$next_month_day;
++
$day_counter_tot; # add 1 to total days shown
}
}



// put it all together (parent div defined in parent file)
$the_cal='
<div id="'
.$month.'_'.$year.'" class="cal_title">'.$lang["month_".$month.""].' '.$year.'</div>
<ul class="cal_weekday">
'
.$list_day_titles.'
</ul>
<ul>
'
.$list_days.'
</ul>
<div class="clear"></div>
'
;
return $the_cal;
}


function get_cal_update_date($id_item){
if(AC_DATE_DISPLAY_FORMAT=="us") $date_format = "%m-%d-%Y";
else $date_format = "%d-%m-%Y";

$sql="SELECT DATE_FORMAT(date_mod, '".$date_format."') as date_mod FROM `".T_BOOKING_UPDATE."` WHERE id_item=".$id_item."";
$res=mysql_query($sql) or die("error getting last calendar update date");
$row=mysql_fetch_assoc($res);
return $row["date_mod"];
}
// get calendar items for select list
function sel_list_items($id_item_current){
$list_items="";
$sql="SELECT id, desc_".LANG." as the_item FROM ".T_BOOKINGS_ITEMS." WHERE state=1 ORDER BY list_order";
$res=mysql_query($sql) or die("Error checking items");
while($row=mysql_fetch_assoc($res)){
$list_items.='<option value="'.$row["id"].'"';
if($row["id"]==$id_item_current) $list_items.=' selected="selected"';
$list_items.='>'.$row["the_item"].'</option>';
}
return $list_items;
}

function list_numbers($start,$end,$num){
$list_numbers='';
for($k=$start;$k<=$end;$k++){
$list_numbers.='<option value="'.$k.'"';
if($k==$num) $list_numbers.=' selected="selected"';
$list_numbers.='>'.$k.'</option>';
}
return $list_numbers;
}
// get item title
function itemTitle($id){
$sql="SELECT desc_".LANG." as item_title FROM ".T_BOOKINGS_ITEMS." WHERE id=".$id."";
$res=mysql_query($sql) or die("Error getting item name");
$row=mysql_fetch_assoc($res);
return $row["item_title"];
}
?>


Только я не уверен, что это именно этот файл, который отвечает за вывод дней

Спустя 30 минут, 28 секунд (20.02.2011 - 20:55) Invis1ble написал(а):
Rustam26
найди все строчки, в которых есть
$weekday = substr( ... );

и замени их на
$weekday = mb_substr( ... , 'utf-8');

например есть
			else		$weekday = substr($lang["day_".$k.""],0,1);

зменяешь ее на
			else		$weekday = mb_substr($lang["day_".$k.""],0,1, 'utf-8');
и т.д.

Спустя 2 минуты, 14 секунд (20.02.2011 - 20:57) Rustam26 написал(а):
Спасибо, сейчас буду пробовать. Это в этом только файле или везде где найду?

Спустя 45 секунд (20.02.2011 - 20:58) Invis1ble написал(а):
наверно только в этом

Спустя 1 минута, 54 секунды (20.02.2011 - 21:00) Rustam26 написал(а):
Цитата (Invis1ble @ 20.02.2011 - 17:58)
наверно только в этом

Хорошо. Отпишусь

Спустя 14 минут, 25 секунд (20.02.2011 - 21:15) Rustam26 написал(а):
Получилось rolleyes.gif !!! Всё работает кроме "Воскресенье". Такая же абракадабра и ещё не всплывает название, как у остальных дней.

Спустя 6 минут, 15 секунд (20.02.2011 - 21:21) Invis1ble написал(а):
Rustam26
у тебя и до этого оно не всплывало. Попробуй
$weekday = mb_substr($lang["day_0"][0],0,1, 'utf-8');

заменить на
$weekday = mb_substr($lang["day_0"],0,1, 'utf-8');

хотя врядли это поможет....
В скрипте используется глобальная переменная $lang, а как она формируется - не видно из листинга. Ищи формирование этой переменной и пробуй разобраться, где у тебя там бок с воскресеньем

Спустя 6 минут, 13 секунд (20.02.2011 - 21:27) Rustam26 написал(а):
Цитата (Invis1ble @ 20.02.2011 - 18:21)
хотя врядли это поможет....

Помогло! Огромное спасибо. Сейчас главное было сделать адекватное отображение дней. Ещё раз большое спасибо!!!
А этот блок не так уж принципиален, хотя ради спортивного интереса постараюсь найти:)

Спустя 2 минуты, 45 секунд (20.02.2011 - 21:30) Invis1ble написал(а):
попробуй так:
for($k=1; $k<=7; $k++){
//echo "<br>".$k;
if ($k==7){
$weekday = mb_substr($lang["day_0"],0,1, 'utf-8');
$list_day_titles.='<li title="'.$lang["day_0"].'"> '.$weekday.'</li>';
}
else{
$weekday = mb_substr($lang["day_".$k.""],0,1, 'utf-8');
$list_day_titles.='<li title="'.$lang["day_".$k.""].'"> '.$weekday.'</li>';
}
}

Спустя 11 минут, 38 секунд (20.02.2011 - 21:41) Rustam26 написал(а):
		//$cal_row_counter=1;
if ($first_week_day == 0) $first_week_day =7;
for($k=1; $k<=7; $k++){
//echo "<br>".$k;
if($k==7) { $weekday = mb_substr($lang["day_0"],0,1,'utf-8');
$list_day_titles.='<li title="'.$lang["day_0"].'"> '.$weekday.'</li>';}
else { $weekday = mb_substr($lang["day_".$k.""],0,1,'utf-8');
$list_day_titles.='<li title="'.$lang["day_".$k.""].'"> '.$weekday.'</li>';
}
}



Вот так я сделал и получил ответ:
Parse error: syntax error, unexpected $end in /home/u78330/calendar.julianahome.com/www/ac-includes/functions.inc.php on line 268

Может я не так написал. Не вижу.

Спустя 3 минуты, 37 секунд (20.02.2011 - 21:45) Invis1ble написал(а):
Видимо ты случайно фигурную скобку затер. Еще раз:
вот это
		for($k=1; $k<=7; $k++){
//echo "<br>".$k;
if($k==7) $weekday = substr($lang["day_0"][0],0,1);
else $weekday = substr($lang["day_".$k.""],0,1);
$list_day_titles.='<li title="'.$lang["day_".$k.""].'"> '.$weekday.'</li>';
}

меняешь на
for($k=1; $k<=7; $k++){
//echo "<br>".$k;
if ($k==7){
$weekday = mb_substr($lang["day_0"],0,1, 'utf-8');
$list_day_titles.='<li title="'.$lang["day_0"].'"> '.$weekday.'</li>';
}
else{
$weekday = mb_substr($lang["day_".$k.""],0,1, 'utf-8');
$list_day_titles.='<li title="'.$lang["day_".$k.""].'"> '.$weekday.'</li>';
}
}

Спустя 3 минуты, 39 секунд (20.02.2011 - 21:49) Rustam26 написал(а):
		if ($first_week_day == 0)	$first_week_day =7;
for($k=1; $k<=7; $k++){
//echo "<br>".$k;
if ($k==7){
$weekday = mb_substr($lang["day_0"],0,1, 'utf-8');
$list_day_titles.='<li title="'.$lang["day_0"].'"> '.$weekday.'</li>';
}
else{
$weekday = mb_substr($lang["day_".$k.""],0,1, 'utf-8');
$list_day_titles.='<li title="'.$lang["day_".$k.""].'"> '.$weekday.'</li>';
}
}




Parse error: syntax error, unexpected $end in /home/u78330/calendar.julianahome.com/www/ac-includes/functions.inc.php on line 271


Всё так же.

Спустя 2 минуты, 17 секунд (20.02.2011 - 21:51) Invis1ble написал(а):
Скинь полностью код, в котором ошибку выдает

Спустя 6 минут, 56 секунд (20.02.2011 - 21:58) Rustam26 написал(а):
<?php
/*
script: Ajax availability calendar
author: Chris Bolson

file: functions.inc.php
use: common functions for all pages
inst:
*/


// create calendar for given month

function draw_cal($id_item,$month,$year){
global $lang;


$month=sprintf("%02s",$month);
// define vars
$today_timestamp = mktime(0,0,0,date('m'),date('d'),date('Y')); # current timestamp - used to check if date is in past
$this_month = getDate(mktime(0, 0, 0, $month, 1, $year)); # convert month to timestamp
$first_week_day = $this_month["wday"]; # define first weekday (0-6)
$days_in_this_month = cal_days_in_month(CAL_GREGORIAN,$month,$year); # define number of days in week
$day_counter_tot = 0; # count total number of days showin INCLUDING previous and next months - use to get 6th row of dates

// get num days in previous month - used to add dates to "empty" cells

$month_last = $month-1;
$year_last = $year;
if($month_last<1){
$month_last=12;
$year_last=$year-1;
}
$days_in_last_month = cal_days_in_month(CAL_GREGORIAN,$month_last,$year_last);

// CREATE THE CALENDAR

// day column titles - using first letter of each day

if($show_week_num) $list_day_titles='<li class="weeknum_spacer"></li>';

if(AC_START_DAY=="sun"){
//$cal_row_counter=0;

for($k=0; $k<7; $k++){
$weekday = mb_substr($lang["day_".$k.""],0,1, 'utf-8');
$list_day_titles.='<li class="cal_weekday"> '.$weekday.'</li>';
}
}
else{
//$cal_row_counter=1;
if ($first_week_day == 0) $first_week_day =7;
for($k=1; $k<=7; $k++){
//echo "<br>".$k;
if ($k==7){
$weekday = mb_substr($lang["day_0"],0,1, 'utf-8');
$list_day_titles.='<li title="'.$lang["day_0"].'"> '.$weekday.'</li>';
}
else{
$weekday = mb_substr($lang["day_".$k.""],0,1, 'utf-8');
$list_day_titles.='<li title="'.$lang["day_".$k.""].'"> '.$weekday.'</li>';
}
}



// Fill the first week of the month with the appropriate number of blanks.
$j=1;
if(AC_START_DAY=="sun") $first_week_day_start = $first_week_day; # start sunday
else $first_week_day = $first_week_day-1; # start monday

if($first_week_day!=7){
if($show_week_num) $list_days.='<li class="weeknum">-</li>';
$last_month_start_num=$days_in_last_month-$first_week_day+1;
for($week_day = 0; $week_day < $first_week_day; $week_day++){
$list_days.='<li class="cal_empty">'.$last_month_start_num.'</li>';
++
$last_month_start_num;
++
$j;
++
$day_counter_tot;
}
}

$week_day=$j;



// get bookings for this month and item from database
$booked_days=array();
$sql = "
SELECT
t1.the_date,
t2.class,
t2.desc_"
.LANG." AS the_state
FROM
"
.T_BOOKINGS." AS t1
LEFT JOIN "
.T_BOOKING_STATES." AS t2 ON t2.id=t1.id_state
WHERE
t1.id_item="
.$id_item."
AND MONTH(t1.the_date)="
.$month."
AND YEAR(t1.the_date)="
.$year."
"
;
if(!$res=mysql_query($sql)) die("ERROR checking id item availability dates<br>".mysql_error());
while($row=mysql_fetch_assoc($res)){
$booked_days[$row["the_date"]]=array("class"=>$row["class"],"state"=>$row["the_state"]);
}



// loop thorugh days (til max in month) to draw calendar
for($day_counter = 1; $day_counter <= $days_in_this_month; $day_counter++){




// reset xtra classes for each day
// note - these classes acumulate for each day according to state, current and clickable

$day_classes = "";
$day_title_state= " - ".$lang["available"];

// set all dates to clickable for now.... need to control this for admin OR for user side booking
$day_classes.=' clickable';


// turn date into timestamp for comparison with current timestamp (defined above)
$date_timestamp = mktime(0,0,0, $month,($day_counter),$year);

// get week number
$week_num=date("W",$date_timestamp);
if($week_num!=$last_week_num){
// new week
//$list_days .= '<li>-</li>';

}
// highlight current day
if($date_timestamp==$today_timestamp) $day_classes.=' today';

// format date for db modifying - the date is passed via ajax
$date_db = $year."-".sprintf("%02s",$month)."-".sprintf("%02s",$day_counter);

// format date for display only
if(AC_DATE_DISPLAY_FORMAT=="us") $date_format = $month."/".$day_counter."/".$year;
else $date_format = $day_counter."/".$month."/".$year;

// check if day is available
if(array_key_exists($date_db,$booked_days)){
$day_classes.=" ".$booked_days[$date_db]["class"];
$day_title_state=" - ".$booked_days[$date_db]["state"];
}


// check if date is past
if( $date_timestamp<$today_timestamp){
$day_classes.=" past"; #add "past" class to be modified via mootools if required
// overwrite clickable state if CLICKABLE_PAST is off

if(AC_ACTIVE_PAST_DATES=="off"){
// date is previous - strip out "clickable" from classes
$day_classes=str_replace(' clickable','',$day_classes);
}
}


// add weekend class - used in javascript to alter class or set opacity
$getdate=getdate($date_timestamp);
$day_num=$getdate["wday"]+1;
if ($day_num % 7 == 1) $day_classes.=' weekend';
elseif ($day_num % 6 == 1) $day_classes.=' weekend';

//'.$lang["day_".$getdate["wday"].""].'
$list_days .= '
<li class="'
.$day_classes.' " id="'.$date_db.'" title="'.$date_format.$day_title_state.'">'.$day_counter.'</li>';

// reset weekday counter if 7 (6)
$week_day %= 7; # reset weekday to 0
++$week_day; # increase weekday counter
++$day_counter_tot; # add 1 to total days shown
//echo "<br>".$week_day;

if($show_week_num){
if ($week_day==1) $list_days .= '<li class="weeknum">'.$week_num.'</li>';
}
$last_week_num=$week_num;
}
// add empty days till end of row
$next_month_day=1;
/*
if($week_day > 1){
for($till_day = $week_day; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++$next_month_day;
++$day_counter_tot; # add 1 to total days shown
}
}
*/
/*
echo $day_counter_tot % 6;
// now check that we have the full six rows...
if ($day_counter_tot % 6 !=0){
// add empty row
for($till_day = 1; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++$next_month_day;
++$day_counter_tot; # add 1 to total days shown
}
}
*/
// add more rows untill we get to 6

while($day_counter_tot % 6 !=0){
//add days until it does :)
for($till_day = $week_day; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++
$next_month_day;
++
$day_counter_tot; # add 1 to total days shown
}
$week_day=1;

}
// add empty dates (with next month numbers) until we get to 7
if($week_day > 1){
for($till_day = $week_day; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++
$next_month_day;
++
$day_counter_tot; # add 1 to total days shown
}
}



// put it all together (parent div defined in parent file)
$the_cal='
<div id="'
.$month.'_'.$year.'" class="cal_title">'.$lang["month_".$month.""].' '.$year.'</div>
<ul class="cal_weekday">
'
.$list_day_titles.'
</ul>
<ul>
'
.$list_days.'
</ul>
<div class="clear"></div>
'
;
return $the_cal;
}


function get_cal_update_date($id_item){
if(AC_DATE_DISPLAY_FORMAT=="us") $date_format = "%m-%d-%Y";
else $date_format = "%d-%m-%Y";

$sql="SELECT DATE_FORMAT(date_mod, '".$date_format."') as date_mod FROM `".T_BOOKING_UPDATE."` WHERE id_item=".$id_item."";
$res=mysql_query($sql) or die("error getting last calendar update date");
$row=mysql_fetch_assoc($res);
return $row["date_mod"];
}
// get calendar items for select list
function sel_list_items($id_item_current){
$list_items="";
$sql="SELECT id, desc_".LANG." as the_item FROM ".T_BOOKINGS_ITEMS." WHERE state=1 ORDER BY list_order";
$res=mysql_query($sql) or die("Error checking items");
while($row=mysql_fetch_assoc($res)){
$list_items.='<option value="'.$row["id"].'"';
if($row["id"]==$id_item_current) $list_items.=' selected="selected"';
$list_items.='>'.$row["the_item"].'</option>';
}
return $list_items;
}

function list_numbers($start,$end,$num){
$list_numbers='';
for($k=$start;$k<=$end;$k++){
$list_numbers.='<option value="'.$k.'"';
if($k==$num) $list_numbers.=' selected="selected"';
$list_numbers.='>'.$k.'</option>';
}
return $list_numbers;
}
// get item title
function itemTitle($id){
$sql="SELECT desc_".LANG." as item_title FROM ".T_BOOKINGS_ITEMS." WHERE id=".$id."";
$res=mysql_query($sql) or die("Error getting item name");
$row=mysql_fetch_assoc($res);
return $row["item_title"];
}
?>



Спустя 5 минут, 33 секунды (20.02.2011 - 22:03) Invis1ble написал(а):
я же говорю - скобку затер. Внимательней надо быть. Вот:
Свернутый текст
<?php
/*
script: Ajax availability calendar
author: Chris Bolson

file: functions.inc.php
use: common functions for all pages
inst:
*/


// create calendar for given month

function draw_cal($id_item,$month,$year){
global $lang;


$month=sprintf("%02s",$month);
// define vars
$today_timestamp = mktime(0,0,0,date('m'),date('d'),date('Y')); # current timestamp - used to check if date is in past
$this_month = getDate(mktime(0, 0, 0, $month, 1, $year)); # convert month to timestamp
$first_week_day = $this_month["wday"]; # define first weekday (0-6)
$days_in_this_month = cal_days_in_month(CAL_GREGORIAN,$month,$year); # define number of days in week
$day_counter_tot = 0; # count total number of days showin INCLUDING previous and next months - use to get 6th row of dates

// get num days in previous month - used to add dates to "empty" cells

$month_last = $month-1;
$year_last = $year;
if($month_last<1){
$month_last=12;
$year_last=$year-1;
}
$days_in_last_month = cal_days_in_month(CAL_GREGORIAN,$month_last,$year_last);

// CREATE THE CALENDAR

// day column titles - using first letter of each day

if($show_week_num) $list_day_titles='<li class="weeknum_spacer"></li>';

if(AC_START_DAY=="sun"){
//$cal_row_counter=0;

for($k=0; $k<7; $k++){
$weekday = mb_substr($lang["day_".$k.""],0,1, 'utf-8');
$list_day_titles.='<li class="cal_weekday"> '.$weekday.'</li>';
}
}
else{
//$cal_row_counter=1;
if ($first_week_day == 0) $first_week_day =7;
for($k=1; $k<=7; $k++){
//echo "<br>".$k;
if ($k==7){
$weekday = mb_substr($lang["day_0"],0,1, 'utf-8');
$list_day_titles.='<li title="'.$lang["day_0"].'"> '.$weekday.'</li>';
}
else{
$weekday = mb_substr($lang["day_".$k.""],0,1, 'utf-8');
$list_day_titles.='<li title="'.$lang["day_".$k.""].'"> '.$weekday.'</li>';
}
}
}


// Fill the first week of the month with the appropriate number of blanks.
$j=1;
if(AC_START_DAY=="sun") $first_week_day_start = $first_week_day; # start sunday
else $first_week_day = $first_week_day-1; # start monday

if($first_week_day!=7){
if($show_week_num) $list_days.='<li class="weeknum">-</li>';
$last_month_start_num=$days_in_last_month-$first_week_day+1;
for($week_day = 0; $week_day < $first_week_day; $week_day++){
$list_days.='<li class="cal_empty">'.$last_month_start_num.'</li>';
++
$last_month_start_num;
++
$j;
++
$day_counter_tot;
}
}

$week_day=$j;



// get bookings for this month and item from database
$booked_days=array();
$sql = "
SELECT
t1.the_date,
t2.class,
t2.desc_"
.LANG." AS the_state
FROM
"
.T_BOOKINGS." AS t1
LEFT JOIN "
.T_BOOKING_STATES." AS t2 ON t2.id=t1.id_state
WHERE
t1.id_item="
.$id_item."
AND MONTH(t1.the_date)="
.$month."
AND YEAR(t1.the_date)="
.$year."
"
;
if(!$res=mysql_query($sql)) die("ERROR checking id item availability dates<br>".mysql_error());
while($row=mysql_fetch_assoc($res)){
$booked_days[$row["the_date"]]=array("class"=>$row["class"],"state"=>$row["the_state"]);
}



// loop thorugh days (til max in month) to draw calendar
for($day_counter = 1; $day_counter <= $days_in_this_month; $day_counter++){




// reset xtra classes for each day
// note - these classes acumulate for each day according to state, current and clickable

$day_classes = "";
$day_title_state= " - ".$lang["available"];

// set all dates to clickable for now.... need to control this for admin OR for user side booking
$day_classes.=' clickable';


// turn date into timestamp for comparison with current timestamp (defined above)
$date_timestamp = mktime(0,0,0, $month,($day_counter),$year);

// get week number
$week_num=date("W",$date_timestamp);
if($week_num!=$last_week_num){
// new week
//$list_days .= '<li>-</li>';

}
// highlight current day
if($date_timestamp==$today_timestamp) $day_classes.=' today';

// format date for db modifying - the date is passed via ajax
$date_db = $year."-".sprintf("%02s",$month)."-".sprintf("%02s",$day_counter);

// format date for display only
if(AC_DATE_DISPLAY_FORMAT=="us") $date_format = $month."/".$day_counter."/".$year;
else $date_format = $day_counter."/".$month."/".$year;

// check if day is available
if(array_key_exists($date_db,$booked_days)){
$day_classes.=" ".$booked_days[$date_db]["class"];
$day_title_state=" - ".$booked_days[$date_db]["state"];
}


// check if date is past
if( $date_timestamp<$today_timestamp){
$day_classes.=" past"; #add "past" class to be modified via mootools if required
// overwrite clickable state if CLICKABLE_PAST is off

if(AC_ACTIVE_PAST_DATES=="off"){
// date is previous - strip out "clickable" from classes
$day_classes=str_replace(' clickable','',$day_classes);
}
}


// add weekend class - used in javascript to alter class or set opacity
$getdate=getdate($date_timestamp);
$day_num=$getdate["wday"]+1;
if ($day_num % 7 == 1) $day_classes.=' weekend';
elseif ($day_num % 6 == 1) $day_classes.=' weekend';

//'.$lang["day_".$getdate["wday"].""].'
$list_days .= '
<li class="'
.$day_classes.' " id="'.$date_db.'" title="'.$date_format.$day_title_state.'">'.$day_counter.'</li>';

// reset weekday counter if 7 (6)
$week_day %= 7; # reset weekday to 0
++$week_day; # increase weekday counter
++$day_counter_tot; # add 1 to total days shown
//echo "<br>".$week_day;

if($show_week_num){
if ($week_day==1) $list_days .= '<li class="weeknum">'.$week_num.'</li>';
}
$last_week_num=$week_num;
}
// add empty days till end of row
$next_month_day=1;
/*
if($week_day > 1){
for($till_day = $week_day; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++$next_month_day;
++$day_counter_tot; # add 1 to total days shown
}
}
*/
/*
echo $day_counter_tot % 6;
// now check that we have the full six rows...
if ($day_counter_tot % 6 !=0){
// add empty row
for($till_day = 1; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++$next_month_day;
++$day_counter_tot; # add 1 to total days shown
}
}
*/
// add more rows untill we get to 6

while($day_counter_tot % 6 !=0){
//add days until it does :)
for($till_day = $week_day; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++
$next_month_day;
++
$day_counter_tot; # add 1 to total days shown
}
$week_day=1;

}
// add empty dates (with next month numbers) until we get to 7
if($week_day > 1){
for($till_day = $week_day; $till_day <=7; $till_day++){
$list_days .= '<li class="cal_empty">'.$next_month_day.'</li>';
++
$next_month_day;
++
$day_counter_tot; # add 1 to total days shown
}
}



// put it all together (parent div defined in parent file)
$the_cal='
<div id="'
.$month.'_'.$year.'" class="cal_title">'.$lang["month_".$month.""].' '.$year.'</div>
<ul class="cal_weekday">
'
.$list_day_titles.'
</ul>
<ul>
'
.$list_days.'
</ul>
<div class="clear"></div>
'
;
return $the_cal;
}


function get_cal_update_date($id_item){
if(AC_DATE_DISPLAY_FORMAT=="us") $date_format = "%m-%d-%Y";
else $date_format = "%d-%m-%Y";

$sql="SELECT DATE_FORMAT(date_mod, '".$date_format."') as date_mod FROM `".T_BOOKING_UPDATE."` WHERE id_item=".$id_item."";
$res=mysql_query($sql) or die("error getting last calendar update date");
$row=mysql_fetch_assoc($res);
return $row["date_mod"];
}
// get calendar items for select list
function sel_list_items($id_item_current){
$list_items="";
$sql="SELECT id, desc_".LANG." as the_item FROM ".T_BOOKINGS_ITEMS." WHERE state=1 ORDER BY list_order";
$res=mysql_query($sql) or die("Error checking items");
while($row=mysql_fetch_assoc($res)){
$list_items.='<option value="'.$row["id"].'"';
if($row["id"]==$id_item_current) $list_items.=' selected="selected"';
$list_items.='>'.$row["the_item"].'</option>';
}
return $list_items;
}

function list_numbers($start,$end,$num){
$list_numbers='';
for($k=$start;$k<=$end;$k++){
$list_numbers.='<option value="'.$k.'"';
if($k==$num) $list_numbers.=' selected="selected"';
$list_numbers.='>'.$k.'</option>';
}
return $list_numbers;
}
// get item title
function itemTitle($id){
$sql="SELECT desc_".LANG." as item_title FROM ".T_BOOKINGS_ITEMS." WHERE id=".$id."";
$res=mysql_query($sql) or die("Error getting item name");
$row=mysql_fetch_assoc($res);
return $row["item_title"];
}
?>

Спустя 10 минут, 22 секунды (20.02.2011 - 22:14) Rustam26 написал(а):
Ну, что я могу сказать... Спасибо! А невнимательность наверное из-за недосыпания. Сейчас пойду отсыпаться smile.gif . Ещё раз спасибо!


ЗЫ Если кому нужен будет скрипт календаря - стучите, скину. Исправленный biggrin.gif

Спустя 1 день, 23 часа, 6 минут, 36 секунд (22.02.2011 - 21:20) Rustam26 написал(а):
Это опять я со своим календарём, будь он неладен!
Если добавлять месяцы и дни через админку получаются кряказябры. До этого правил файл и всё работало, но нужно сделать, что бы именно через админку добавлять языки. Их будет много и переводить не я буду. Опять прошу помощи.
Этот код по-моему отвечает за админку. Могу выложить все файлы.

<?php
// active states
function active_state($state,$id,$table,$field='state'){
global $icons,$lang;
if($state==1) $icon=$icons["tick"];
elseif($state==0) $icon=$icons["cross"];
elseif($state==2) $icon=$icons["pending"];

return '<span class="update_state" id="state_'.$id.'" rel="'.$table.'" state="'.$state.'" field="'.$field.'" title="'.$lang["click_update_state"].'">'.$icon.'</a>';
}
// get item
function get_item($table,$id,$sql_condition=""){
$sql="SELECT b.* FROM ".$table." AS b WHERE b.id='".$id."' $sql_condition LIMIT 1";
$res=mysql_query($sql) or die("Error getting item.<br>".mysql_error());
if(mysql_num_rows($res)==0) return false;
else return mysql_fetch_assoc($res);
}

// get last order number
function get_next_order($table){
$sql="SELECT list_order FROM ".$table." WHERE state=1 ORDER BY list_order DESC";
$res=mysql_query($sql) or die("Error getting highest list order");
$row=mysql_fetch_assoc($res);
return ($row["list_order"]+1);
}


// add item
function add_item($table,$values,$debug=false){
$add_data="";
foreach($values AS $field=>$val){
if($field=="password") $add_data.="`".$field."` = md5('".$val."'),";
else $add_data.="`".$field."` = '".mysql_real_escape_string($val)."',";
}
$add_data=substr($add_data,0,-1);
$add="INSERT INTO `".$table."` SET ".$add_data."";
if($debug) echo $add."<br>";
if(mysql_query($add)) return true;
else{
if($debug) echo "<br>".mysql_error();
return false;
}
}

// modify item
function mod_item($table,$id_item,$values,$debug=false){
$mod_data="";
foreach($values AS $field=>$val){
if($field=="password" && $val!="") $mod_data.="`".$field."` = md5('".$val."'),";
else $mod_data.="`".$field."` = '".mysql_real_escape_string($val)."',";
}
$mod_data=substr($mod_data,0,-1);
$update="UPDATE `".$table."` SET ".$mod_data." WHERE id='".$id_item."' LIMIT 1";
if($debug) echo $update."<br>";
if(mysql_query($update)) return true;
else{
if($debug) echo "<br>".mysql_error();
return false;
}
}


function delete_item($table,$id,$debug=false){
$del="DELETE FROM ".$table." WHERE id='".$id."' LIMIT 1";
if($debug) echo $del."<br>";
if(mysql_query($del)) return true;
else return false;
}

// multi_array_key_exists function.
function multi_array_key_exists( $needle, $haystack ) {
foreach ( $haystack as $key => $value ) :
if ( $needle == $key )
return true;
if ( is_array( $value ) ) :
if ( multi_array_key_exists( $needle, $value ) == true )
return true;
else
continue
;
endif;
endforeach;
return false;
}
?>



Вот ещё один файлик

<?php
/***********************************************/
/*
File: common.inc.php
Author: cbolson.com
Script: availability calendar
Version: 3.03.03
Modified: 2010-02-11

Use: get calendar configuration data and define constants
get available languages from "lang" folder

Instructions: No need to modify this file UNLESS you don't want to define the config via a database
*/

/***********************************************/
error_reporting(E_ALL ^ E_NOTICE);
ini_set("display_errors", 1);

define("CAL_VERSION","v3.03.03");

// define tables
define("T_BOOKINGS_ITEMS", "".AC_DB_PREFIX."bookings_items"); # calendar items
define("T_BOOKINGS", "".AC_DB_PREFIX."bookings"); # bookings dates
define("T_BOOKING_STATES", "".AC_DB_PREFIX."bookings_states"); # booking types (am, pm, etc)
define("T_BOOKING_UPDATE", "".AC_DB_PREFIX."bookings_last_update");# holds las calendar update date
define("T_BOOKINGS_ADMIN", "".AC_DB_PREFIX."bookings_admin_users");# admin users
define("T_BOOKINGS_CONFIG", "".AC_DB_PREFIX."bookings_config"); # general config

// get config from database - can be defined manually below if needed

$sql="SELECT cal_url,title,default_lang,start_day,date_format,click_past_dates,num_months,theme FROM ".T_BOOKINGS_CONFIG."";
$res=mysql_query($sql) or die("error getting calendar config data<br>".mysql_Error());
$row_config=mysql_fetch_assoc($res);

// define calendar constants
define("AC_CALENDAR_PUBLIC" , "".$row_config["cal_url"]."/");
define("AC_INLCUDES_PUBLIC" , "".AC_CALENDAR_PUBLIC."ac-includes/");
define("AC_TITLE" , "".$row_config["title"]."");
define("AC_DEFAULT_LANG" , "".$row_config["default_lang"]."");
define("AC_START_DAY" , "".$row_config["start_day"]."");
define("AC_DATE_DISPLAY_FORMAT" , "".$row_config["date_format"]."");
define("AC_ACTIVE_PAST_DATES" , "".$row_config["click_past_dates"]."");
define("AC_NUM_MONTHS" , "".$row_config["num_months"]."");
define("AC_THEME" , "".$row_config["theme"]."");


// define directories
define("AC_CONTENTS_ROOT" , AC_ROOT."ac-contents/");
define("AC_CONTENTS_PUBLIC" , AC_CALENDAR_PUBLIC."ac-contents/"); # content - themes, languages etc.
define("AC_DIR_LANG" , AC_CONTENTS_ROOT."lang/"); # lang folder
define("AC_DIR_ADMIN" , AC_ROOT."ac-admin/"); # administration
define("AC_DIR_AJAX" , AC_INLCUDES_PUBLIC."ajax/"); # ajax files
define("AC_DIR_JS" , AC_INLCUDES_PUBLIC."js/");

// contents for themes
define("AC_DIR_THEMES_ROOT" , AC_CONTENTS_ROOT."themes/");
define("AC_DIR_THEMES" , AC_CONTENTS_PUBLIC."themes/");
define("AC_DIR_CSS" , AC_DIR_THEMES.AC_THEME."/css/");
define("AC_DIR_IMAGES" , AC_DIR_THEMES.AC_THEME."/images/");

// logos
define("LOGO_CALENDAR_ADMIN" , '<img src="images/logo_aac.png" title="Availability Calendar - Admin">');
define("LOGO_CALENDAR" , '<img src="'.AC_DIR_IMAGES.'logo_aac.png" title="Availability Calendar">');


// get available languages from lang file
$list_languages="";
$list_languages_config="";
$list_languages_web="";
if(isset($_REQUEST["lang"])) $cur_lang=$_REQUEST["lang"];
else $cur_lang=AC_DEFAULT_LANG;

if ($handle = opendir(AC_DIR_LANG)) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && substr($file,-8,4)=="lang") {
// define select list of languages for web and admin
if($_REQUEST["lang_file"]==$file) $selected=' selected="selected"';
else $selected="";
$list_languages.="<option value='".$file."' ".$selected.">".$file."</option>\n";


// get lang code
$lang_code=str_replace(".lang.php","",$file);


// for web
//select list for admin config

if($cur_lang==$lang_code) $selected=' selected="selected"';
else $selected="";
$list_languages_web.="<option value='".$lang_code."' ".$selected.">".$lang_code."</option>\n";


//select list for admin config
if($_REQUEST["lang"]==$lang_code) $selected=' selected="selected"';
elseif(AC_DEFAULT_LANG==$lang_code) $selected=' selected="selected"';
else $selected="";
$list_languages_config.="<option value='".$lang_code."' ".$selected.">".$lang_code."</option>\n";

// define lang codes for admin
$languages[$lang_code]=1;
}
}

closedir($handle);
}

// admin icons
$icons=array();
$icons["add"] = '<img src="icons/icon_add.png" alt="add">';
$icons["edit"] = '<img src="icons/icon_edit_s.png" alt="edit">';
$icons["delete"] = '<img src="icons/icon_trash_s.png" alt="delete">';
$icons["calendar"] = '<img src="icons/icon_calendar_s.png" alt="cal">';
$icons["tick"] = '<img src="icons/icon_tick.png" alt="tick">';
$icons["cross"] = '<img src="icons/icon_cross.png" alt="cross">';
$icons["pending"] = '<img src="icons/icon_pending.png" alt="pending">';
?>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.