Задать вопрос
  • C помощью js разделить числа?

    orlov0562
    @orlov0562
    I'm cool!
    Смотри код на фронтенде (есть ли там твой js) и ошибки в консоле браузера по F12
    Ответ написан
    Комментировать
  • Плохо ли делать update + если нет обновленных полей - insert?

    orlov0562
    @orlov0562
    I'm cool!
    Можно так, как ты описал, а можно INSERT IGNORE и если не было affected rows, тогда UPDATE, это должно избавить от integrity constraint.

    Лично я не знаю, чем это может быть плохо.
    Ответ написан
  • Зачем по стилю кодирования (php) конкатенация в SQL?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Ты немного неправильно понял, там ключевые моменты:
    Когда производится конкатенация строк с помощью оператора ".", разрешается разрывать..


    ну, а удобно это может быть для разных причин, например комментарии написать или закомментировать какую-то строку:

    $sql = "SELECT `id`, `name` FROM `people` "
               . "WHERE `name` = 'Susan' "
    // закомментировано на время отладки
    //           . "ORDER BY `name` ASC "
               . "ORDER BY `name` DESC LIMIT 5"
    ;
    Ответ написан
    Комментировать
  • Как структурировать проекты на Yii2?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Я бы группировал по типу, внутри типа по области применения
    - app/models/user
    - app/models/order
    - app/models/...
    - app/factories
    - app/repositories
    - app/...
    - runtime
    - modules
    - vendors
    Ответ написан
    1 комментарий
  • Аккумуляторы одного ноутбука подойдут для других ноутбуков?

    orlov0562
    @orlov0562
    I'm cool!
    Нужна смотреть по форме аккумулятора, чтобы он подходил к ноутбуку, а так же по его характеристикам, которые обычно написаны на наклейке. В любом случае, лучше всего обратиться в сервисный центр, там подскажут есть ли возможность купить тот что надо.
    Ответ написан
    Комментировать
  • Как изменить условие что б кнопка зажигалось не при наличии одного символа а при определенном количестве?

    orlov0562
    @orlov0562
    I'm cool!
    jsfiddle.net/0xL0fctq/3

    if( !$(this).val() || $(this).val().replace(/\D/g,'').length < 5) enable = false;


    только если это не единственно поле в форме, то надо проверить, что это именно оно, например так:

    if( !$(this).val() || (
        $(this).attr('name') == 'phone'
        && $(this).val().replace(/\D/g,'').length < 5
    )) enable = false;
    Ответ написан
    Комментировать
  • Как решить конфликт node js и apache?

    orlov0562
    @orlov0562
    I'm cool!
    После того как не запустился Apache посмотри его логи, там всего скорее найдешь сообщение о том что не может получить доступ к каким-либо ресурсам (например 80 порту). Как только устранишь проблемы, настроив конфиг, то все будет работать. Ну, а если нет, тогда пиши сюда логи всех приложений. Пока в твоем сообщении не достаточно информации, чтобы что-то рекомендовать.
    Ответ написан
  • Как при перезагрузке страницы всегда отображать ее с верху ( scrollTop(0) )?

    orlov0562
    @orlov0562
    I'm cool!
    попробуй так:
    $(document).ready(function(){
        setTimeout(function(){
            window.scrollTo(0, 0);
        }, 1);
    });


    или так

    $(document).ready(function(){
    document.location.href='#';
    });


    Вообще, надо разобраться кто швыряет страницу вверх, есть предположение, что это делает сам браузер. Если это так, тогда только искать костыли.
    Ответ написан
    1 комментарий
  • Как срендерить шаблон одного контроллера в другой?

    orlov0562
    @orlov0562
    I'm cool!
    Я не силен в руби, но обычно экшен контроллера, это простой метод, который можно вызвать где угодно.

    например есть
    class controller_1 {
       public function action_1(){
           return $template_1->render()
       }
    }


    тогда можно, сделать так:

    class controller_2 {
       public function action_2(){
           $param = (new controller_1)->action_1();
           return $template_2->render($param)
       }
    }


    Для того, чтобы понять как правильно решать данную задачу можно погуглить реализацию паттерна PAC (HMVC) для вашего яп.
    Ответ написан
    Комментировать
  • Нужна помощь в MVC PHP. Это сложно так или я дибил?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Хоть как и писали выше, нет привычного роутинга, параметры можно легко добавить:

    Надо внести такие изменения в класс route.php:

    <?php
    
    /*
    Класс-маршрутизатор для определения запрашиваемой страницы.
    > цепляет классы контроллеров и моделей;
    > создает экземпляры контролеров страниц и вызывает действия этих контроллеров.
    */
    class Route
    {
    
    	static function start()
    	{
    		// контроллер и действие по умолчанию
    		$controller_name = 'Main';
    		$action_name = 'index';
    // --------------------------------------------------
    
    $action_params = array();
    		
    $routes = explode('/', parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH));
    
    // --^^------------------------------------------------
    		// получаем имя контроллера
    		if ( !empty($routes[1]) )
    		{	
    			$controller_name = $routes[1];
    		}
    		
    		// получаем имя экшена
    		if ( !empty($routes[2]) )
    		{
    			$action_name = $routes[2];
    		}
    // --------------------------------------------------		
    
    if (count($routes)>2) {
    	$action_params = array_slice($routes, 2);
    }
    
    // --^^------------------------------------------------
    		// добавляем префиксы
    		$model_name = 'model_'.$controller_name;
    		$controller_name = 'controller_'.$controller_name;
    		$action_name = 'action_'.$action_name;
    
    		/*
    		echo "Model: $model_name <br>";
    		echo "Controller: $controller_name <br>";
    		echo "Action: $action_name <br>";
    		*/
    
    		// подцепляем файл с классом модели (файла модели может и не быть)
    
    		$model_file = strtolower($model_name).'.php';
    		$model_path = "application/models/".$model_file;
    		if(file_exists($model_path))
    		{
    			include "application/models/".$model_file;
    		}
    
    		// подцепляем файл с классом контроллера
    		$controller_file = strtolower($controller_name).'.php';
    		$controller_path = "application/controllers/".$controller_file;
    		if(file_exists($controller_path))
    		{
    			include "application/controllers/".$controller_file;
    		}
    		else
    		{
    			/*
    			правильно было бы кинуть здесь исключение,
    			но для упрощения сразу сделаем редирект на страницу 404
    			*/
    			Route::ErrorPage404();
    		}
    		
    		// создаем контроллер
    		$controller = new $controller_name;
    		$action = $action_name;
    		
    		if(method_exists($controller, $action))
    		{
    			// вызываем действие контроллера
    // --------------------------------------------------
    
    call_user_func_array(array($controller, $action), $action_params)
    
    // --^^------------------------------------------------
    		}
    		else
    		{
    			// здесь также разумнее было бы кинуть исключение
    			Route::ErrorPage404();
    		}
    	
    	}
    
    	function ErrorPage404()
    	{
            $host = 'http://'.$_SERVER['HTTP_HOST'].'/';
            header('HTTP/1.1 404 Not Found');
    		header("Status: 404 Not Found");
    		header('Location:'.$host.'404');
        }
        
    }


    после этого можно строить любые роуты, согласно схемы:
    http:// site.com / [controller] / [action] ( / параметр_1 ( / параметр_2 ( / .. ( / параметр_n))))

    для того, чтобы использовать указанные параметры, надо в методе action-а, соответствующего контроллера указать их в сигнатуре, т.е. вот так:
    class controller {
      public function action($param_1, $param_2,...,$param_n) {
      
      }
    }


    P.S. Код я не проверял, так что если будут ошибки, пиши их сюда, коллективный разум исправит :)
    Ответ написан
  • Как получить URL из текста и передать его другой функции?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Используй preg_replace_callback

    $text = '
    <a href="http://test1.ru">Test 1</a> text
    <a href="http://test1.ru">Test 2</a> text
    ';
    
    $text = preg_replace_callback('~http://~', function($match) {
        return $match[0] . 'www.'; 
    }, $text);
    
    echo $text;


    твой вариант будет выглядеть примерно так:
    $regexp = "/([^\w\/])(www\.[a-z0-9\-]+\.[a-z0-9\-]+)/i";
    $string = preg_replace_callback($regexp, function($match){
        return $match[1] . "http://" . shortUrl($match[2]);
    }, $string);
    Ответ написан
  • Некоторые ф-ции плагина jQuery Caret не работают в div?

    orlov0562
    @orlov0562
    I'm cool!
    Все правильно, у тебя pos=0 а потом ты делаешь $('#element').caret(pos); она и идет в самое начало

    Я думаю ты хотел сделать это: jsfiddle.net/280uz0ct/1
    Ответ написан
  • Как написать форму для добавления пункта меню на страницу, на php?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    Не самая простая задача для новичка, давай разберем по порядку что тебе надо сделать.
    1) тебе надо как-то хранить список категорий и их ссылок
    2) тебе надо получить структуру меню в переменную
    3) тебе надо построить само меню

    Я исхожу из того, что хранить информацию о меню ты будешь в базе.

    Пусть в базе будет две таблицы:
    menu_category
    ~~~~~~~
    id
    name
    order
    
    menu_items
    ~~~~~~~~~~~
    id
    menu_category_id
    name
    url
    order

    дальше, ты примерно вот таким запросом получаешь все пункты меню
    SELECT 
    	`c`.`id` as `id`,
    	`c`.`name` as `name`,
    	`i`.`id` as `item_id`,
    	`i`.`name` as `item_name`,	
    	`i`.`url` as `item_url`
    FROM `menu_category` as `c` 
    LEFT JOIN `menu_items` as `i` ON `i`.`menu_category_id`=`c`.`id` 
    ORDER BY `c`.`order`, `i`.`order`

    теперь группируем результаты по id категории тем самым получая удобную структуру для формирования меню
    $menu = [];
    foreach ($results as $res) {
    	$menu[$res['id']]['name'] = $res['name'];
    	$menu[$res['id']]['items'][] = [
    		'name' => $res['item_name'],
    		'url' => $res['item_url'],
    	]
    }

    в результате имеем массив с такой структурой:
    [1]=>[
    	'name' => 'Категория 1',
    	'items' => [
    		['name'=>'Ссылка 11', 'url'=>'http://site11.ru'],
    		['name'=>'Ссылка 12', 'url'=>'http://site12.ru'],	
    	]
    ],
    [2]=>[
    	'name' => 'Категория 2',
    	'items' => [
    		['name'=>'Ссылка 21', 'url'=>'http://site21.ru'],
    		['name'=>'Ссылка 22', 'url'=>'http://site22.ru'],	
    	]
    ],

    теперь осталось все это вывести, используем такой код
    echo '<ul>';
    foreach($menu as $catId=>$cat) {
    	echo '<li>'.$cat['name'];
    	if (isset($cat['items'])) {
    		echo '<ul>';
    		foreach($cat['items'] as $item) {
    			echo '<li><a href="'.$item['url'].'">'.$item['name'].'</a></li>';
    		}
    		echo '</ul>';
    	}
    	echo '</li>';
    }
    echo '</ul>';


    вот и всё, осталось написать формы для добавления данных в соответствующие таблицы бд
    Ответ написан
    7 комментариев
  • Перейти по ссылке с отправкой POST?

    orlov0562
    @orlov0562
    I'm cool!
    можно так сделать, я упростил, смысл думаю понятен:

    <form action="" id="my_form" method="POST">
    <input type="hidden" name="var" value="val">
    </form>
    
    <a href="#" onclick="document.getElementById('my_form').submit(); return false;">Test</a>
    Ответ написан
    Комментировать
  • Какой запрос быстрей и оптимальней из двух?

    orlov0562
    @orlov0562
    I'm cool!
    Я думаю, что оба запроса будут +/- одинаково по скорости работать. Как и написали выше, легче всего самостоятельно проверить. Тот же phpMyAdmin, пишет за сколько выполнился запрос.

    В остальном же, подобные решения не рекомендую использовать. Если нужно регулярно гонять таким образом кучу данных, то где-то в архитектуре есть большая проблема и надо исправлять именно её (ну, например, таблицу table заполнять, сразу по добавлению записи в таблицу data).
    Ответ написан
    Комментировать
  • Как правильно настроить форму отправки на e-mail?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    похоже, потерял закрывающуюся фигурную скобку после alert, используй редактор с проверкой и подсветкой парных скобок
    Ответ написан
    Комментировать
  • Вечная ошибка при загрузке компьютера?

    orlov0562
    @orlov0562
    I'm cool!
    Привет. В биосе, возможно есть пункт, что-то типа "halt on errors", надо его отключить.
    Если не найдешь, давай сюда скрины биоса, поищем коллективно :)
    Ответ написан
    2 комментария
  • Как составить запрос с необязательным выполнение условия?

    orlov0562
    @orlov0562
    I'm cool!
    Еще вариант:

    select * from `tFilm`
    order by 
    	case when `year` = '1998' then 1 else 2 end, 
    	case when `genre` = '4' then 1 else 2 end, 
    	case when `country` = '34' then 1 else 2 end, 
    	year,
    	genre,
    	country
    limit 10
    Ответ написан
  • PHP. Есть ли решение, которое будет разбивать интервал дат на недельные периоды?

    orlov0562
    @orlov0562 Куратор тега PHP
    I'm cool!
    $start = new DateTime('01.08.2014');
    $end = new DateTime('30.08.2015 23:59');
    $interval = new DateInterval('P1D');
    $dateRange = new DatePeriod($start, $interval, $end);
    
    $weekNumber = 1;
    $weeks = array();
    foreach ($dateRange as $date) {
    	$weeks[$weekNumber][] = $date->format('Y-m-d');
    	if ($date->format('w') == 0) {
    		$weekNumber++;
    	}
    }
    
    echo '<pre>';
    print_r($weeks);
    echo '</pre>';
    Ответ написан
    Комментировать
  • Как распарсить строку и построить дерево категорий товаров и услуг?

    orlov0562
    @orlov0562
    I'm cool!
    Я напишу в целом, т.к. это подойдет для любого языка

    Алгоритм работы парсера довольно прост, и по большей части делится на 3и этапа:
    1) Получить данные
    2) Разобрать данные
    3) Сохранить данные

    1) Для того чтобы получить данные, надо изучить стек функций для работы с сетью. Можно гуглить по такому запросу "Как скачать веб-страницу" + твой ЯП (PHP, Java, Python и т.д.). Тут ты должен написать функцию которой на вход передашь url, а на выход получишь данные (html, json, xml и т.д.)

    2) Разобрать данные можно либо с помощью готовых библиотек под нужный формат, либо с помощью регулярных выражений, либо с помощью строковых функций. Тут на помощь придет запрос "Строковые функции" + твой ЯП или "регулярные выражения" + твой ЯП. На этом этапе ты должен написать функцию, которой на вход поступают данные, а на выходе получаешь заранее утвержденную структуру.

    3) Сохранять данные в необходимой структуре можно в файлы или в БД. Опять в гугл с запросом "Работа с бд " + твой ЯП, либо "Работа с файлами" + твой ЯП. Тут твоя задача написать функцию, на вход которой приходит заранее утвержденная структура, а на выходе ты получаешь результат "сохраненные данные"

    Ну, собственно и всё. Идешь в гугл, изучаешь матчасть и пишешь парсер.

    Если же тебя в большей степени интересуют алгоритмы разбора, тогда советую посмотреть код "калькуляторов" на твоем ЯП, погуглить можно по запросу "калькулятор со скобками", "Разбор и вычисление выражений". Это классическая задача, разбор твоего куска будет очень похож.
    Ответ написан
    6 комментариев