PHP.SU

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

Страниц (98): В начало « ... 3 4 5 6 [7] 8 9 10 11 ... » В конец

> Найдено сообщений: 1465
teddy Отправлено: 22 Декабря, 2014 - 21:08:18 • Тема: MVC • Форум: Программирование на PHP

Ответов: 9
Просмотров: 659
juramaj пишет:
Кто знает, как мне с модели передать переменную о предупреждении например "Нет данной статьи"

Не нужно это передать из модели.
Нужно опираться на результат которую вернет модель.
К примеру если метод модели вернул false, значит записей нет и плясать дальше от этого.

juramaj пишет:
сё что возвращает метод модели в контроллере складывается в $data

Передайте эту $data во view. А при выводе можно уже сделать приблизительно такую весч:

PHP:
скопировать код в буфер обмена
  1. if(!$data) {
  2.     echo 'Нечего показывать';
  3. }else{
  4.    
  5.     foreach($data as $key=>$value) {
  6.         //some output
  7.     }
  8. }
teddy Отправлено: 22 Декабря, 2014 - 21:00:42 • Тема: фильтр для ИМ • Форум: HTTP и PHP

Ответов: 8
Просмотров: 1722
bekpasov пишет:
Структуру читал, сделал как многие советуют. Но дальше не пойму что делать

Где читали? Я не знаю, как Вам советовали многие и не имею представления что у Вас есть а чего нет.

bekpasov пишет:
мне нужно, чтобы при нажатии чекбокса вылезло небольшое сообщение (к примеру, "Найдено 5 -> Выбрать")

Значит нужно сделать запрос на COUNT записей с учетом использованных фильтров и показать результат пользователю.

bekpasov пишет:
Потом, если пользователь выбрал еще чекбокс, то его прибавить в запрос.

Если опции лежат в разных таблицах, то можно джойнить соответствующие таблицы по условию + добавить условие фильтрации для набора выбранных чекбоксов. Что то типа

PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['colors'])) {
  2.    
  3.      $joins .= 'JOIN `product_colors` AS `pc` ON `pc`.`product_id` = `products`.`id`';
  4.      $joins .= 'JOIN `colors` AS `c` ON `c`.`id` = `pc'.`color_id`;
  5.      $condition .= 'WHERE `c`.`id` IN(те айдишки которые в чекбоксах для цветов) ';
  6. }

Приблизительно так. Если же опции хранятся в одной таблице тогда можно джойнить её под различными псевдонимами по вышерасписанному принципу.

ЗЫ: Не знаю Вашу структуру, но надеюсь хоть что то извлечете из примеров.
teddy Отправлено: 22 Декабря, 2014 - 20:18:48 • Тема: фильтр для ИМ • Форум: HTTP и PHP

Ответов: 8
Просмотров: 1722
bekpasov пишет:
структуру все сделал

Вы бы эту самую структуру привели, что бы народ знал на что опираться когда будет помогать(возможно).

bekpasov пишет:
Осталось выполнить запрос

Какой запрос? В какие таблицы? Без структуры Вам вряд ли чем то помогут.

bekpasov пишет:
Насколько понимаю нужен ajax

Неверно понимаете. ajax не имеет никакого отношения к фильтру ИМ. Почитайте, что это такое.

Да и глупо было бы использовать ajax при фильтрации продуктов. В таком случае пользователь не сможет дать ссылку другу на заранее отфильтрованный набор товаров.

И вот ещё что замечу, задача сложная и не для новичка, особенно если фильтр должен быть достаточно умным.
Если практикуетесь - пока оставьте эу задачу и попробуйте что нибудь проще.
teddy Отправлено: 17 Декабря, 2014 - 23:46:09 • Тема: Самопис для форума • Форум: Колонка администратора

Ответов: 203
Просмотров: 52749
DeepVarvar пишет:
Без создания экземпляра не выделяется дополнительная память.

Хм тогда проще писать в процедурном стиле )) Как по мне - то лучше в целом пусть отожрется на 2 метра больше за то в угоду удобства и гибкости

DeepVarvar пишет:
Почему редиректить должен контроллер? По мне так он должен отработать свою логику, и если ему надо, позвать Request::redirect()

Так реквест же это не редиректор какой нить. Реквест, запрос. Завтра тебе понадобится сделать редирект по имени роута его тоже в реквест оформишь или пойдешь переписывать все двигло где ты вызывал Request::redirect() ? Или нет, дай угадаю, редирект оставишь в реквесте а для роут-редиректа придумаешь что то ещё))

DeepVarvar пишет:
Это должен решать роутер?

А у тебя есть такой роут? Думаю нет... там же пользователь и получит заветный Not found

Порой экономия на спичках дорого обходится поверь
teddy Отправлено: 17 Декабря, 2014 - 23:04:32 • Тема: Самопис для форума • Форум: Колонка администратора

Ответов: 203
Просмотров: 52749
DeepVarvar пишет:
Экземпляр не создается, все методы статические.

А зачем столько статики? В чем ты видишь плюс такого подхода?

DeepVarvar пишет:
это конечный автомат устанавливающий некоторые внутренние состояния.

И это плохо. Есть куча зависимостей. Я не смогу скопировать к себе в проект этот класс не изменив его код. Связи должны быть как можно слабыми. В идеале должна быть возможность скопипастить твой реквест в другой проект и чтоб совсем без правок.

DeepVarvar пишет:
Ну, ради трехстрочного метода создавать еще один класс, как-то не то. Пусть в реквесте пока лежит.

А чего сразу класс если нужно по простому - опиши в базовом контроллере метод редирект и все дела

DeepVarvar пишет:
Проверь-ка это в CLI режиме ))

А можно подумать на форум через CLI будут ходить Улыбка

DeepVarvar пишет:
Request это конечный автомат устанавливающий некоторые внутренние состояния.

Ключевое слово "внутренние". Опять же зависимости что не есть гуд.

DeepVarvar пишет:
Есть ли смысл работать дальше, если запрос клиента невалиден?

Думаю это должен решать роутер.
teddy Отправлено: 17 Декабря, 2014 - 22:42:45 • Тема: Самопис для форума • Форум: Колонка администратора

Ответов: 203
Просмотров: 52749
Пробежался по классу Request и вот что не понравилось

1. Экземпляр класса Request на мой взгляд должен предоставлять доступ к данным которые пришли с запросом пользователя/бота(пофиг).
2. public static function init() - Соответственно Request не должен ничего инициализировать. Если нужно что то проинициализировать - это надо описать вне этого класса + не понравился доступ к объекту через публичное свойство в методе init(лучше методом-геттером а свойство - приватным).
3. public static function redirect($destination) редиректить Реквест тоже никого не должен. Это скорее плагин контроллера чем часть реквеста
4. public static function isPost() тут у тебя есть такая штука isset($_POST) и зря. $_POST всегда isset, даже когда ты сделал запрос методом GET.
5. private static function _storeClientInfo() тоже фтопку. Реквест ничего сторить не должен
6. _preValidateRequest и валидировать тоже. Все таки это не валидатор а реквест(см пункт 1)

Остальное пока не смотрел. Времени совсем нету...

P.S: смотрел достаточно бегло, возможно упустил что то ещё.
teddy Отправлено: 30 Ноября, 2014 - 18:47:24 • Тема: Уникальная идентификация DOM-узлов • Форум: JavaScript & VBScript

Ответов: 8
Просмотров: 1208
В хроме ИЕ и файрфокс на виндоус 7

Ну вот)
teddy Отправлено: 30 Ноября, 2014 - 18:30:27 • Тема: Уникальная идентификация DOM-узлов • Форум: JavaScript & VBScript

Ответов: 8
Просмотров: 1208
DeepVarvar пишет:
Этот свинарник на самый крайний вариант.

Думаю ты преувеличиваешьУлыбка Вполне нормальная практика. Не вижу ничего плохого в кастомных атрибутах если они действительно нужны, как сейчас, например.

Как говорится, дешево и сердито.
(Добавление)
DeepVarvar пишет:
Да, еще не проверял. Чую что вернет новый элемент.

неверно чуешь Улыбка
teddy Отправлено: 30 Ноября, 2014 - 17:31:42 • Тема: Уникальная идентификация DOM-узлов • Форум: JavaScript & VBScript

Ответов: 8
Просмотров: 1208
DeepVarvar пишет:
просто надо не потерять события и данные для конкретного элемента.

Значит нужно иметь возможность идентифицировать элемент по уникальному признаку.

Если парсишь через xPath то например можешь ориентироваться по позициям если они не будут меняться
Можно по атрибутам(так помоему проще). Если штатные атрибуты могут меняться как ты говорил - тогда подойдут кастомные которые кроме как идентефикации элемента никакой смысловой нагрузки в себе нести не будут

DeepVarvar пишет:
я получу ссылку на тот элемент который был найден ранее и увижу там кастомное св-во

Какой элемент запросишь такой и получишь Улыбка Т.е если блоку с id="vasya" присвоишь кастомный атрибут то при повторной выборке получишь ссылку на тот же узел но уже с кастомным атрибутом
teddy Отправлено: 30 Ноября, 2014 - 16:27:08 • Тема: А есть ли функция ...??? • Форум: Вопросы новичков

Ответов: 8
Просмотров: 345
У автора в примере nowdoc а не heredoc ;) Это немного разные вещи

http://php.net/manual/ru/languag...g.syntax.heredoc
http://php.net/manual/ru/languag...ng.syntax.nowdoc
teddy Отправлено: 19 Ноября, 2014 - 19:07:08 • Тема: не получается вывести из файла данные • Форум: Вопросы новичков

Ответов: 5
Просмотров: 306
Телевизор пишет:
он не парсит круглые скобки и другие символы, выкидывает сразу ошибку.


И в документации это написано.
Так же написано, как можно отключить сканирование значений на наличие "запрещенных" символов для каких либо опций.

PHP:
скопировать код в буфер обмена
  1. $iniConfig = parse_ini_file('config.ini', true, INI_SCANNER_RAW);
  2. var_dump($iniConfig['ENGINE0']['version']);
  3.  
teddy Отправлено: 16 Ноября, 2014 - 19:01:17 • Тема: Выборка текста между двумя символами в многократном повторении • Форум: Регулярные выражения

Ответов: 9
Просмотров: 705
Sankaboy пишет:
но выдает сам стартовый текст

Может я неверно понял задачу. Давайте заново.

Есть текст, в котором имеются идентичные вставки вида {1|2}.

Нужно первые две вставки заменить на левую часть этой вставки {1|2} (т.е на единицу в данном случае), а все остальные вставки заменить на правую часть (двойку), я правильно понимаю? Если да, то должно быть все нормально.
teddy Отправлено: 16 Ноября, 2014 - 16:43:58 • Тема: Выборка текста между двумя символами в многократном повторении • Форум: Регулярные выражения

Ответов: 9
Просмотров: 705
Может где то синтаксическая ошибка или ещё чего там?
Смотрите error log на сервере. Думаю будет ясно в чем причина ошибки.

Sankaboy пишет:
$val - это каждый элемент после поиска ф-ции?

Да. Каждое совпадение будет автоматически передано в колбек как параметр.
(Добавление)
Sankaboy пишет:
ПХП на хосте 5.2..

А... ну да. Анонимные функции ведь в 5.3 появились.

Функцию оформите по старинке типа function myMatches($val) и её название передайте как строку в качестве параметра вместо анонимной функции
teddy Отправлено: 16 Ноября, 2014 - 16:09:10 • Тема: Выборка текста между двумя символами в многократном повторении • Форум: Регулярные выражения

Ответов: 9
Просмотров: 705
Если я верно понял задачу, скорее всего подойдет что то типа такого:

PHP:
скопировать код в буфер обмена
  1.  
  2. $result = preg_replace_callback('#{(.*?)}#u', function($val){
  3.        
  4.     static $counter = 0;
  5.     $counter++;
  6.        
  7.     if($counter <= 2)
  8.         return strstr($val[1], '|', true);
  9.     else
  10.         return ltrim(strstr($val[1], '|'), '|');
  11.  
  12. }, $text);
  13.  
  14. echo $result;
  15.  
teddy Отправлено: 16 Ноября, 2014 - 14:42:41 • Тема: Выборка текста между двумя символами в многократном повторении • Форум: Регулярные выражения

Ответов: 9
Просмотров: 705
PHP:
скопировать код в буфер обмена
  1. $text = 'Ваш текст должен быть тут';
  2. preg_match_all('#{.*?}#us', $text, $matches);
  3. print_r($matches);

Страниц (98): В начало « ... 3 4 5 6 [7] 8 9 10 11 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB