• Какой раздел php отвечает за привязку к dom event?

    shaks
    @shaks
    никакой
    Ответ написан
    Комментировать
  • Как в Ruby on Rails вы делаете валидацию формы через AJAX по современному?

    shaks
    @shaks
    Но как можно гармонично это реализовать все это согласованно с моделью?

    gem client_side_validations - вполне удобненько, и все согласовано с моделью

    Да в интернете есть, но они как бы старые и не очень хорошие.

    проверял работу вышеупомянутого гема на 5х рельсах, все работает хорошо.
    Ответ написан
    Комментировать
  • В каком случае запрос быстрее?

    shaks
    @shaks
    в мускуле можно глянуть с помощью профайлера. Он доступен помоему с 5й версии или типа того

    set profiling=1;
    SELECT * FROM `table` ORDER BY (`column1` - `column2`);
    SELECT *, (`column1` - `column2`) AS `column3` FROM `table` ORDER BY `column3`;
    show profiles;

    На выходе получишь табличку со скоростью выполнения каждого из запросов
    Ответ написан
    Комментировать
  • Как сформировать нестандартную строку из даты в php?

    shaks
    @shaks

    абв-гдеёж
    а - последняя цифра текущего года
    бв - месяц
    гд - день


    $string = "509-01001";
    $year = "201{$string[0]}";
    $month = $string[1].$string[2];
    $day = $string[4].$string[5];
    $incr = substr($string, -3);


    > к реализовать хранение порядкового номера заказа конкретно за текущий день
    этим занимается БД обычно.
    Ответ написан
    Комментировать
  • Защита скрипта от ajax запросов с других серверов, разумно ли решение?

    shaks
    @shaks
    всё что вы написали ерунда полная. Все заголовки легко выставляются любым скриптом, в том числе и REFERRER
    По поводу вопроса
    - нет, не ресурсоемко
    - есть альтернатива strpos substr и тд

    Как правильно подметил этот чел - Deodatuss , чтоб небыло левых запросов нужна какая-то авторизация для ваших посетителей, например в кеше хранить токены юзеров вполне удачная мысль.

    PS А зачем вам такая "защита" ? любопытно просто, я попытался придумать ситуацию когда это нужно и необходимо, но так и не смог придумать )
    Ответ написан
    Комментировать
  • Почему не работает modal окно в Bootstrap?

    shaks
    @shaks
    не надо было выкладывать весь архив достаточно показать было только ваш index2.html
    ладно..
    Вот так, заработает:
    <!-- Button to trigger modal -->
                        <button data-target="#myModal" role="button" class="btn" data-toggle="modal">Launch demo modal</button>


    и вот так заработает:
    <!-- Button to trigger modal -->
                   <a href="#" data-target="#myModal" data-toggle="modal">Launch demo modal</a>

    читайте внимательно мануалы пожалуйста
    Ответ написан
  • PHP выводит только один товар в рейтинг, в чём проблема?

    shaks
    @shaks
    ну раз всё так как вы описали, то super_query ваше возвращает массив (вместо ассоциативного массива)
    Ответ написан
  • Как реализовать "единую точку входа" без домена?

    shaks
    @shaks
    > не знаю уже, куда смотреть. очень прошу помощи
    попробуй посмотреть внимательно на:
    DocumentRoot /var/www/site ( сайт находится в папке /var/www/site обращаться нужно -  %IP_ADDRESS%/ а не  %IP_ADDRESS%/site)
       ServerName site.com - стереть, вы же по ip обращаетесь,  причем тут site.com ?
       ServerAlias www.site.kg - стереть


    посмотреть в логи
    ErrorLog /var/log/apache2/site.com-error.log
       CustomLog /var/log/apache2/site.com-access.log combined


    убедится что по ип адресу не открывается какойто другой конфиг который подгружается первым в конфиг апача.

    > (главная страница запускается)
    а вы уверены что 404 идет от апача а не от скрипта?

    Проблема может быть в том, что используется REST запрос, а сайт лежит в папке, и роутинг скрипта вашего сайта выдает 404, т.к. site/ воспринимает за роут, который у него не настроен. (нужно гдето в скриптах указать base url, должно быть такое)
    Ответ написан
  • Запись в БД MySQL?

    shaks
    @shaks
    DevMan правильно написал. сначала надо собрать строку, а потом сделать за одни запрос в базу уже апдейт, т.е. так какбы логично и правильно.

    Если я правильно понял то вам нужна конкатенация строки (дозаписать):
    `column` = CONCAT(`column`,' addon string')

    Тут кусок кода, как собрать валидные мыла, и как их вставить через запятую в sql запрос твой.
    pastebin.com/rGdPqU51
    только вставку в mysql выведи за пределы твоего цикла foreach
    Ответ написан
    Комментировать
  • Как спарсить капчу, которая обновляется при каждом запросе?

    shaks
    @shaks
    Это стандартная капча и работа с ней - стандартная, как описал Александр Галанин
    Пойми логику работы таких капч:
    Скрипт сгенерил картинку, он должен гдето сохранить то что такому-то пациенту я выдал такойто текст капчи. Идентификатором "пациента" выступает кука или сессия.
    Алгоритм примерно следующий:
    - обращаешься на скрипт капчи
    - сохраняешь картинку и все куки в том числе и сессию
    - распознаешь капчу
    - с сохраненными куками сабмитишь нужную форму на сайте.
    Ответ написан
    Комментировать
  • Что такое "?action="?

    shaks
    @shaks
    if(isset($_GET['action']) && $_GET['action']=='sample')
    {
    echo "Меня зовут " . $_POST['name'] . ", мне " . $_POST['age'] . " годиков" ;
    }
    Ответ написан
    4 комментария
  • Как определить наличие файлов на удаленном сервере, с помощью распараллеливания?

    shaks
    @shaks
    Такие задачи нужно делать в фоне по какому-то расписанию или определённым событиям. И обязательно вести логи.
    Это сейчас у Вас 50 файлов (а в будущем может 500 будет, кто знает), и у вас все работает как должно работать. А случись что с ДЦ? фаза луны не та? у вас вобще всё повиснет, т.к. на каждый запрос будет уходить выставленный таймаут в курле (30 сек по умолчанию помоему).

    Ну и гляньте еще в сторону multicurl
    php.net/manual/ru/function.curl-multi-init.php
    Ответ написан
    5 комментариев
  • Как сделать в Jquery подобие foreach?

    shaks
    @shaks
    Ответ написан
    Комментировать
  • Как можно улучшить код?

    shaks
    @shaks
    Почитайте про паттерн проектирования MVC
    Суть паттерна заключается в изоляции моделей(Model) представлений (View) и контроллера (Controller) друг от друга.

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

    <?php
    #app/controllers/prices.php
    class PricesController extends BaseController // Контроллер.  Принимает запросы и работает с моделью и представлением. В примере моем только представление.
    {
        function action_index() 
        {
            $foo = 'foo';
            $bar = array('bar1', 'bar2');
            self::render('prices/index', array('foo'=>$foo, 'bar'=>$bar)); // метод реализован в базовом контроллере
        }
    }
    #  app/controllers/base.php 
    class BaseController {  // Главный контроллер, от которого унаследуются все остальные. В нем могут быть всякие настройки и тд итп. В данном случае только статический метод рендеринга страницы
        const VIEW_FOLDER = 'app/views';
    
        static function render($template, $data)
        {
            $view = VIEWS_PATH."/{$template}.html.php";
            if(file_exists($view))
            {
                extract($data); // Самая соль в этой функции, она создает переменные из полученного массива, именем переменной является ключ массива.
                                // В итоге шаблон у нас видит только эти переменные + те которые объявлены в самом методе render до инклуда, т.е. будет видна переменная $template и массив $data
                ob_start();
                include $view;
                $yield = ob_get_clean();
                include VIEWS_PATH . '/layouts/application.html.php'; // это главный лайут, содержащий хеадер и футер.
            }
        }
    }


    А вот и View:
    главный лайоут:
    # app/views/layouts/application.html.php
    <html>
    <body>
        <?php echo(isset($yield) ? $yield : '')?>
    </body>
    </html>


    шаблон вывода для нашего контроллера:
    # app/views/prices/index.html.php
    foo: <?php echo($foo)?><br>
    bar: <?php var_dump($bar)?>

    В итоге, в шаблоне prices/index.html.php будут видны переменные $foo и $bar объявленные и в нашем контроллере и переданные на рендер. (
    self::render('prices/index', array('foo'=>$foo, 'bar'=>$bar));
    )

    P.S. Я мог гдето ошибиться, т.к. писал быстро, буквально на коленке, ничего не проверял вообще. Я хотел показать саму концепцию на примере того, как делать изоляцию переменных чтобы они не могли вызываться "где угодно" как Вы выразились.

    P.S.S Работу с моделями я не писал, поэтому приведенный здесь код не является MVC, лишь VC.
    Ответ написан
  • Как правильно составить mysql запрос для рейтинга?

    shaks
    @shaks
    ну просто отсортируй по рейтингу DESC, сгруппированно по org_id и с лимитом в 5.
    Ответ написан
    Комментировать
  • Почему выскакивает ошибка #1064 при выполнении SQL запроса INSERT INTO?

    shaks
    @shaks
    во первых запрос должен иметь примерно такой формат:
    INSERT INTO `price` (`N`, `title`, `localsum`, `regionsum`, `rfsum`, `intersum`) VALUES  (1,'Poi',2,1000,1500,2000,4000)

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

    `localsum` char(100) not null,
    `regionsum` char(100) not null,
    `rfsum` char(100) not null,
    `intersum` char(100) not null,

    эти поля должны быть int а не char
    Если вы хотите именно строку, то цифры (при вставке) нужно оборачивать в кавычки

    в третьих, раз `N` int not null auto_increment, то значение N можно или игнорировать при вставке, или передавать NULL

    P.S. Строку вставки можно делать так:
    INSERT INTO `price` SET `field`=1, `field2`=2, `field3`=3

    так визуально понятней что куда вставляется

    ------
    UPD
    <?php
    // соединение с базой:
    chdir(dirname(__FILE__));
    $dsn = 'mysql:host=localhost'.
        ';dbname=temp_development'.
        ';port='.
        ';connect_timeout=15';
    
    $user = 'root';
    $password = '123qwe#';
    $db = new PDO($dsn, $user, $password);
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    
    
    $file = "./price.txt";# 'Poi',2,1000,1500,2000
    # в файле я убрал последнее значение, т.к. для него нет соответствующей колонки в ДБ
    if($fp = fopen($file, 'r'))
    {
        $sql = "INSERT INTO `price` (`title`, `localsum`, `regionsum`, `rfsum`, `intersum`) VALUES ";
        $prepare = array();
        $insert = array();
        while($line = fgets($fp))
        {
            $line = trim($line);
            if(!$line)
                continue;
            # Читаю файл построчно, чтоб память не загадилась если файл содержит оч много данных
    
            // валидацию данных я не делаю
            array_push($prepare, implode(",", array_fill(0, 5, "?")));
            $insert = array_merge($insert, explode(",", $line));
    
        }
        $pr = $db->prepare($sql."( ".implode("), (", $prepare)." )");
        $pr->execute($insert);
    }

    этот код сгенерирует такой вот запрос в бд:
    INSERT INTO `price` (`title`, `localsum`, `regionsum`, `rfsum`, `intersum`) VALUES ( '\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000'), ('\'Poi\'','2','1000','1500','2000' )
    Ответ написан
    3 комментария
  • Как сделать подмену запросов?

    shaks
    @shaks
    все просто. поиск должен выполнять один роут (в вашем случае файл) со всеми возможными фильтрами поиска.
    Ответ написан
    Комментировать
  • Как отрендерить форму в rails?

    shaks
    @shaks
    ну значит у тебя @product содержит или nil или пустой.

    в консоли (которую предоставляет gem 'web-console' выведи @product и удостоверься в том что он или nil или пустой

    если ты не понял про какую консоль речь, то я про эту:
    friz7OO.png
    Ответ написан