PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (15): В начало « ... 6 7 8 9 [10] 11 12 13 14 ... » В конец
Найдено сообщений: 213
Coder1994
Отправлено: 24 Декабря, 2010 - 13:03:52 • Тема: Не могу сделать мелочь в классе! • Форум: Программирование на PHP
Ответов: 15 Просмотров: 996
Здравствуйте! Имеетс класс постр. навигации.
PHP:
скопировать код в буфер обмена
<?
class Paging {
private $page_size = 10 ;
private $link_padding = 10 ;
private $page_link_separator = ' ' ;
private $next_page_text = 'Далее->' ;
private $prev_page_text = '<-Назад' ;
private $result_text_pattern = 'Показано с %s по %s из %s' ;
private $page_var = 'p' ;
private $mysqli ;
private $q ;
private $total_rows ;
private $total_pages ;
private $cur_page ;
public function __construct( $mysqli , $q = '' , $page_var = 'p' )
{
$this -> db = $mysqli ;
if ( $q ) $this -> set_query ( $q ) ;
$this -> page_var = $page_var ;
$this -> cur_page = isset ( $_GET [ $this -> page_var ] ) && ( int
) $_GET [ $this -> page_var ] > 0 ?
( int
) $_GET [ $this -> page_var ] : 1 ; }
public function set_query( $q )
{
$this -> q = $q ;
}
public function set_page_size( $page_size )
{
$this -> page_size = abs ( ( int
) $page_size ) ; }
public function set_link_padding( $padding )
{
$this -> link_padding = abs ( ( int
) $padding ) ; }
public function get_page( $q = '' )
{
if ( $q ) $this -> set_query ( $q ) ;
$r = $this -> db -> query ( $this -> query_paging ( $this -> q ) ) ;
$this -> total_rows = array_pop ( $this -> db -> query ( 'SELECT FOUND_ROWS()' ) -> fetch_row ( ) ) ;
if ( $this -> page_size !== 0
) $this -> total_pages = ceil ( $this -> total_rows / $this -> page_size ) ;
if ( $this -> cur_page > $this -> total_pages )
{
$this -> cur_page = $this -> total_pages ;
if ( $this -> total_pages > 0 ) $r = $this -> db -> query ( $this -> query_paging ( $this -> q ) ) ;
}
return $r ;
}
public function get_result_text( )
{
$start = ( ( $this -> cur_page - 1) * $this -> page_size ) + 1 ;
$end = ( ( $start - 1+ $this -> page_size ) >= $this -> total_rows ) ? $this -> total_rows : ( $start - 1+ $this -> page_size ) ;
return sprintf ( $this -> result_text_pattern , $start , $end , $this -> total_rows ) ; }
public function get_page_links( )
{
if ( ! isset ( $this -> total_pages ) ) return '' ;
$page_link_list = array ( ) ;
$start = $this -> cur_page - $this -> link_padding ;
if ( $start < 1 ) $start = 1 ;
$end = $this -> cur_page + $this -> link_padding - 1 ;
if ( $end > $this -> total_pages ) $end = $this -> total_pages ;
if ( $start > 1 ) $page_link_list [ ] = $this -> get_page_link ( $start - 1, $start - 2 > 0 ? '...' : '' ) ;
for ( $i = $start ; $i <= $end ; $i ++ ) $page_link_list [ ] = $this -> get_page_link ( $i ) ;
if ( $end + 1 < $this -> total_pages ) $page_link_list [ ] = $this -> get_page_link ( $end + 1, $end + 2 == $this -> total_pages ? '' : '...' ) ;
if ( $end + 1 <= $this -> total_pages ) $page_link_list [ ] = $this -> get_page_link ( $this -> total_pages ) ;
return implode ( $this -> page_link_separator , $page_link_list ) ; }
public function get_next_page_link( )
{
return isset ( $this -> total_pages ) && $this -> cur_page < $this -> total_pages ?
$this -> get_page_link ( $this -> cur_page + 1
, $this -> next_page_text ) : '' ; }
public function get_prev_page_link( )
{
return isset ( $this -> total_pages ) && $this -> cur_page > 1 ?
$this -> get_page_link ( $this -> cur_page - 1
, $this -> prev_page_text ) : '' ; }
private function get_page_link( $page , $text = '' )
{
if ( ! $text ) $text = $page ;
if ( $page != $this -> cur_page )
{
$reg = '/((&|^)' . $this -> page_var . '=)[^&#]*/' ;
$url = '?' . ( preg_match ( $reg , $_SERVER [ 'QUERY_STRING' ] ) ?
preg_replace ( $reg , '${1}' . $page , $_SERVER [ 'QUERY_STRING' ] ) : ( $_SERVER [ 'QUERY_STRING' ] ?
$_SERVER [ 'QUERY_STRING' ] . '&' : '' ) . $this -> page_var . '=' . $page ) ; return '<a href="' . $url . '">' . $text . '</a>' ;
}
return '<span>' . $text . '</span>' ;
}
private function query_paging( )
{
$q = $this -> q ;
if ( $this -> page_size != 0 )
{
//calculate the starting row
$start = ( $this -> cur_page - 1) * $this -> page_size ;
//insert SQL_CALC_FOUND_ROWS and add the LIMIT
$q = preg_replace ( '/^SELECT\s+/i' , 'SELECT SQL_CALC_FOUND_ROWS ' , $this -> q ) . " LIMIT {$start} ,{$this->page_size} " ; }
return $q ;
}
}
?>
(Добавление)
Так вот проблема в:
PHP:
скопировать код в буфер обмена
private function get_page_link( $page , $text = '' )
{
if ( ! $text ) $text = $page ;
if ( $page != $this -> cur_page )
{
$reg = '/((&|^)' . $this -> page_var . '=)[^&#]*/' ;
$url = '?' . ( preg_match ( $reg , $_SERVER [ 'QUERY_STRING' ] ) ?
preg_replace ( $reg , '${1}' . $page , $_SERVER [ 'QUERY_STRING' ] ) : ( $_SERVER [ 'QUERY_STRING' ] ?
$_SERVER [ 'QUERY_STRING' ] . '&' : '' ) . $this -> page_var . '=' . $page ) ; return '<a href="' . $url . '">' . $text . '</a>' ;
}
return '<span>' . $text . '</span>' ;
}
Ссылки на страницу выводятся не валидными со стандартами xHTML. Пример ссылки на страницу: http://example[dot]org/forum/theme.php?id=1&p=2
А должно быть - http://example[dot]org/forum/theme[dot]p[dot][dot][dot]id=1&p=2
(Добавление)
Как я вижу дело в этих строках:
PHP:
скопировать код в буфер обмена
$reg = '/((&|^)' . $this -> page_var . '=)[^&#]*/' ;
$url = '?' . ( preg_match ( $reg , $_SERVER [ 'QUERY_STRING' ] ) ?
preg_replace ( $reg , '${1}' . $page , $_SERVER [ 'QUERY_STRING' ] ) : ( $_SERVER [ 'QUERY_STRING' ] ?
$_SERVER [ 'QUERY_STRING' ] . '&' : '' ) . $this -> page_var . '=' . $page ) ;
но сколько я их не редачил ничего не изменялось, даже в хтаццесс прописал:
(уберите пробел, а то здесь не получается написать слитно, на этом форуме выводится &)
Coder1994
Отправлено: 07 Декабря, 2010 - 14:27:32 • Тема: Некорректная работы парсера XML-данных с gismeteo • Форум: Программирование на PHP
Ответов: 3 Просмотров: 2064
Вот код файла вывода погоды:
PHP:
скопировать код в буфер обмена
<?
require_once 'class.weather.php' ;
$w = new Weather; //Включаем класс
$_GET [ 'id' ] = intval ( $_GET [ 'id' ] ) ; $w -> ConnectCache ( "$_GET ['id']_1.xml" ) ; //Собираем информацию и КЕШруем её, ID города можно узнать по адрему http://informer.gismeteo.ru/xml.html?index=27612%CC%EE%F1%EA%E2%E0&&lang=ru
echo $w -> city ;
echo $w -> weather ;
?>
(Добавление)
Код файла class.weather.php:
PHP:
скопировать код в буфер обмена
?
class Weather {
var $city ;
var $weather ;
var $encode = 'utf-8' ; // Кодировка в которой будут выводиться данные
var $patchimg = 'weather/' ;
var $patchcache = '/var/www/weather/cache_weather/' ; //Директория для хранение КЕШ-файлов, обычно задаётся полный путь к директории (например: для Windows 'X:/cache/wth/' для *Unix '/usr/www/site/cache/wth/')
//Подключаемся с использованием КЕШа, т.е. данные будут сохраняться в файл.
function ConnectCache( $url , $expire = 7200 ) { //
$mtime = 0 ;
$file_cacheid = $this -> patchcache . md5 ( $url ) ; //Создаём переменую с Директорией и зашифрованым файлом if ( $file_cacheid ) $s = true ; else $s = false ; // Проверяем создалась ли переменная
if ( ! file_exists ( $file_cacheid ) ) $s = false ; //Проверяем есть ли уже созданый КЕШ-файл if ( ! ( $mtime = @ filemtime ( $file_cacheid ) ) ) $s = false ; //Если нет переменной времени создания/изменения файлов то возвращаем false if ( ( $mtime + $expire ) < time ( ) ) { //Проверяем устарел ли файл, проверяется в зависимости от установленой $expire по умолчанию она стоит 7200, т.е. данные будут обновляться каждые 2 часа @ unlink ( $file_cacheid ) ; //Если устарел удаляем его. $s = false ;
}
else {
$s = true ;
}
if ( ( ! $s ) ) { //Если устарел файл, то создаём новый
@ unlink ( $file_cacheid ) ; //удаляем его, если не удалён $url = 'http://informer.gismeteo.ru/xml/' . $url ; //Генерируем URL
$this -> city = $this -> pCity ( $content ) ;
$this -> weather = $this -> Parser ( $content ) ;
if ( $fp = @ fopen ( $file_cacheid , 'w' ) ) { fwrite ( $fp , '' . $this -> city . '|' . $this -> weather . '|' ) ; //Записываем в файл в виде маски город|погода|, если изменить придёться поменять и способ разбивки, который парсит данные из файла. }
else {
die ( 'Unable to write cache.' ) ; }
} else {
$fp = @ fopen ( $file_cacheid , 'r' ) ; //Открываем КЕШ-файл
if ( $this -> encode !== 'windows-1251' ) { // Если кодировка не windows-1251 и требуется перекодирование
$this -> city = iconv ( "windows-1251" , $this -> encode , $p [ 0
] ) ; //Задаём переменной $city название города из КЕш-файла с учетом необходимой кодировки $this -> weather = iconv ( "windows-1251" , $this -> encode , $p [ 1
] ) ; //Задаём переменной $weather дфнные погоды из КЕш-файла с учетом необходимой кодировки }
else { // Если кодировка windows-1251
$this -> city = $p [ 0] ; //Задаём переменной $city название города из КЕш-файла
$this -> weather = $p [ 1] ; //Задаём переменной $weather дфнные погоды из КЕш-файла
}
}
}
//Парсим название города
function pCity( $content ) {
$str = "<TOWNindex=\" (.*)\" sname=\" (.*)\" latitude=\" (.*)\" longitude=\" (.*)\" >" ;
if ( eregi ( $str , $content , $out ) ) { } else return 'Unknow' ;
}
//Парсим погоду
function Parser( $content ) {
if ( $content ) {
$str = '<FORECASTday="([0-9]{1,2})"month="([0-9]{1,2})"year="([0-9]{4})"hour="([0-9]{1,2})"tod="([0-9]{1})"predict="([0-9]{1,3})"weekday="([0-9]{1})"><PHENOMENAcloudiness="([0-3])"precipitation="([0-9]{1,2})"rpower="([0-1])"spower="([0-1])"><PRESSUREmax="([0-9]{1,3})"min="([0-9]{1,3})"><TEMPERATUREmax="([-,0-9]{1,3})"min="([-,0-9]{1,3})"><WINDmin="([0-9]{1,3})"max="([0-9]{1,3})"direction="([0-9]{1})"><RELWETmax="([0-9]{1,3})"min="([0-9]{1,3})"><HEATmin="([-,0-9]{1,3})"max="([-,0-9]{1,3})"><FORECAST>' .
'<FORECASTday="([0-9]{1,2})"month="([0-9]{1,2})"year="([0-9]{4})"hour="([0-9]{1,2})"tod="([0-9]{1})"predict="([0-9]{1,3})"weekday="([0-9]{1})"><PHENOMENAcloudiness="([0-3])"precipitation="([0-9]{1,2})"rpower="([0-1])"spower="([0-1])"><PRESSUREmax="([0-9]{1,3})"min="([0-9]{1,3})"><TEMPERATUREmax="([-,0-9]{1,3})"min="([-,0-9]{1,3})"><WINDmin="([0-9]{1,3})"max="([0-9]{1,3})"direction="([0-9]{1})"><RELWETmax="([0-9]{1,3})"min="([0-9]{1,3})"><HEATmin="([-,0-9]{1,3})"max="([-,0-9]{1,3})"><FORECAST>' .
'<FORECASTday="([0-9]{1,2})"month="([0-9]{1,2})"year="([0-9]{4})"hour="([0-9]{1,2})"tod="([0-9]{1})"predict="([0-9]{1,3})"weekday="([0-9]{1})"><PHENOMENAcloudiness="([0-3])"precipitation="([0-9]{1,2})"rpower="([0-1])"spower="([0-1])"><PRESSUREmax="([0-9]{1,3})"min="([0-9]{1,3})"><TEMPERATUREmax="([-,0-9]{1,3})"min="([-,0-9]{1,3})"><WINDmin="([0-9]{1,3})"max="([0-9]{1,3})"direction="([0-9]{1})"><RELWETmax="([0-9]{1,3})"min="([0-9]{1,3})"><HEATmin="([-,0-9]{1,3})"max="([-,0-9]{1,3})"><FORECAST>' .
'<FORECASTday="([0-9]{1,2})"month="([0-9]{1,2})"year="([0-9]{4})"hour="([0-9]{1,2})"tod="([0-9]{1})"predict="([0-9]{1,3})"weekday="([0-9]{1})"><PHENOMENAcloudiness="([0-3])"precipitation="([0-9]{1,2})"rpower="([0-1])"spower="([0-1])"><PRESSUREmax="([0-9]{1,3})"min="([0-9]{1,3})"><TEMPERATUREmax="([-,0-9]{1,3})"min="([-,0-9]{1,3})"><WINDmin="([0-9]{1,3})"max="([0-9]{1,3})"direction="([0-9]{1})"><RELWETmax="([0-9]{1,3})"min="([0-9]{1,3})"><HEATmin="([-,0-9]{1,3})"max="([-,0-9]{1,3})"><FORECAST>' ;
if ( eregi ( $str , $content , $out ) ) { return $this -> arr ( $out ) ;
} else return ' Ошибка в данных сайта gismeteo.ru! ' ;
} else return 'Ошибка! Соединения с ' . $url . '' ;
}
//Задаём картинки для каждого типа осадков
function imgcloud( $n ) {
'0' => "<img src=" . $this -> patchimg . "0" . ( ( $n == '0' || $n == '4' ) ?'_night' : '' ) . ".gif style=\" float:left;margin-top:5px;\" alt=\" Ясно\" title=\" Ясно\" >" , //Тип погоды Ясно, путь к картинки задан ".$this->patchimg." , сама переменная задаётся выше. Данное действие означает ".(($n=='0' || $n=='4')?'_night':'')." добавлять или нет к картинки приставку _night, т.е. картинка показываюшаяя погоду в ночное время суток.
'1' => "<img src=" . $this -> patchimg . "1" . ( ( $n == '0' || $n == '4' ) ?'_night' : '' ) . ".gif style=\" float:left;margin-top:7px;\" alt=\" Малооблачно\" title=\" Малооблачно\" >" , //Тип погоды Малооблачно, далее по анологии, тип погоды находиться в теге title=\" Малооблачно \", если вы не желаете использовать картинки просто удалите вот эти даннные <img src=".$this->patchimg."1".(($n=='0' || $n=='4')?'_night':'').".gif style=\"float:left;margin-top:7px;\" alt=\"Малооблачно\" title=\"Малооблачно\"> оставьте только одно слово Малооблачно.
'2' => "<img src=" . $this -> patchimg . "2" . ( ( $n == '0' || $n == '4' ) ?'_night' : '' ) . ".gif style=\" float:left;margin-top:7px;\" alt=\" Облачно\" title=\" Облачно\" >" ,
'3' => "<img src=" . $this -> patchimg . "3.gif style=\" float:left;margin-top:5px;\" alt=\" Пасмурно\" title=\" Пасмурно\" >" ) ;
return $cloudiness ;
}
//Задаём картинки для каждого типа осадков
function imgprecip( $n ) {
'4' => "<img src=" . $this -> patchimg . "4.gif style=\" float:left;margin-top:5px;\" alt=\" Дождь\" title=\" Дождь\" >" ,
'5' => "<img src=" . $this -> patchimg . "5.gif style=\" float:left;margin-top:5px;\" alt=\" Ливень\" title=\" Ливень\" >" ,
'6' => "<img src=" . $this -> patchimg . "6.gif style=\" float:left;margin-top:5px;\" alt=\" Снег\" title=\" Снег\" >" ,
'7' => "<img src=" . $this -> patchimg . "6.gif style=\" float:left;margin-top:5px;\" alt=\" Снег\" title=\" Снег\" >" ,
'8' => "<img src=" . $this -> patchimg . "8.gif style=\" float:left;margin-top:5px;\" alt=\" Гроза\" title=\" Гроза\" >" ,
'9' => "<img src=" . $this -> patchimg . "9" . ( ( $n == '0' || $n == '4' ) ?'_night' : '' ) . ".gif style=\" float:left;margin-top:5px;\" alt=\" нет данных\" title=\" нет данных\" >" ,
'10' => "<img src=" . $this -> patchimg . "10" . ( ( $n == '0' || $n == '4' ) ?'_night' : '' ) . ".gif style=\" float:left;margin-top:5px;\" alt=\" Ясно\" title=\" Ясно\" >" ) ;
return $precipitation ;
}
function arr( $out ) {
$month_array = array ( '1' => 'января' , '2' => 'февраля' , '3' => 'марта' , '4' => 'апреля' , '5' => 'мая' , '6' => 'июня' , '7' => 'июля' , '8' => 'августа' , '9' => 'сентября' , '10' => 'октября' , '11' => 'ноября' , '12' => 'декабря' ) ;
$tod = array ( '0' => 'Ночью' , '1' => 'Утром' , '2' => 'Днем' , '3' => 'Вечером' , '4' => 'Ночью' ) ; $rpower = array ( '0' => ' возможен дождь/снег' , '1' => ' дождь/снег' ) ; $spower = array ( '0' => ' возможна гроза' , '1' => ' гроза' ) ; $direction = array ( '0' => 'северный' , '1' => 'северо-восточный' , '2' => 'восточный' , '3' => 'юго-восточный' , '4' => 'южный' , '5' => 'юго-западный' , '6' => 'западный' , '7' => 'северо-западный' ) ;
$direction = array ( '0' => 'северный' , '1' => 'северо-восточный' , '2' => 'восточный' , '3' => 'юго-восточный' , '4' => 'южный' , '5' => 'юго-западный' , '6' => 'западный' , '7' => 'северо-западный' ) ;
$weekday = array ( '1' => 'воскресенье' , '2' => 'понедельник' , '3' => 'вторник' , '4' => 'среду' , '5' => 'четверг' , '6' => 'пятницу' , '7' => 'субботу' ) ;
$day1 = $out [ 1] ; //День ввиде DD
$month1 = $month_array [ ceil ( $out [ 2
] ) ] ; //День ввиде названия месяца, данные храняться в $month_array выше $tod1 = $tod [ ceil ( $out [ 5
] ) ] ; //Время суток в виде Ночь, Утро, День, Вечер, Ночь, данные храняться в $tod выше $weekday1 = $weekday [ $out [ 7] ] ; // название дня недели воскресенье, понедельник .. суббота, данные храняться в $weekday выше
$rpower1 = $rpower [ $out [ 10] ] ; //Вид осадков, данные храняться в $rpower
$spower1 = $spower [ $out [ 11] ] ; //Вид осадков, данные храняться в $spower
if ( ( $out [ 8] < 4) and ( $out [ 8] >= 0) and ( $out [ 9 ] == '10' ) ) {
$cloudiness = $this -> imgcloud ( $out [ 5] ) ; //задаём массив картинок погоды используя функцию imgcloud()
$cloudiness1 = $cloudiness [ $out [ 8] ] ; //задаём картинку
} else {
$precipitation = $this -> imgprecip ( $out [ 5] ) ; //задаём массив картинок погоды используя функцию imgprecip()
$precipitation1 = $precipitation [ $out [ 9] ] ; //задаём картинку
}
$pressureMAX1 = $out [ 12] ; //Минимальное атмосферное давление, в мм.рт.ст.
$pressureMIN1 = $out [ 13] ; //Максимальное атмосферное давление, в мм.рт.ст.
$tempMIN1 = $out [ 15] ; //Минимальная температура воздуха, в градусах Цельсия
$tempMAX1 = $out [ 14] ; //Максимальная температура воздуха, в градусах Цельсия
$windMIN1 = $out [ 16] ; //Минимальное значения средней скорости ветра, без порывов
$windMAX1 = $out [ 17] ; //Максимальное значения средней скорости ветра, без порывов
$direction1 = $direction [ $out [ 18] ] ; //направление ветра в румбах, 0 - северный, 1 - северо-восточный, и т.д., данные храняться в $direction выше
$relwenMIN1 = $out [ 20] ; //Минимальная относительная влажность воздуха, в %
$relwenMAX1 = $out [ 19] ; //Максимальная относительная влажность воздуха, в %
$heatMIN1 = $out [ 21] ; //Минимальный комфорт - температура воздуха по ощущению одетого по сезону человека, выходящего на улицу
$heatMAX1 = $out [ 22] ; //Максимальный комфорт - температура воздуха по ощущению одетого по сезону человека, выходящего на улицу
//Ниже по аналогии названы переменные изменно положение суток, т.е. можно выводить 3 положения на целые сутки, например День пятницы Вчер пятницы и Ночь субботы.
$day2 = $out [ 23] ;
$month2 = $month_array [ ceil ( $out [ 24
] ) ] ; $tod2 = $tod [ ceil ( $out [ 27
] ) ] ; $weekday2 = $weekday [ $out [ 29] ] ;
$rpower2 = $rpower [ $out [ 32] ] ;
$spower2 = $spower [ $out [ 33] ] ;
if ( ( $out [ 30] < 4) and ( $out [ 30] >= 0) and ( $out [ 31 ] == '10' ) ) {
$cloudiness = $this -> imgcloud ( $out [ 27] ) ;
$cloudiness2 = $cloudiness [ $out [ 30] ] ;
} else {
$precipitation = $this -> imgprecip ( $out [ 27] ) ;
$precipitation2 = $precipitation [ $out [ 31] ] ;
}
$pressureMIN2 = $out [ 35] ;
$pressureMAX2 = $out [ 34] ;
$tempMIN2 = $out [ 37] ;
$tempMAX2 = $out [ 36] ;
$windMIN2 = $out [ 38] ;
$windMAX2 = $out [ 39] ;
$direction2 = $direction [ $out [ 40] ] ;
$relwenMIN2 = $out [ 42] ;
$relwenMAX2 = $out [ 41] ;
$heatMIN2 = $out [ 43] ;
$heatMAX2 = $out [ 44] ;
$day3 = $out [ 45] ;
$month3 = $month_array [ ceil ( $out [ 46
] ) ] ; $tod3 = $tod [ ceil ( $out [ 49
] ) ] ; $weekday3 = $weekday [ $out [ 51] ] ;
$rpower3 = $rpower [ $out [ 54] ] ;
$spower3 = $spower [ $out [ 55] ] ;
if ( ( $out [ 52] < 4) and ( $out [ 52] >= 0) and ( $out [ 53 ] == '10' ) ) {
$cloudiness = $this -> imgcloud ( $out [ 49] ) ;
$cloudiness3 = $cloudiness [ $out [ 52] ] ;
} else {
$precipitation = $this -> imgprecip ( $out [ 49] ) ;
$precipitation3 = $precipitation [ $out [ 53] ] ;
}
$pressureMIN3 = $out [ 57] ;
$pressureMAX3 = $out [ 56] ;
$tempMIN3 = $out [ 59] ;
$tempMAX3 = $out [ 58] ;
$windMIN3 = $out [ 60] ;
$windMAX3 = $out [ 61] ;
$direction3 = $direction [ $out [ 62] ] ;
$relwenMIN3 = $out [ 64] ;
$relwenMAX3 = $out [ 63] ;
$heatMIN3 = $out [ 65] ;
$heatMAX3 = $out [ 66] ;
/*------------------------------------------------------------------------*/
$day4 = $out [ 67] ;
$month4 = $month_array [ ceil ( $out [ 68
] ) ] ; $tod4 = $tod [ ceil ( $out [ 71
] ) ] ; $weekday4 = $weekday [ $out [ 73] ] ;
$rpower4 = $rpower [ $out [ 76] ] ;
$spower4 = $spower [ $out [ 77] ] ;
if ( ( $out [ 74] < 4) and ( $out [ 74] >= 0) and ( $out [ 74 ] == '10' ) ) {
$cloudiness = $this -> imgcloud ( $out [ 71] ) ;
$cloudiness4 = $cloudiness [ $out [ 52] ] ;
} else {
$precipitation = $this -> imgprecip ( $out [ 49] ) ;
$precipitation4 = $precipitation [ $out [ 75] ] ;
}
$pressureMIN4 = $out [ 79] ;
$pressureMAX4 = $out [ 78] ;
$tempMIN4 = $out [ 81] ;
$tempMAX4 = $out [ 80] ;
$windMIN4 = $out [ 83] ;
$windMAX4 = $out [ 82] ;
$direction4 = $direction [ $out [ 84] ] ;
$relwenMIN4 = $out [ 86] ;
$relwenMAX4 = $out [ 85] ;
$heatMIN4 = $out [ 87] ;
$heatMAX4 = $out [ 88] ;
/*-------------------------------------------------*/
/*
Выможете изменить ниже строчки, добавить переменные такие как $relwenMIN1, $relwenMIN2,$relwenMIN3 и теже самые тока $relwenMAX1.. и др
Также выможете убрать переменные которые вам не нужны или изменить вид их вывода.
Данные в данном виде подойдут для вывода их по бокам сайта, т.е. в блоках.
*/
$content .= "<div style=\" border-top:1px dashed #999999;\" >" . $cloudiness1 . " " . $precipitation1 . " <span style=\" font-size:12px;\" >" . $day1 . $month1 . " в " . $weekday1 . "</span> <br /><b style=\" font-size:12px;\" >" . $tod1 . " <span title=\" комфорт " . $heatMIN1 . ".." . $heatMAX1 . "°C\" >" . $tempMIN1 . "°C..." . $tempMAX1 . "°C</span></b><br /> <span style=\" font-size:10px;\" >ветер " . $windMIN1 . "-" . $windMAX1 . "м/c " . $direction1 . "</span></div>" ;
$content .= "<div style=\" border-top:1px dashed #999999;border-bottom:1px dashed #999999;\" >" . $cloudiness2 . " " . $precipitation2 . " <span style=\" font-size:12px;\" >" . $day2 . " " . $month2 . " в " . $weekday2 . "</span> <br /><b style=\" font-size:12px;\" >" . $tod2 . " <span title=\" комфорт " . $heatMIN2 . ".." . $heatMAX2 . "°C\" >" . $tempMIN2 . "°C..." . $tempMAX2 . "°C</span></b><br /> <span style=\" font-size:10px;\" >ветер " . $windMIN2 . "-" . $windMAX2 . "м/c " . $direction2 . "</span></div>" ;
$content .= "<div style=\" border-bottom:1px dashed #999999;\" >" . $cloudiness3 . " " . $precipitation3 . " <span style=\" font-size:12px;\" >" . $day3 . " " . $month3 . " в " . $weekday3 . "</span> <br /><b style=\" font-size:12px;\" >" . $tod3 . " <span title=\" комфорт " . $heatMIN3 . ".." . $heatMAX3 . "°C\" >" . $tempMIN3 . "°C..." . $tempMAX3 . "°C</span></b><br /> <span style=\" font-size:10px;\" >ветер " . $windMIN3 . "-" . $windMAX3 . "м/c " . $direction3 . "</span></div>" ;
$content .= "<div style=\" border-bottom:1px dashed #999999;\" >" . $cloudiness4 . " " . $precipitation4 . " <span style=\" font-size:12px;\" >" . $day4 . " " . $month4 . " в " . $weekday4 . "</span> <br /><b style=\" font-size:12px;\" >" . $tod4 . " <span title=\" комфорт " . $heatMIN4 . ".." . $heatMAX4 . "°C\" >" . $tempMIN4 . "°C..." . $tempMAX4 . "°C</span></b><br /> <span style=\" font-size:10px;\" >ветер " . $windMIN4 . "-" . $windMAX4 . "м/c " . $direction4 . "</span></div>" ;
return $content ; //Выводим выше строчки
}
}
?>
(Добавление)
Некорректность работы заклычается в том, что скрипт довольно часто очень долго грузит кэш, а иногда вообще выдаёт ошибку подключения...
В чём ошибка?
(Добавление)
Все пути указаны верно и права доступа 777 выставлены, $_GET['id'] тоже указывается верно
Coder1994
Отправлено: 06 Декабря, 2010 - 15:02:48 • Тема: Умник в чате • Форум: Работа с СУБД
Ответов: 5 Просмотров: 2932
Переписал код на mysqli, бот перестал выводить подсказки, т.е:
выводит: NULL NULL
Вот код:
PHP:
скопировать код в буфер обмена
<?
$set [ 'umnik_help' ] = '30' ;
$set [ 'umnik_new' ] = '30' ;
$set [ 'umnik_time' ] = '90' ;
$umnik_last = $mysqli -> query ( "SELECT * FROM `chat_rooms`, `chat_posts` WHERE (`chat_rooms`.`umnik` = '1') ORDER BY `chat_posts`.`id` DESC" ) ;
$umnik_last = $umnik_last -> fetch_assoc ( ) ;
if ( $umnik_last != NULL && $umnik_last [ 'umnik_st' ] != 4 && $umnik_last [ 'umnik_st' ] != 0)
{
$umnik_vopros = $mysqli -> query ( "SELECT * FROM `chat_quests` WHERE `id` = '$umnik_last[vopros] ' LIMIT 1" ) ;
$umnik_vopros = $umnik_vopros -> fetch_assoc ( ) ;
$umnik_post = $mysqli -> query ( "SELECT * FROM `chat_posts` WHERE `room_id` = '$_GET[id] ' AND `text` like '%$umnik_vopros[otvet] %' AND `umnik_st` = '0' AND `time` >= '" . ( $time - $umnik_last [ 'time' ] ) . "' ORDER BY `id` ASC LIMIT 1" ) ;
$umnik_post = $umnik_post -> fetch_assoc ( ) ;
if ( $umnik_post != NULL ) {
$us = get_user( $umnik_post [ 'autor' ] ) ;
$add_credits = 0 ;
if ( $umnik_last [ 'umnik_st' ] == 1) { $add_credits = 0.5 ; $pods = 'не используя подсказок' ; }
if ( $umnik_last [ 'umnik_st' ] == 2) { $add_credits = 0.1 ; $pods = 'используя одну подсказку' ; }
if ( $umnik_last [ 'umnik_st' ] == 3) { $add_credits = 0.05 ; $pods = 'используя обе посказки' ; }
$msg = "[b]$us[nick] [/b] дал верный ответ на вопрос: [b]$umnik_vopros[vopros] [/b] $pods .<br />\n Его балланс увеличен на $add_credits кредитов.<br />\n Следующий вопрос будет через $set[umnik_new] секунд." ;
$mysqli -> query ( "INSERT INTO `chat_posts` (`autor`, `umnik_st`, `time`, `text`, `room_id`, `quests`) values('0', '4', '$time ', '$msg ', '$_GET[id] ', '$umnik_vopros[id] ')" ) ;
$mysqli -> query ( "UPDATE `users` SET `credits` = '" . ( $us [ 'credits' ] + $add_credits ) . "' WHERE `id` = '$us[id] ' LIMIT 1" ) ;
}
}
$umnik_last1 = $mysqli -> query ( "SELECT * FROM `chat_posts` WHERE `room_id` = '$_GET[id] ' AND `umnik_st` = '1' ORDER BY id DESC" ) ;
$umnik_last1 = $umnik_last1 -> fetch_assoc ( ) ;
if ( $umnik_last1 != NULL && $umnik_last [ 'umnik_st' ] != 4 && $umnik_last1 [ 'time' ] < time( ) - $set [ 'umnik_time' ] )
{
$umnik_vopros = $mysqli -> query ( "SELECT * FROM `chat_quests` WHERE `id` = '$umnik_last1[vopros] ' LIMIT 1" ) ;
$umnik_vopros = $umnik_vopros -> fetch_assoc ( ) ;
$msg = "На вопрос никто не ответил.<br />\n Правильный ответ: $umnik_vopros[otvet] .<br />\n Следующий вопрос через $set[umnik_new] секунд." ;
$mysqli -> query ( "INSERT INTO `chat_posts` (`autor`, `umnik_st`, `time`, `text`, `room_id`, `quests`) values('0', '4', '$time ', '$msg ', '$_GET[id] ', '$umnik_vopros[id] ')" ) ;
}
$umnik_last = $mysqli -> query ( "SELECT * FROM `chat_posts` WHERE `room_id` = '$_GET[id] ' AND `umnik_st` <> '0' ORDER BY id DESC" ) ;
$umnik_last = $umnik_last -> fetch_assoc ( ) ;
if ( $umnik_last == NULL || $umnik_last [ 'umnik_st' ] == 4 && $umnik_last [ 'time' ] < time( ) - $set [ 'umnik_new' ] )
{
// задается вопрос
$k_vopr = $mysqli -> query ( "SELECT * FROM `chat_quests`" ) ;
$k_vopr = $k_vopr -> num_rows ;
$umnik_vopros = $mysqli -> query ( "SELECT * FROM `chat_quests` LIMIT " . rand ( 0
, $k_vopr ) . ", 1" ) ; $umnik_vopros = $umnik_vopros -> fetch_assoc ( ) ;
$msg = "[b]Вопрос:[/b] \" $umnik_vopros[vopros] \" <br />\n [b]Ответ:[/b] слово из " . mb_strlen ( $umnik_vopros [ 'otvet' ] ) . " букв." ; $mysqli -> query ( "INSERT INTO `chat_posts` (`autor`,`umnik_st`, `time`, `text`, `room_id`, `quests`) values('0', '1', '$time ', '$msg ', '$_GET[id] ', '$umnik_vopros[id] ')" ) ;
}
if ( $umnik_last != NULL && $umnik_last [ 'umnik_st' ] == 1 && $umnik_last [ 'time' ] < time( ) - $set [ 'umnik_help' ] )
{
$umnik_vopros = $mysqli -> query ( "SELECT * FROM `chat_quests` WHERE `id` = '$umnik_last[vopros] ' LIMIT 1" ) ;
$umnik_vopros = $umnik_vopros -> fetch_assoc ( ) ;
$_SESSION [ 'rand' ] = rand ( 0
, mb_strlen ( $umnik_vopros [ 'otvet' ] ) - 1
) ; $help = '' ;
for ( $i = 0 ; $i < $_SESSION [ 'rand' ] ; $i ++ ) {
$help .= '*' ;
}
$help .= iconv_substr ( $umnik_vopros [ 'otvet' ] , $_SESSION [ 'rand' ] , 1 , 'utf-8' ) ; else
$help .= substr ( $umnik_vopros [ 'otvet' ] , $_SESSION [ 'rand' ] , 2
) ;
for ( $i = 0 ; $i < mb_strlen( $umnik_vopros [ 'otvet' ] ) - $_SESSION [ 'rand' ] ; $i ++ ) {
$help .= '*' ;
}
$msg = "[b]Вопрос:[/b] \" $umnik_vopros[vopros] \" <br />\n [b]Первая подсказка:[/b] $help (" . mb_strlen ( $umnik_vopros [ 'otvet' ] ) . " букв)" ; $mysqli -> query ( "INSERT INTO `chat_posts` (`autor`,`umnik_st`, `time`, `text`, `room_id`, `quests`) values('0', '2', '$time ', '$msg ', '$_GET[id] ', '$umnik_vopros[id] ')" ) ;
}
if ( $umnik_last != NULL && $umnik_last [ 'umnik_st' ] == 2 && $umnik_last [ 'time' ] < time( ) - $set [ 'umnik_help' ] )
{
$umnik_vopros = $mysqli -> query ( "SELECT * FROM `chat_quests` WHERE `id` = '$umnik_last[vopros] ' LIMIT 1" ) ;
$umnik_vopros = $umnik_vopros -> fetch_assoc ( ) ;
$help = '' ;
for ( $i = 0 ; $i < $_SESSION [ 'rand' ] ; $i ++ ) {
$help .= '*' ;
}
$help .= iconv_substr ( $umnik_vopros [ 'otvet' ] , $_SESSION [ 'rand' ] + 1 , 2 , 'utf-8' ) ; else
$help .= substr ( $umnik_vopros [ 'otvet' ] , $_SESSION [ 'rand' ] + 1
, 4
) ;
for ( $i = 0 ; $i < mb_strlen( $umnik_vopros [ 'otvet' ] ) - $_SESSION [ 'rand' ] - 2 ; $i ++ ) {
$help .= '*' ;
}
$msg = "[b]Вопрос:[/b] \" $umnik_vopros[vopros] \" <br />\n [b]Вторая подсказка:[/b] $help (" . mb_strlen ( $umnik_vopros [ 'otvet' ] ) . " букв)" ; $mysqli -> query ( "INSERT INTO `chat_posts` (`autor`,`umnik_st`, `time`, `text`, `room_id`, `quests`) values('0', '3', '$time ', '$msg ', '$_GET[id] ', '$umnik_vopros[id] ')" ) ;
}
?>
Coder1994
Отправлено: 05 Декабря, 2010 - 15:54:25 • Тема: Умник в чате • Форум: Работа с СУБД
Ответов: 5 Просмотров: 2932
да, я хотел бы чтобы было по другому, чтобы слово подсказывалось на 50%, то есть если в слове 8 букв,то даётся четыре подсказки...
(Добавление)
ждёмс...
Coder1994
Отправлено: 05 Декабря, 2010 - 14:49:08 • Тема: Умник в чате • Форум: Работа с СУБД
Ответов: 5 Просмотров: 2932
Один знакомый написал скрипт, бота умника в чате, но проблема в том, что при подсказке умником ответа на вопрос,он подсказывает по одной букве по порядку (вначале первую, потом вторую),а мне нужно чтобы он подсказывал случайную букву.
Вот код:
PHP:
скопировать код в буфер обмена
$set [ 'umnik_help' ] = '30' ;
$set [ 'umnik_new' ] = '30' ;
$set [ 'umnik_time' ] = '90' ;
if ( $umnik_last != NULL && $umnik_last [ 'umnik_st' ] != 4 && $umnik_last [ 'umnik_st' ] != 0)
{
$umnik_post = mysql_fetch_assoc ( mysql_query ( "SELECT * FROM `chat_posts` WHERE `chat_id` = '3' AND `msg` like '%$umnik_vopros[otvet] %' AND `umnik_st` = '0' AND `time` >= '" . ( $time - $umnik_last [ 'time' ] ) . "' ORDER BY `id` ASC LIMIT 1" ) ) ; if ( $umnik_post != NULL ) {
$add_credits = 0 ;
if ( $umnik_last [ 'umnik_st' ] == 1) { $add_credits = 0.5 ; $pods = 'не используя подсказок' ; }
if ( $umnik_last [ 'umnik_st' ] == 2) { $add_credits = 0.1 ; $pods = 'используя одну подсказку' ; }
if ( $umnik_last [ 'umnik_st' ] == 3) { $add_credits = 0.05 ; $pods = 'используя обе посказки' ; }
$msg = "[b]$inf[nick] [/b] самый первый дал верный ответ на вопрос: [b]$umnik_vopros[vopros] [/b] $pods .<br/>\n И получает $add_credits кредитов.<br/>\n Следующий вопрос будет через $set[umnik_new] сек." ;
mysql_query ( "INSERT INTO `chat_posts` (`user_id`, `umnik_st`, `time`, `msg`, `chat_id`, `vopros`) values('2', '4', '$time ', '$msg ', '3', '$umnik_vopros[id] ')" ) ; mysql_query ( "UPDATE `users` SET `credits` = '" . ( $inf [ 'credits' ] + $add_credits ) . "' WHERE `id` = '$inf[id] ' LIMIT 1" ) ; }
}
if ( $umnik_last1 != NULL && $umnik_last [ 'umnik_st' ] != 4 && $umnik_last1 [ 'time' ] < time( ) - $set [ 'umnik_time' ] )
{
$msg = "На вопрос никто не ответил.<br/>\n Правильный ответ: $umnik_vopros[otvet] .<br/>\n Следующий вопрос через $set[umnik_new] сек." ;
mysql_query ( "INSERT INTO `chat_posts` (`user_id`, `umnik_st`, `time`, `msg`, `chat_id`, `vopros`) values('2', '4', '$time ', '$msg ', '3', '$umnik_vopros[id] ')" ) ; }
if ( $umnik_last == NULL || $umnik_last [ 'umnik_st' ] == 4 && $umnik_last [ 'time' ] < time( ) - $set [ 'umnik_new' ] )
{
// задается вопрос
$msg = "[b]Вопрос:[/b] \" $umnik_vopros[vopros] \" <br/>\n [b]Ответ:[/b] слово из " . mb_strlen ( $umnik_vopros [ 'otvet' ] ) . " букв." ; mysql_query ( "INSERT INTO `chat_posts` (`user_id`,`umnik_st`, `time`, `msg`, `chat_id`, `vopros`) values('2', '1', '$time ', '$msg ', '3', '$umnik_vopros[id] ')" ) ; }
if ( $umnik_last != NULL && $umnik_last [ 'umnik_st' ] == 1 && $umnik_last [ 'time' ] < time( ) - $set [ 'umnik_help' ] )
{
else
$help = substr ( $umnik_vopros [ 'otvet' ] , 0
, 2
) ; for ( $i = $num ; $i < mb_strlen( $umnik_vopros [ 'otvet' ] ) - 1 ; $i ++ ) {
$help .= '.' ;
}
$msg = "[b]Вопрос:[/b] \" $umnik_vopros[vopros] \" <br/>\n [b]Первая подсказка:[/b] $help (" . mb_strlen ( $umnik_vopros [ 'otvet' ] ) . " букв)" ; mysql_query ( "INSERT INTO `chat_posts` (`user_id`,`umnik_st`, `time`, `msg`, `chat_id`, `vopros`) values('2', '2', '$time ', '$msg ', '3', '$umnik_vopros[id] ')" ) ; }
if ( $umnik_last != NULL && $umnik_last [ 'umnik_st' ] == 2 && $umnik_last [ 'time' ] < time( ) - $set [ 'umnik_help' ] )
{
else
$help = substr ( $umnik_vopros [ 'otvet' ] , 0
, 4
) ; for ( $i = $num ; $i < mb_strlen( $umnik_vopros [ 'otvet' ] ) - 2 ; $i ++ ) {
$help .= '.' ;
}
$msg = "[b]Вопрос:[/b] \" $umnik_vopros[vopros] \" <br/>\n [b]Вторая подсказка:[/b] $help (" . mb_strlen ( $umnik_vopros [ 'otvet' ] ) . " букв)" ; mysql_query ( "INSERT INTO `chat_posts` (`user_id`,`umnik_st`, `time`, `msg`, `chat_id`, `vopros`) values('2', '3', '$time ', '$msg ', '3', '$umnik_vopros[id] ')" ) ; }
Может кстати, вы подскажете можно ли упростить\улучшить этот код, а то мне кажется, что как-то кривовато выглядит?
(Добавление)
Что скажете?
Coder1994
Отправлено: 03 Декабря, 2010 - 20:04:10 • Тема: Определиение арбуза на PHP • Форум: Программирование на PHP
Ответов: 15 Просмотров: 1418
Нужен вывод как на 2ip.ru
(Добавление)
OrmaJever пишет: Как сечас выводит?
Как нужно что бы выводило?
(Добавление)
Как сечас выводит?
Как нужно что бы выводило?
Coder1994 пишет: Мне нужно исправить скрипт, чтобы был верный вывод.
я шаманить не умею. Сложно понять как вам нужно что бы выводило
нужен вывод как на 2ip.ru, а выводит,например оперу,как Opera 9.80
Coder1994
Отправлено: 03 Декабря, 2010 - 16:54:11 • Тема: Определиение арбуза на PHP • Форум: Программирование на PHP
Ответов: 15 Просмотров: 1418
Здравствуйте!
Написал скрипт браузера, выводит что моя версия браузера Opera 9.80, хотя моя версия - 11.00
(Добавление)
вот строка выдаваемая $_SERVER['USER_AGENT'] - Opera/9.80 (X11; Linux x86_64; U; ru) Presto/2.7.39 Version/11.00
(Добавление)
PHP:
скопировать код в буфер обмена
if ( isset ( $_SERVER [ 'HTTP_USER_AGENT' ] ) ) {
$ua = $_SERVER [ 'HTTP_USER_AGENT' ] ;
$ua = strtok ( $ua , '(' ) ; // оставляем только то, что до скобки $ua = preg_replace ( '#[^a-z_\./ 0-9\-]#iu' , null , $ua ) ; // вырезаем все "левые" символы
// Опера мини тоже посылает данные о телефоне :)
if ( isset ( $_SERVER [ 'HTTP_X_OPERAMINI_PHONE_UA' ] ) && preg_match ( '#Opera#i' , $ua ) ) {
$ua_om = $_SERVER [ 'HTTP_X_OPERAMINI_PHONE_UA' ] ;
$ua = 'Opera Mini (' . $ua_om . ')' ;
}
} else $ua = 'Нет данных' ;
В чём ошибка?
Coder1994
Отправлено: 30 Ноября, 2010 - 10:49:35 • Тема: Не выходит зарегистрироваться. • Форум: Программирование на PHP
Ответов: 17 Просмотров: 1343
этот ява-скрпит проверяет на правильность регистрации,а в частности вам мешает - url: "/service/"
Функции curl передавайте параметр REFERER, и всё должно работать.
Страниц (15): В начало « ... 6 7 8 9 [10] 11 12 13 14 ... » В конец
Powered by ExBB FM 1.0 RC1. InvisionExBB