PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Страниц (2): [1] 2 »
Найдено сообщений: 20
miha25
Отправлено: 01 Февраля, 2016 - 15:29:10 • Тема: Помогите с регуляркой в htacces • Форум: Регулярные выражения
Ответов: 0 Просмотров: 181
Здравствуйте, помогите написать правильное регулярное выражение в htacces
У меня прописано такое правило
RewriteRule ^search/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/$ inex.php?val=$1&val1=$2&val2=$3
Оно работает нормально, но мне нужно чтобы когда в строке, а именно в val2 есть слово "page" срабатывало не это правило, а следующее:
RewriteRule ^search/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/page-([0-9]+)/$ index.php?val=$1&val1=$2&page=$3
Пробовал вот так прописать первое правило
RewriteRule ^search/([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)/(^[?!.*page]+[a-zA-Z0-9_-]+)/$ inex.php?val=$1&val1=$2&val2=$3
но не получатся, искючает только символы p,a,g,e, а мне нужно чтобы слово page, подскажите возможно ли так сделать?
Заранее спасибо.
miha25
Отправлено: 17 Декабря, 2015 - 22:20:26 • Тема: Прошу помощи по javascript • Форум: JavaScript & VBScript
Ответов: 6 Просмотров: 1014
SAD пишет: не работает - мне ничего не говорит. какая ошибка в консоли браузера?
value - это у Вас другая переменная или строка, которую Вы не обрамили кавычками?
Спасибо за помощь, разобрался, все заработало, чтобы я без Вас делал.
miha25
Отправлено: 17 Декабря, 2015 - 22:12:33 • Тема: Прошу помощи по javascript • Форум: JavaScript & VBScript
Ответов: 6 Просмотров: 1014
теперь другая проблемка
у меня идет массив
как тогда прописать? hash[a[0]] не работает
(Добавление)
Все, разобрался, спасибо за помощь
miha25
Отправлено: 17 Декабря, 2015 - 21:22:26 • Тема: Прошу помощи по javascript • Форум: JavaScript & VBScript
Ответов: 6 Просмотров: 1014
SAD пишет: вопрос непонятен
Даже не знаю как лучше объяснить ситуацию
С помощью функции ниже я получаю параметры url:
CODE (
javascript ):
скопировать код в буфер обмена
Hash = {
// Получаем данные из адреса
get: function ( ) {
var vars = { } , hash, splitter, hashes;
if ( ! this .oldbrowser ( ) ) {
var pos = window.location .href .indexOf ( '?' ) ;
hashes = ( pos != - 1 ) ? decodeURIComponent( window.location .href .substr ( pos + 1 ) ) : '' ;
splitter = '&' ;
}
else {
hashes = decodeURIComponent( window.location .hash .substr ( 1) ) ;
splitter = '/' ;
}
if ( hashes.length == 0) { return vars; }
else { hashes = hashes.split ( splitter) ; }
for ( var i in hashes) {
if ( hashes.hasOwnProperty ( i) ) {
hash = hashes[ i] .split ( '=' ) ;
if ( typeof hash[ 1 ] == 'undefined' ) {
vars[ 'anchor' ] = hash[ 0] ;
}
else {
vars[ hash[ 0] ] = hash[ 1] ;
}
}
}
return vars;
}
} ;
Для примера берем url: http://site[dot]com?value=1
Когда получаю вот так значие value:
alert отображает 1, значение value из строки url
но когда получаю вот так, не напрямую прописываю название параметра(хештега), а через переменную
alert отображает undefined, почему-то не понимает что нужно получить значение value из строки url
miha25
Отправлено: 17 Декабря, 2015 - 20:51:57 • Тема: Прошу помощи по javascript • Форум: JavaScript & VBScript
Ответов: 6 Просмотров: 1014
Здравствуйте!
Прошу помогите, уже голову сломал
Есть скрипт который генерирует хештеги в строке url:
CODE (
javascript ):
скопировать код в буфер обмена
Hash = {
// Получаем данные из адреса
get: function ( ) {
var vars = { } , hash, splitter, hashes;
if ( ! this .oldbrowser ( ) ) {
var pos = window.location .href .indexOf ( '?' ) ;
hashes = ( pos != - 1 ) ? decodeURIComponent( window.location .href .substr ( pos + 1 ) ) : '' ;
splitter = '&' ;
}
else {
hashes = decodeURIComponent( window.location .hash .substr ( 1) ) ;
splitter = '/' ;
}
if ( hashes.length == 0) { return vars; }
else { hashes = hashes.split ( splitter) ; }
for ( var i in hashes) {
if ( hashes.hasOwnProperty ( i) ) {
hash = hashes[ i] .split ( '=' ) ;
if ( typeof hash[ 1 ] == 'undefined' ) {
vars[ 'anchor' ] = hash[ 0] ;
}
else {
vars[ hash[ 0] ] = hash[ 1] ;
}
}
}
return vars;
}
} ;
C помощью функции выше я получаю параметры заданого хештега.
допустим url: http://site[dot]com?value=1
Но когда у меня переменная которой присвоен название хештега:
понимаю что решение простое, но знаний не хватает, поэтому прошу помочь.
miha25
Отправлено: 20 Ноября, 2015 - 17:18:25 • Тема: Помогите ускорить запрос • Форум: SQL и Архитектура БД
Ответов: 3 Просмотров: 52
Мелкий пишет: Очень, мягко выражаясь, странный запрос.
Дофига указаний оптимизатору для простого запроса почти наверняка будут мешать, а не помогать.
left join, но затем фильтруете по приджойненой таблицы без учёта null'ов - только мешаете и без того глупому оптимизатору работать.
С какого перепугу эти, хоть и небольшие таблицы, в 2015 году на myisam я вообще не пойму.
Про subscribe в cp1251 помолчу.
В общем, что от запроса вообще нужно?
выбрать 20 записей по дате из jb_board с учётом выбранных категорий и только те, у которых есть строки в jb_photo?
CODE (
SQL ):
скопировать код в буфер обмена
SELECT jb_board. id AS board_id, DATE_FORMAT( jb_board. date_add, '%d.%m.%Y' ) AS dateAdd, jb_board. id_category, jb_board. title, jb_board. price, jb_board. price_val, jb_board. city
FROM jb_board
WHERE EXISTS ( SELECT 1 FROM jb_photo WHERE jb_board. id = jb_photo. id_message)
AND jb_board. id_category
IN ( 398, 94, 95, 96, 97, 98, 99, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199 )
ORDER BY date_add DESC
LIMIT 0 , 20
Возможно, имеет смысл вынести в jb_board булево поле, существуют ли для этой записи строки в jb_photo.
Здравствуйте, да нужно выбрать 20 записей по дате из jb_board с учётом выбранных категорий и только те, у которых есть строки в jb_photo, что касается вынести в jb_board булево поле, я к сожалению чайник в этом деле, поэтому не пойму о чем Вы
Спасибо Вам большое за помощь, поставил Ваш запрос, отрабатывает за 0.0044, супер.
Подскажите, а что Вы имели ввиду когда писали
С какого перепугу эти, хоть и небольшие таблицы, в 2015 году на myisam я вообще не пойму.
объясните пожалуйста если не трудно
miha25
Отправлено: 20 Ноября, 2015 - 16:30:28 • Тема: Помогите ускорить запрос • Форум: SQL и Архитектура БД
Ответов: 3 Просмотров: 52
Здравствуйте!
Есть две таблицы на 500000 записей:
CODE (
SQL ):
скопировать код в буфер обмена
jb_board CREATE TABLE `jb_board` (
`id` int( 7) NOT NULL AUTO_INCREMENT ,
`id_category` smallint( 3) NOT NULL ,
`user_id` int( 6) NOT NULL DEFAULT '0' ,
`type` enum( 's' , 'p' , 'u' , 'o' , 'a' , 'v' , 'r' , 'm' ) DEFAULT 'p' ,
`autor` varchar( 30) NOT NULL ,
`title` varchar( 70) NOT NULL ,
`email` varchar( 40) NOT NULL ,
`subscribe` enum( 'yes' , 'no' ) CHARACTER SET cp1251 NOT NULL DEFAULT 'yes' ,
`city` text NOT NULL ,
`city_id` smallint( 3) NOT NULL ,
`url` varchar( 255) NOT NULL ,
`click` smallint( 6) NOT NULL DEFAULT '0' ,
`contacts` text NOT NULL ,
`text` text NOT NULL ,
`price` int( 11) NOT NULL DEFAULT '1' ,
`price_val` text NOT NULL ,
`video` varchar( 128) NOT NULL ,
`hits` int( 11) NOT NULL DEFAULT '0' ,
`c_phone` int( 11) NOT NULL DEFAULT '0' ,
`old_mess` enum( 'new' , 'old' ) NOT NULL DEFAULT 'new' ,
`checked` enum( 'yes' , 'no' , 'edit' , 'del' ) NOT NULL DEFAULT 'no' ,
`checkbox_top` smallint( 1) NOT NULL DEFAULT '0' ,
`top_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`send_notice_vip_sms` smallint( 1) NOT NULL DEFAULT '0' ,
`checkbox_select` smallint( 1) NOT NULL DEFAULT '0' ,
`select_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`send_notice_select_sms` smallint( 1) NOT NULL DEFAULT '0' ,
`tags` text NOT NULL ,
`send_notice_day` smallint( 1) NOT NULL DEFAULT '0' ,
`time_delete` smallint( 6) NOT NULL DEFAULT '30' ,
`date_add` datetime NOT NULL ,
`ip` text NOT NULL ,
`gmaps` varchar( 255) NOT NULL ,
`cat_fields` text NOT NULL ,
PRIMARY KEY ( `id` ) ,
KEY `id_category` ( `id_category` ) ,
KEY `date_add` ( `date_add` ) ,
FULLTEXT KEY `title` ( `title` )
) ENGINE= MyISAM AUTO_INCREMENT = 1308742 DEFAULT CHARSET= utf8 PACK_KEYS= 0 CHECKSUM= 1
и
CODE (
SQL ):
скопировать код в буфер обмена
jb_photo CREATE TABLE `jb_photo` (
`id_photo` int( 6) NOT NULL AUTO_INCREMENT ,
`id_message` int( 8) NOT NULL DEFAULT '0' ,
`photo_name` varchar( 255) NOT NULL ,
`date` text NOT NULL ,
PRIMARY KEY ( `id_photo` ) ,
KEY `photo_name` ( `photo_name` ) ,
KEY `id_message` ( `id_message` )
) ENGINE= MyISAM AUTO_INCREMENT = 951960 DEFAULT CHARSET= utf8
есть запрос который отрабатывает очень медленно больше 1.5 сек
CODE (
SQL ):
скопировать код в буфер обмена
SELECT STRAIGHT_JOIN DISTINCT jb_board. id AS board_id, DATE_FORMAT( jb_board. date_add, '%d.%m.%Y' ) AS dateAdd, jb_board. id_category, jb_board. title, jb_board. price, jb_board. price_val, jb_board. city
FROM jb_board
USE INDEX ( date_add )
LEFT JOIN jb_photo ON jb_board. id = jb_photo. id_message
WHERE jb_photo. photo_name != ''
AND old_mess = 'old'
AND jb_board. id_category
IN ( 398, 94, 95, 96, 97, 98, 99, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199 )
AND jb_board. id_category != 405
ORDER BY date_add DESC
LIMIT 0 , 20
если убрать ORDER by date_add, все просто летает, с ним тормозит, перелопатил много инфы, но так и не смог решить проблему
вот EXPLAIN запроса
на знаю как правильно его сюда вставить поэтому прикрепил скрин EXPLAIN
Помогите пожалуйста разобраться
miha25
Отправлено: 02 Ноября, 2015 - 23:10:16 • Тема: Помогите разобратся с ajax • Форум: JavaScript & VBScript
Ответов: 24 Просмотров: 2463
SAD пишет: <script language="javascript" type="text/javascript">
jQuery.noConflict();
(function($) {
$(function() {
function sctop() {
$('body,html').animate({
scrollTop: 0
}, 800);
return false;
};
$('#btn1').live('click', function(){
$("#results").ajaxStart(function(){
sctop();
NProgress.start();
//$('#results').fadeOut("slow");
$('#preloader').attr('id', 'preloaderno');
return false;
});
$("#results").ajaxComplete(function(){
//$('#results').fadeIn("slow");
$('#preloaderno').attr('id', 'preloader');
return false;
});
var params = $(this).attr('href').split('?');
$.ajax({
type: 'GET',
url: 'http://buysell.com.ua/core/search_inlist.php',
data: params[1]+'&cattitle_nc=Транспорт&cityforcat= в Украине',
success: function(data) {
$('#results').html(data);
}
});
return false;
});
NProgress.done();
})})(jQuery_1_8_3);
</script>
(Добавление)
только эти переменные Вам нужно где - то получать. возможно, на на бэкенде у Вас будет доступ к ним и их не нужно будет передавать
'&cattitle_nc=Транспорт&cityforcat= в Украине'
спасибо, перенес вроде передаются все переменные, работать стало гораздо лучше, но маленькие подвисания все же остались
(Добавление)
SAD, большое Вам спасибо, Вы мне очень помогли, поставил тот код который Вы подредактировали в самом, теперь вообще все работает идеально, спасибо
miha25
Отправлено: 02 Ноября, 2015 - 22:54:40 • Тема: Помогите разобратся с ajax • Форум: JavaScript & VBScript
Ответов: 24 Просмотров: 2463
SAD пишет: почему - то я не удивлен. а Вы не пробовали вынести js код в файл и подключить его в head ??
у Вас каждый раз подгружается один и тот же код. и вешаются раз за разом обработчики
я извиняюсь ,а какой код нужно вывести в отдельный файл?
miha25
Отправлено: 02 Ноября, 2015 - 22:45:55 • Тема: Помогите разобратся с ajax • Форум: JavaScript & VBScript
Ответов: 24 Просмотров: 2463
SAD пишет: на реальном примере можно глянуть?
вверху есть поиск, забиваете туда слово, допустим lanos, отображаются объявления, и внизу пагинация
miha25
Отправлено: 02 Ноября, 2015 - 22:33:27 • Тема: Помогите разобратся с ajax • Форум: JavaScript & VBScript
Ответов: 24 Просмотров: 2463
SAD пишет: странная у вас пагинация какая - то все равно. а что приходит в data ?
пагинация бала написана не для ajax, это была обычная пагинация, это я немножко переделал ее, в дата приходят условия для выборки из базы, и номер страницы
я вот думаю а ничего что ajax шлет запросы на одну и ту же страницу, ведь весь код находится в одном файле search_inlist.php, обычно же делают в одном файле ajax и другой файл обработчик
miha25
Отправлено: 02 Ноября, 2015 - 22:26:13 • Тема: Помогите разобратся с ajax • Форум: JavaScript & VBScript
Ответов: 24 Просмотров: 2463
SAD пишет: значит, причина не в скролле. ищите. уберите сначала NProgress.start(); и NProgress.done();
CODE (
htmlphp ):
скопировать код в буфер обмена
$('#btn1').live('click', function() {
$.ajax({
type: 'GET',
url: 'http://buysell.com.ua/core/search_inlist.php',
data: $(this).attr('href').split('?')[1] + '&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>',
success: function(data) {
$('#results').html(data);
}
});
return false;
});
вот так оставил, все равно картина не меняется, такое ощущение как будто бы он накапливает запросы и начинает тормозить
miha25
Отправлено: 02 Ноября, 2015 - 22:14:19 • Тема: Помогите разобратся с ajax • Форум: JavaScript & VBScript
Ответов: 24 Просмотров: 2463
SAD пишет: ладно, с live тормозит или нет, если убрать скролл?
до 5 страницы отрабатывает вообще быстро, с 6 уже начинает медленнее, на 11 вообще тормозит ужасно
miha25
Отправлено: 02 Ноября, 2015 - 22:04:24 • Тема: Помогите разобратся с ajax • Форум: JavaScript & VBScript
Ответов: 24 Просмотров: 2463
SAD пишет: CODE (
javascript ):
скопировать код в буфер обмена
$( document.body ) .on ( 'click' , '#btn1' , function ( ) {
$.ajax ( {
type : 'GET' ,
url: 'http://site.com/core/search_inlist.php' ,
data: $( this ) .attr ( 'href' ) .split ( '?' ) [ 1 ] + '&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>' ,
success: function ( data) {
$( '#results' ) .html ( data) ;
}
} ) ;
return false ;
} ) ;
чтобы без live
уберите скролл и посмотрите, тормозит ли
без live я не могу проверить, так как если использовать on, тогда открывается только первая страница и ajax показываете результат, когда хочу открыть вторую страницу, ajax уже не срабатывает, и просто перехожу как по обычной ссылке, страница перезагружается
без live ajax не получает наверное переменных, и поэтому перестает работать
miha25
Отправлено: 02 Ноября, 2015 - 21:53:49 • Тема: Помогите разобратся с ajax • Форум: JavaScript & VBScript
Ответов: 24 Просмотров: 2463
SAD пишет: CODE (
javascript ):
скопировать код в буфер обмена
function sctop( ) {
$( 'body,html' ) .animate ( {
scrollTop: 0
} , 800) ;
} ;
$( document.body )
.ajaxStart ( function ( ) {
sctop( ) ;
NProgress.start ( ) ;
//$('#results').fadeOut("slow");
$( '#preloader' ) .attr ( 'id' , 'preloaderno' ) ; // что за бред?
} )
.ajaxComplete ( function ( ) {
//$('#results').fadeIn("slow");
NProgress.done ( ) ; // имхо, оно должно тут быть
$( '#preloaderno' ) .attr ( 'id' , 'preloader' ) ; // что за бред ? используйте классы
} ) ;
$( '#btn1' ) .on ( 'click' , function ( ) {
$.ajax ( {
type : 'GET' ,
url: 'http://site.com/core/search_inlist.php' ,
data: $( this ) .attr ( 'href' ) .split ( '?' ) [ 1 ] + '&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>' ,
success: function ( data) {
$( '#results' ) .html ( data) ;
}
} ) ;
return false ;
} ) ;
поправил
теперь работает вместе с скролом, но только один раз(на следующую страницу), дальше переходит как по обычной ссылке, ajax не отрабатывает, если меняю on('click', function() { на live('click', function() {, тогда переходит и на следующую но остается проблема таже что и была с подвисанием после скрола вверх, вот еще добавлю код самой кнопки
PHP:
скопировать код в буфер обмена
if ( $total_rows >= $lp ) {
$a = "<a id=\" btn1\" href=\" " . $h . "?op=search" ;
if ( @ $data_from_pag != "" ) $a .= "&query=" .@ $data_from_pag ;
if ( @ $_GET [ 'l' ] ) $a .= "&l=" . $_GET [ 'l' ] ;
if ( @ $_GET [ 'nomorph' ] ) $a .= "&nomorph=" .@ $_GET [ 'nomorph' ] ;
if ( @ $_GET [ 'cat' ] ) $a .= "&cat=" .@ $_GET [ 'cat' ] ;
if ( @ $_GET [ 'type' ] ) $a .= "&type=" .@ $_GET [ 'type' ] ;
if ( @ $_GET [ 'images' ] ) $a .= "&images=" .@ $_GET [ 'images' ] ;
if ( @ $_GET [ 'city' ] ) $a .= "&city=" .@ $_GET [ 'city' ] ;
if ( @ $_GET [ 'from' ] ) $a .= "&from=" .@ $_GET [ 'from' ] ;
if ( @ $_GET [ 'before' ] ) $a .= "&before=" .@ $_GET [ 'before' ] ;
if ( @ $_GET [ 'time' ] ) $a .= "&time=" .@ $_GET [ 'time' ] ;
$a .= "&page=" ;
if ( $page != 1) $pervpage = $a . "1\" title=\" " . $lang [ 174 ] . "\" > « </a> " ;
if ( $page != $total ) $nextpage = $a . $total . "\" title=\" " . $lang [ 175 ] . "\" > » </a>" ;
$pageleft = "" ; $pageright = "" ;
for ( $i = $c [ 'limit_pagination_on_page' ] ; $i >= 1 ; $i -- ) if ( $page - $i > 0) $pageleft .= $a . ( $page - $i ) . "\" >" . ( $page - $i ) . "</a>" ;
for ( $i = 1 ; $i <= $c [ 'limit_pagination_on_page' ] ; $i ++ ) if ( $page + $i <= $total ) $pageright .= $a . ( $page + $i ) . "\" >" . ( $page + $i ) . "</a>" ;
echo "<ul class=\" pagination\" ><li>" .@ $pervpage .@ $pageleft . "<span class=\" active_page\" >" . $page . "</span>" .@ $pageright .@ $nextpage . "</li></ul>" ;
}
Страниц (2): [1] 2 »
Powered by ExBB FM 1.0 RC1. InvisionExBB