PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (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
SAD пишет:
понял

hash[a]


теперь другая проблемка

у меня идет массив

CODE (javascript):
скопировать код в буфер обмена
  1. a[0]=value;
  2. a[1]=value1;
  3. a[2]=value2;


как тогда прописать? hash[a[0]] не работает
(Добавление)
SAD пишет:
понял

hash[a]


Все, разобрался, спасибо за помощь
miha25 Отправлено: 17 Декабря, 2015 - 21:22:26 • Тема: Прошу помощи по javascript • Форум: JavaScript & VBScript

Ответов: 6
Просмотров: 1014
SAD пишет:
вопрос непонятен


Даже не знаю как лучше объяснить ситуацию

С помощью функции ниже я получаю параметры url:

CODE (javascript):
скопировать код в буфер обмена
  1.     Hash = {
  2.             // Получаем данные из адреса
  3.             get: function() {
  4.                     var vars = {}, hash, splitter, hashes;
  5.                     if (!this.oldbrowser()) {
  6.                             var pos = window.location.href.indexOf('?');
  7.                             hashes = (pos != -1) ? decodeURIComponent(window.location.href.substr(pos + 1)) : '';
  8.                             splitter = '&';
  9.                     }
  10.                     else {
  11.                             hashes = decodeURIComponent(window.location.hash.substr(1));
  12.                             splitter = '/';
  13.                     }
  14.      
  15.                     if (hashes.length == 0) {return vars;}
  16.                     else {hashes = hashes.split(splitter);}
  17.      
  18.                     for (var i in hashes) {
  19.                             if (hashes.hasOwnProperty(i)) {
  20.                                     hash = hashes[i].split('=');
  21.                                     if (typeof hash[1] == 'undefined') {
  22.                                             vars['anchor'] = hash[0];
  23.                                     }
  24.                                     else {
  25.                                             vars[hash[0]] = hash[1];
  26.                                     }
  27.                             }
  28.                     }
  29.                     return vars;
  30.             }
  31.            
  32.     };


Для примера берем url: http://site[dot]com?value=1

Когда получаю вот так значие value:

CODE (javascript):
скопировать код в буфер обмена
  1. var hash = Hash.get();
  2. alert(hash.value); // 1


alert отображает 1, значение value из строки url

но когда получаю вот так, не напрямую прописываю название параметра(хештега), а через переменную

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var hash = Hash.get();
  3. var a = 'value';
  4. alert(hash.a); // undefined


alert отображает undefined, почему-то не понимает что нужно получить значение value из строки url
miha25 Отправлено: 17 Декабря, 2015 - 20:51:57 • Тема: Прошу помощи по javascript • Форум: JavaScript & VBScript

Ответов: 6
Просмотров: 1014
Здравствуйте!

Прошу помогите, уже голову сломал

Есть скрипт который генерирует хештеги в строке url:

CODE (javascript):
скопировать код в буфер обмена
  1. Hash = {
  2.         // Получаем данные из адреса
  3.         get: function() {
  4.                 var vars = {}, hash, splitter, hashes;
  5.                 if (!this.oldbrowser()) {
  6.                         var pos = window.location.href.indexOf('?');
  7.                         hashes = (pos != -1) ? decodeURIComponent(window.location.href.substr(pos + 1)) : '';
  8.                         splitter = '&';
  9.                 }
  10.                 else {
  11.                         hashes = decodeURIComponent(window.location.hash.substr(1));
  12.                         splitter = '/';
  13.                 }
  14.  
  15.                 if (hashes.length == 0) {return vars;}
  16.                 else {hashes = hashes.split(splitter);}
  17.  
  18.                 for (var i in hashes) {
  19.                         if (hashes.hasOwnProperty(i)) {
  20.                                 hash = hashes[i].split('=');
  21.                                 if (typeof hash[1] == 'undefined') {
  22.                                         vars['anchor'] = hash[0];
  23.                                 }
  24.                                 else {
  25.                                         vars[hash[0]] = hash[1];
  26.                                 }
  27.                         }
  28.                 }
  29.                 return vars;
  30.         }
  31.        
  32. };


C помощью функции выше я получаю параметры заданого хештега.

допустим url: http://site[dot]com?value=1

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var hash = Hash.get();
  3. alert(hash.value); // 1
  4.  


Но когда у меня переменная которой присвоен название хештега:

CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var a = 'value';
  3. alert(hash.a); // undefined
  4.  


понимаю что решение простое, но знаний не хватает, поэтому прошу помочь.
miha25 Отправлено: 20 Ноября, 2015 - 17:18:25 • Тема: Помогите ускорить запрос • Форум: SQL и Архитектура БД

Ответов: 3
Просмотров: 52
Мелкий пишет:
Очень, мягко выражаясь, странный запрос.
Дофига указаний оптимизатору для простого запроса почти наверняка будут мешать, а не помогать.
left join, но затем фильтруете по приджойненой таблицы без учёта null'ов - только мешаете и без того глупому оптимизатору работать.
С какого перепугу эти, хоть и небольшие таблицы, в 2015 году на myisam я вообще не пойму.
Про subscribe в cp1251 помолчу.

В общем, что от запроса вообще нужно?
выбрать 20 записей по дате из jb_board с учётом выбранных категорий и только те, у которых есть строки в jb_photo?
CODE (SQL):
скопировать код в буфер обмена
  1. 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
  2. FROM jb_board
  3. WHERE EXISTS (SELECT 1 FROM jb_photo WHERE jb_board.id = jb_photo.id_message)
  4. AND jb_board.id_category
  5. IN ( 398, 94, 95, 96, 97, 98, 99, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199 )
  6. ORDER BY date_add DESC
  7. 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):
скопировать код в буфер обмена
  1. jb_board        CREATE TABLE `jb_board` (
  2.  `id` int(7) NOT NULL AUTO_INCREMENT,
  3.  `id_category` smallint(3) NOT NULL,
  4.  `user_id` int(6) NOT NULL DEFAULT '0',
  5.  `type` enum('s','p','u','o','a','v','r','m') DEFAULT 'p',
  6.  `autor` varchar(30) NOT NULL,
  7.  `title` varchar(70) NOT NULL,
  8.  `email` varchar(40) NOT NULL,
  9.  `subscribe` enum('yes','no') CHARACTER SET cp1251 NOT NULL DEFAULT 'yes',
  10.  `city` text NOT NULL,
  11.  `city_id` smallint(3) NOT NULL,
  12.  `url` varchar(255) NOT NULL,
  13.  `click` smallint(6) NOT NULL DEFAULT '0',
  14.  `contacts` text NOT NULL,
  15.  `text` text NOT NULL,
  16.  `price` int(11) NOT NULL DEFAULT '1',
  17.  `price_val` text NOT NULL,
  18.  `video` varchar(128) NOT NULL,
  19.  `hits` int(11) NOT NULL DEFAULT '0',
  20.  `c_phone` int(11) NOT NULL DEFAULT '0',
  21.  `old_mess` enum('new','old') NOT NULL DEFAULT 'new',
  22.  `checked` enum('yes','no','edit','del') NOT NULL DEFAULT 'no',
  23.  `checkbox_top` smallint(1) NOT NULL DEFAULT '0',
  24.  `top_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  25.  `send_notice_vip_sms` smallint(1) NOT NULL DEFAULT '0',
  26.  `checkbox_select` smallint(1) NOT NULL DEFAULT '0',
  27.  `select_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  28.  `send_notice_select_sms` smallint(1) NOT NULL DEFAULT '0',
  29.  `tags` text NOT NULL,
  30.  `send_notice_day` smallint(1) NOT NULL DEFAULT '0',
  31.  `time_delete` smallint(6) NOT NULL DEFAULT '30',
  32.  `date_add` datetime NOT NULL,
  33.  `ip` text NOT NULL,
  34.  `gmaps` varchar(255) NOT NULL,
  35.  `cat_fields` text NOT NULL,
  36.  PRIMARY KEY (`id`),
  37.  KEY `id_category` (`id_category`),
  38.  KEY `date_add` (`date_add`),
  39.  FULLTEXT KEY `title` (`title`)
  40. ) ENGINE=MyISAM AUTO_INCREMENT=1308742 DEFAULT CHARSET=utf8 PACK_KEYS=0 CHECKSUM=1
  41.  


и

CODE (SQL):
скопировать код в буфер обмена
  1. jb_photo        CREATE TABLE `jb_photo` (
  2.  `id_photo` int(6) NOT NULL AUTO_INCREMENT,
  3.  `id_message` int(8) NOT NULL DEFAULT '0',
  4.  `photo_name` varchar(255) NOT NULL,
  5.  `date` text NOT NULL,
  6.  PRIMARY KEY (`id_photo`),
  7.  KEY `photo_name` (`photo_name`),
  8.  KEY `id_message` (`id_message`)
  9. ) ENGINE=MyISAM AUTO_INCREMENT=951960 DEFAULT CHARSET=utf8


есть запрос который отрабатывает очень медленно больше 1.5 сек

CODE (SQL):
скопировать код в буфер обмена
  1. 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
  2. FROM jb_board
  3. USE INDEX ( date_add )
  4. LEFT JOIN jb_photo ON jb_board.id = jb_photo.id_message
  5. WHERE jb_photo.photo_name != ''
  6. AND old_mess = 'old'
  7. AND jb_board.id_category
  8. IN ( 398, 94, 95, 96, 97, 98, 99, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199 )
  9. AND jb_board.id_category !=405
  10. ORDER BY date_add DESC
  11. 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):
скопировать код в буфер обмена
  1.  $('#btn1').live('click', function() {
  2.             $.ajax({
  3.                 type: 'GET',
  4.                 url: 'http://buysell.com.ua/core/search_inlist.php',
  5.                 data: $(this).attr('href').split('?')[1] + '&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>',
  6.                success: function(data) {
  7.                    $('#results').html(data);
  8.                 }
  9.             });
  10.                
  11.             return false;
  12.         });


вот так оставил, все равно картина не меняется, такое ощущение как будто бы он накапливает запросы и начинает тормозить
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):
скопировать код в буфер обмена
  1. $(document.body).on('click', '#btn1', function() {
  2.         $.ajax({
  3.             type: 'GET',
  4.             url: 'http://site.com/core/search_inlist.php',
  5.             data: $(this).attr('href').split('?')[1] + '&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>',
  6.             success: function(data) {
  7.                 $('#results').html(data);
  8.             }
  9.         });
  10.            
  11.         return false;
  12.     });


чтобы без live

уберите скролл и посмотрите, тормозит ли


без live я не могу проверить, так как если использовать on, тогда открывается только первая страница и ajax показываете результат, когда хочу открыть вторую страницу, ajax уже не срабатывает, и просто перехожу как по обычной ссылке, страница перезагружается

без live ajax не получает наверное переменных, и поэтому перестает работать
miha25 Отправлено: 02 Ноября, 2015 - 21:53:49 • Тема: Помогите разобратся с ajax • Форум: JavaScript & VBScript

Ответов: 24
Просмотров: 2463
SAD пишет:
CODE (javascript):
скопировать код в буфер обмена
  1. function sctop() {
  2.         $('body,html').animate({
  3.             scrollTop: 0
  4.         }, 800);
  5.     };
  6.      
  7.     $(document.body)
  8.     .ajaxStart(function() {
  9.         sctop();
  10.         NProgress.start();
  11.         //$('#results').fadeOut("slow");
  12.         $('#preloader').attr('id', 'preloaderno'); // что за бред?
  13.     })
  14.     .ajaxComplete(function() {
  15.         //$('#results').fadeIn("slow");
  16.            
  17.             NProgress.done(); // имхо, оно должно тут быть
  18.            
  19.         $('#preloaderno').attr('id', 'preloader'); // что за бред ? используйте классы
  20.     });
  21.      
  22.     $('#btn1').on('click', function() {
  23.         $.ajax({
  24.             type: 'GET',
  25.             url: 'http://site.com/core/search_inlist.php',
  26.             data: $(this).attr('href').split('?')[1] + '&cattitle_nc=<?=$cattitle_nc?>&cityforcat=<?=$cityforcat?>',
  27.             success: function(data) {
  28.                 $('#results').html(data);
  29.             }
  30.         });
  31.            
  32.         return false;
  33.     });


поправил


теперь работает вместе с скролом, но только один раз(на следующую страницу), дальше переходит как по обычной ссылке, ajax не отрабатывает, если меняю on('click', function() { на live('click', function() {, тогда переходит и на следующую но остается проблема таже что и была с подвисанием после скрола вверх, вот еще добавлю код самой кнопки

PHP:
скопировать код в буфер обмена
  1. if($total_rows>=$lp){
  2.                                 $a="<a id=\"btn1\" href=\"".$h."?op=search";
  3.                                 if(@$data_from_pag!="")$a.="&query=".@$data_from_pag;
  4.                                 if(@$_GET['l'])$a.="&l=".$_GET['l'];
  5.                                 if(@$_GET['nomorph'])$a.="&nomorph=".@$_GET['nomorph'];
  6.                                 if(@$_GET['cat'])$a.="&cat=".@$_GET['cat'];
  7.                                 if(@$_GET['type'])$a.="&type=".@$_GET['type'];
  8.                                 if(@$_GET['images'])$a.="&images=".@$_GET['images'];
  9.                                 if(@$_GET['city'])$a.="&city=".@$_GET['city'];
  10.                                 if(@$_GET['from'])$a.="&from=".@$_GET['from'];
  11.                                 if(@$_GET['before'])$a.="&before=".@$_GET['before'];
  12.                                 if(@$_GET['time'])$a.="&time=".@$_GET['time'];
  13.                                 $a.="&page=";
  14.                                 if($page!=1)$pervpage=$a."1\" title=\"".$lang[174]."\">&nbsp;&nbsp;«&nbsp;&nbsp;</a> ";
  15.                                 if($page!=$total)$nextpage=$a.$total."\" title=\"".$lang[175]."\">&nbsp;&nbsp;»&nbsp;&nbsp;</a>";              
  16.                                 $pageleft="";$pageright="";
  17.                                 for($i=$c['limit_pagination_on_page'];$i>=1;$i--)if($page-$i>0)$pageleft.=$a.($page-$i)."\">".($page-$i)."</a>";
  18.                                 for($i=1;$i<=$c['limit_pagination_on_page'];$i++)if($page+$i<=$total)$pageright.=$a.($page+$i)."\">".($page+$i)."</a>";
  19.                                 echo "<ul class=\"pagination\"><li>".@$pervpage.@$pageleft."<span class=\"active_page\">".$page."</span>".@$pageright.@$nextpage."</li></ul>";
  20.                                
  21.                 }

Страниц (2): [1] 2 »
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB