Задать вопрос
  • Помочь с регулярным выражением?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    логичнее сделать сплит по ][, взять последний элемент и заменить ] на пустую строку, зачем там регулярка - непонятно. Да и если
    но оно возвращает массив тремя словами в символах
    не проще взять последний элемент и удалить скобки?
    Ответ написан
    Комментировать
  • Как правильно указать адрес ffmpeg?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    не очень понятно что вообще вы пытаетесь сделать, так как:
    Пытался как угодно вписывать адрес до файла, чтобы получить информацию о файле.
    и
    ffmpeg -i video.mp4
    между собой не согласуются. Если вы читали документацию, то странно ожидать информации от параметра -i, который определяет input file(s), а за путем к ним обязательным параметром следует путь до файла вывода.
    Ответ написан
  • Как в php преобразовать строку с числом в строку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    '{id}' - всегда равна числу, например 57
    '{id}' - всегда равна строке, так как {57} явно не число, в отличие от 57, не говоря уже о том что это литерал по определению, так как заключен в кавычки. И скорее всего там даже не {57}, а просто {id}, если это не какая-то вьюшка с хитропопым парсером.

    Но если я преобразую строку в integer, то $idlink у меня равен 0.
    читайте документацию, крайне полезная штука.
    Ответ написан
    Комментировать
  • Как получить "Заголовок запросов path"?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Заголовки :method, :scheme, :authority и :path относятся к псевдозаголовкам, введенные для протокола http/2, по этому если у тебя сервер не поддерживает данный протокол, данных заголовков у тебя просто не будет.
    Остальные заголовки можно получить из $_SERVER или из getallheaders(), которая ставится отдельным модулем.

    Естественно получить заголовки запроса можно только с серверной стороны, из клиента через js ты их можешь только установить вручную при аякс/фетч запросе.
    Ответ написан
    Комментировать
  • Как раздать локальную сеть на удалённый компьютер?

    ThunderCat
    @ThunderCat
    {PHP, MySql, HTML, JS, CSS} developer
    1 вариант - интернет в обоих точках + впн
    2 вариант - радио, вайфай с 2 нормальными антеннами пробивает до 2 километров на 10мбит, на такое расстояние где-то 50мбит спокойно поднимется.
    Ответ написан
    4 комментария
  • Оптимизация структуры БД. Какие варианты в данном случае?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Суть проблемы:
    Если это всё работает на MySQL, то не получается оптимизировать запросы "стандартными" методами...индексы выручают, но из-за "переменного" кол-ва ID'шников по фильтру s_id индексы не так эффективны...т.к. приходится сканировать много записей...
    Так, а в чем собственно проблема? Где тайминги запросов, где explain по медленным запросам?
    Ответ написан
  • Нужно ли в таких случаях делать защиту от инъекций?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    во первых - у вас ошибка в коде, отсутствует кавычка: 'password,
    Во вторых - вопрос в корне не верный, если мы говорим о коде. Основное правило при работе с данными от пользователя - данным от пользователя нельзя доверять никогда.
    Отсюда же и второе правило - любые данные в запросах, если это переменные пришедшие из кода, а не прописанные буквами и цифрами в запросе, должны быть через подготовленные выражения, вы не можете гарантировать что где-то не пропустите пользовательский ввод в запрос.
    Ответ написан
    Комментировать
  • Для чего в проектах принудительно используют use?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Минусы как бы очевидны:
    нет, не очевидны, по крайней мере миллионам разрабов

    1 Код становится трудно читаем. По месту использования не всегда понятно что имеется ввиду под Order::load() - \Framework\Sale\Order::load или \Vendor\Project\Sale\Order::load - приходится проматывать к верху файла.
    Вам как разрабу должно быть в принципе фиолетово, какой из пакетов используется, если они соблюдают один интерфейс. Если не соблюдают, при том что называются одинаково, значит все пошло не так задолго до проблем с определением пакета...

    2 Код становиться длиннее - там где было бы просто:
    \Framework\Main\UI\Extension::load([ 'vendor.module.components.cabinet.personal' ]);
    приходится писать:
    use \Framework\Main\UI\Extension;
    Extension::load([ 'vendor.module.components.cabinet.personal' ]);
    Код становится длиннее в проектах где 2 контроллера и в них по 1 экшену. Там где Extension::load будет вызываться больше одного раза, очевидно экономия на эксплуатации клавиатуры заметно увеличивается. А в больших проектах создание объекта может (и будет) повторяться многократно.

    4 Код становиться замусоренным, так как верхушки файлов запросто превращаются во что-то вроде:
    Если не обращать внимание на отсутствие пункта 3, то... нет, не могу не обращать внимание, вот же торопыга....
    Во первых - данная портянка очень аккуратно прячется любой адекватной ИДЕ,
    Во вторых - это правильно и логично, хранить все импорты в одном месте
    В третьих - если ты пишешь неимпортированный класс в коде - ИДЕ обычно предлагает варианты внесения его в блок импорта, и все выглядит аккуратно.

    И хрен его знает используются импортированные классы ниже ещё или уже нет, ведь никто не убирает этот мусор.
    Хрен не знает, а ИДЕ замечательно знает и даже подсвечивает серым цветом неиспользуемые.
    Ответ написан
    4 комментария
  • Как правильно формировать json из html формы?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    json формируется по субмиту, тогда все поля формы уже сформированы, и остается просто вытащить их в жсон.
    Ответ написан
    4 комментария
  • Скрипт на JS прибавление числа по времени?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    Читаешь куку "старт", если она есть - считаешь сколько времени прошло, делишь на 30 минут, к нужной цифре прибавляешь количество прошедших циклов * 50.
    Если нету куки записываешь в куку "старт" время от когда считать (текущее).
    Запускаешь сетТаймаут на остаток времени до 30 минут, в котором добавляешь +50 и запускаешь сетИнтервал на 30 минут с тем же +50.
    Ответ написан
    Комментировать
  • Можно ли удалить последний параграф из строки mysql?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Вообще возможно такое?

    Если текст весь разбит на параграфы, и последними строками всегда будет </p> тогда возможно через REGEXP_REPLACE. С некоторыми извращениями скорее всего можно и если не закрывающий тег в конце текста.
    Ответ написан
    2 комментария
  • Почему запрос в Yii выполняется медленнее?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Все дело в волшебных пузырьках в том что пхпмайадмин вас на... обманывает, так как на самом деле в его запросе не показывается "магия", которая в конце добавляет limit 25, о чем говорит надпись "отображение строк 0-24" .

    Ну и в целом, запросы без лимитов и условий практически нигде не используются, по этому странно сравнивать идиотский запрос типа "вытащи мне все что есть в таблице весом в 600 мегабайт" и "покажи первые ндцать записей".
    Ответ написан
    Комментировать
  • PHP Что делать ошибка function foreach() on null?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Очевидно что в переменной $diary ничего нет(NULL), и вы пытаетесь вызвать метод от пустой переменной. Предполагается что для начала нужно создать в ней объект класса Diary.
    Ответ написан
    8 комментариев
  • Нужно ли выполнять асинхронные запросы чтоб ускорить выполнение кода на PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В теле цыкла происходит обращение к таблицам базы данных,
    Запросы в цикле - зло, нельзя заниматься фигней ради фигни. Переписать код на 1 нормальный запрос, и уже с выборкой работать. Тогда код будет выполняться за приемлемое время и никаких костылей не понадобится. Понимаю что "так проще". Но так делать нельзя.

    ЗЫ: Встал цыган на цыпочки и цыкнул на цыпленка в цыкле... ))
    Ответ написан
  • Как вставить несколько записей в бд?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    При проверке var_dump($country_id); мне приходит массив с значением NULL
    Ок, а проверить таким же способом $_POST что мешало?

    Путь должен быть от корня сервера, а не просто имя вызываемого файла.

    echo "<option =". $row["id"] . "selected>" . $row["name"] . "</option>";
    Так у вас получается что ВСЕ опции при старте уже выделены... кроме того - откройте код странички и посмотрите что у вас в value попадает, не факт что там есть значения.
    Ответ написан
    Комментировать
  • Подойдет для простого букинга?

    ThunderCat
    @ThunderCat Куратор тега MySQL
    {PHP, MySql, HTML, JS, CSS} developer
    Для ООООЧЕНЬ простого букинга с большой натяжкой.

    Не вижу собсно отелей (или он будет один? Тогда это не букинг, а бронирование в отеле)

    Не вижу типов комнат (возможно это сайт бронирования конкретной квартиры покомнатно?)

    Эмоунт - это деньги? Тогда тип флоат не подходит.

    Что за фючеред_имэйдж? еще и интежер...

    Где опции в номере? Или в комнатах квартиры все удобства на улице и это где то отдельно текстом прописано?

    Короче пока на 2 с плюсом...
    Ответ написан
    6 комментариев
  • Как сделать живой поиск по массиву и вложенным массивам?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    filteredData = data.((t) => t.name.toLowerCase().includes(search.value.toLowerCase())
    Во первых не хватает скобки закрывающей, странно что у вас вообще что-то работает.
    во вторых - любая работа с массивом (а если уже совсем придираться, то у вас не массив, а объект, но не суть) - цикл, даже если он замаскирован под мап/фильтер, а любой вложенный массив - рекурсия. Соответственно пишете рекурсивную функцию.
    В третьих - вам вроде нужен массив строк(?), а фильтр вернет массив элементов, что вообще не рядом. По этому скорее всего вам нужен не filter, а просто цикл с возвратом строки.
    Ответ написан
    Комментировать
  • Массив данных на электронную почту?

    ThunderCat
    @ThunderCat Куратор тега HTML
    {PHP, MySql, HTML, JS, CSS} developer
    ('moe_milo@mail.ru', $phone, $email, $car, $message "Content-type:text/plain; charset = UTF-8\r\nFrom:$email");

    1) Отсутствует запятая после $message
    2)$mes нигде не используется, зачем она вообще?
    3) Заголовок From говорит о том что почта отправки абсолютно левая, скорее всего такое отправление зарежется на первом же релее как фейковый мэйл, надо указывать существующий локальный адрес.
    4) mail вообще не обязан работать на хостинге, так как во первых должен быть настроен в пхп.ини, а во вторых часто просто выключен хостером для избегания попадания в спамлисты.
    5) Используйте пхпмэйлер или свифтмэйлер, они более настраиваемые и менее капризные, и в плане отладки проще.
    Ответ написан
    Комментировать
  • Как правильно сделать такой поиск?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Учимся думать:
    $search   = _string($_POST['search_string']);
    $sql = '
    SELECT * 
    FROM `chat` 
    WHERE `user_id` IN (
       SELECT `id` 
       FROM `users` 
       WHERE `login` LIKE "'.$search.'%"
    ) 
    ORDER BY `time` 
    DESC '; // делаем запрос отдельной строкой,
    var_dump($sql);
    //вставив в него переменную убеждаемся что там ерунда
    
    //пишем нормально
    $search   = $_POST['search_string'].'%';
    $sql = '
    SELECT * 
    FROM `chat` 
    WHERE `user_id` IN (
       SELECT `id` 
       FROM `users` 
       WHERE `login` LIKE ?
    ) 
    ORDER BY `time` 
    DESC '; 
    $stmt = $mysqli->prepare($sql);
    $stmt->bind_param('s', $search);
    $chat_result = $stmt->execute();
    while ( $row = $chat_result->fetch_assoc() ) {
        echo $row['user_id'].'<hr>';
    }


    ps: и нет смысла делать серч через пост запрос, лучше через гет, так поисковый запрос можно например переслать или скопировать и переиспользовать.
    Ответ написан
  • Почему не проверяется ответ с сервера JSON?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    dataType: 'text', соответственно сукчес примет данные как текст и никакого объекта со свойством status там нету, проверка даст фалс.
    Ответ написан
    1 комментарий