Ответы пользователя по тегу PHP
  • Как в кусок кода интегрировать дополнительный кусок правильно?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В вордпрессе нет такого понятия "правильно", так как все что более-менее шевелится признается верным решением. По этому заморачиваться с кодестайлом, правильностью, поддерживаемостью и хотя бы элементарным разделением на код, данные и представление в среде вордперссеров считается моветоном. Единственное чем надо озаботиться - длинна имени каждой следующей написанной функции должна быть больше предыдущей. Это обусловлено тем что в теории каждая следующая функция описывает более сложный функционал чем предыдущая, и, возможно, содержит в себе все предыдущие. В таком случае в качестве имени можно просто объединить все имена используемых функций через подчеркивание. В остальном вы вольны выеживаться фристайлом.
    Ответ написан
    2 комментария
  • Ошибка 500, что не так?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Во первых - кошмарная мешанина из кода и хтмл.
    Во вторых - 500 ошибка это "общая" ошибка для всего что фатально грохнулось, но настройки не позволяют отобразить конкретную ошибку. То есть - либо смотрите логи (что больше подходит для продакшена), либо настраиваете вывод ошибок и выставляете уровень E_ALL, тогда ошибки будут вываливаться сразу в браузер и будет понятно что и где упало, и почему.
    Ответ написан
  • Проблема PHP и AJAX. Как изменить значение в AJAX с помощью PHP?

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

    В обоих случаях у вас не нужна никакая функция send(), достаточно повесить на документ слушатель субмита формы, и уже в нем отправлять аякс запрос со всеми данными текущей формы. И не надо никаких подстановок.
    Ответ написан
    Комментировать
  • Откуда php сервер берет информацию?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Я включаю свой встроенный сервер
    это какой и во что он встроен у вас?

    начинают подключаться все данные с проекта который я делал несколько месяцев назад, и интересно то что совсем с другого порта.
    В компьютерном понимании порт - это не стоянка судов и контейнеров, а условная адресация к области оперативной памяти, которую "слушает" или использует определенная программа. В данном случае ваш "встроенный сервер". Он "услышал" запрос на указанном порту и отдал тот же контент который и был у вас в его папке по умолчанию для показа (document root).

    Что можно сделать в данной ситуации?
    Практически все "встроенные сервера" имеют файлы конфигурации, позволяющие настроить как основной document root, так и "алиасы" - много доменов на одном сервере, каждый со своим document root. Смотрите настройки для своего "встроенного сервера".
    Ответ написан
  • Как исправить ошибку конфигурационного файла PHP?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Нет времени на установку скриптов, или что то не получается? Мы установим, и настроим все за тебя, за дополнительную плату. Писать Вконтакте по ССЫЛКЕ. Посмотреть отзывы можно по ссылке.
    Услугу предоставляет Администрация сайта VipAdmin.Club
    Там же все четко написано, че вы тупите то...
    Ответ написан
    3 комментария
  • Обработка ajax запроса?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    нужно при клике на чексбокс ajax-ом получить/фильтровать товар, который выводи этот файл Product.php
    1) Чекбоксы что у вас фильтруют?
    2) В Product.php нет функционала, учитывающего более одного параметра, и то - только категорию.

    не понимаю как в обработчике ajax запроса, взять эти данные
    Плохо, значит пока еще слабо знаете свою предметную область. внизу вашего вопроса есть пример, эти данные там есть, что с ними делать зависит от того что нужно получить.

    надо ли обращаться к этому файлу Product.php
    В представленном виде он бесполезен для вашей задачи, нужно писать метод получения списка из произвольных параметров. Потом сформировать из списка хтмл с готовыми блоками и отдать его (сделать echo) обратно. Только в аяксе надо будет заменить dataType: 'html'
    Ответ написан
    3 комментария
  • Как создать свойство внутри метода?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1. Делают ли так?
    Делают, но это не хорошая практика. Во первых имеете шанс затереть какие-то настроечные данные объекта и получить непредсказуемость поведения. Во вторых, если у вас там значения из бд или другого хранилища в формате ключ-значение, лучше хранить их в отдельном поле, том же дата, но в виде stdClass, чтобы не путать их при работе с хранилищем с остальными полями, например так:
    public function setData(array $data):void{
      $this->data = (object)$data;
    }

    в идеале у вас должен быть DTO (data transfer object), но в актив рекорд движках он обычно не используется.
    Ответ написан
    4 комментария
  • Как сменить название каталога/файла на сервере при запросе?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    для апача называется mod_rewrite, для нжинкса используется другая директива (лень искать, гугли).
    на сервере site.ru/cp/admin.php, чтобы в браузере на самом деле отображалось site.ru/cp/panel (грубый пример).
    Для этого еще нужно обрабатывать скриптом, или писать отдельные правила серверу на каждый чих. То есть либо единая точка входа и роутер, либо жесткие правила в конфиге сервера.
    Ответ написан
    Комментировать
  • Как создать квиз с отправкой ответов пользователя на почту?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Вы зачем то объединили 2 абсолютно не связанные задачи - квиз и отправку абстрактных данных на абстрактный емэйл.
    С помощью чисто бэкенда будет убого, но можно. Только закончил делать викторину на нашем проекте, хорошо выходит в связке жс+цсс+бэкенд. Со статистикой и "неразгадываемостью" не заморачивался, делалось все в рамках концепции "проверь себя", но ничего не мешает добавить.
    Ответ написан
    Комментировать
  • Как добавить слово в адресную строку при нажатии на кнопку?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Ответ написан
    Комментировать
  • Плохо ли так выводить html?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В целом - дело вкуса, можете вообще heredoc использовать. Я предпочитаю второй способ, в частности:
    1) редактор понимает стили и форматирование
    2) редактор понимает открытие/закрытие тегов
    3) редактор умеет фолдинг хтмл кода, что удобно
    4) меньше ошибок с кавычками и экранированием

    и - мелочь, но цепляет - использовать ехо для вывода - небольшой, но накладной расход.
    Ответ написан
    Комментировать
  • Сравнение input с БД и занесение в другую таблицу?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    А можно в двух словах логику реализации по шагам? А то код больше похож на письма обкуренного Шляпника...

    UPD: eliz_min, ну, вы конечно дополнили, но логику так и не проследил, ну да ладно... по шагам что-ли...

    1) код должен быть понятным и простым, так же желательно a) использовать реальные и логичные английские термины и слова (которые не знаешь - гуглишь), b) все данные готовить заранее, c) для поиска в базе неточных словоформ искать через like, d) в идеале использовать подготовленные выражения (я здесь оставил как есть, почитайте и примените самостоятельно), e) поля в бд обычно называются в нижнем регистре, разделители слов - андерскор (с разделителем все ок, поля надо нормально назвать), f) имена полей и таблиц желательно обернуть `` - обратными кавычками
    $name = mysqli_real_escape_string($link,$_POST['name']);
    $sql = "SELECT `product_id`, `calorie` 
    FROM `product` 
    WHERE `name_of_product` like'%{$name}%' 
    LIMIT 1";
     $query = mysqli_query($link, $sql);
    $data = mysqli_fetch_assoc($query);
    ок, тут мы (возможно) получили ид и количество калорий от еды с названием которое пришло постом...

    2) далее интереснее...
    пользователь вводит название продукта, который он употребил и ему выводиться сумма калорий за сутки.
    Как человек поверхностно знакомый с диетическим питанием, подозреваю что "я съел сыр" и "я сожрал 2 кило сыра" не всегда одно и то же. понимаете к чему я клоню?
    На данном этапе создана база данных с продуктами и таблицей употребленных, в которой находится id юзера,id продукта и время.
    Чего-то не хватает, вам не кажется? Ладно, едем дальше...

    3) и тут же на первой строчке у нас все становится очень интересным, я бы даже сказал что тут Шляпник особо глубоко затянулся... :
    if($data['Name_Of_Product'] === md5(md5($_POST['name']))) {...
    итак, учитывая что никакой Name_Of_Product мы в запросе не просили выбрать, естественно что тут уже будет лажа, однако далее еще интереснее: md5(md5($_POST['name'])), загадочные шаманские вуду пляски, видимо чтобы этот кусок кода внутри условия ТОЧНО никогда не выполнился. Вообще хотелось бы услышать, каким образом этот код пришел вам в голову и что он по вашему должен делать? Так, чисто понять как работает причудливый разум...

    4)
    mysqli_query($link, "INSERT INTO comsume (Id_p)VALUES ($data['Product_id'])");
    ...в которой находится id юзера,id продукта и время.
    но вносите вы почему то только ид продукта, кроме того, как я уже говорил - "чего то не хватает" )
    Ответ написан
  • Как изменить переменную при переходе по ссылке?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    ну тоесть например запомнить имя файла или типо того.
    на бумажке запиши...

    $_GET, $_SESSION, $_COOKIE в зависимости от ситуации
    Ответ написан
  • Как сделать такую функцию с массивами?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    форич (аррэй аз кей=> валуе){
       ...
    }
    Ответ написан
    Комментировать
  • Одна PHP работает в функции без установленного переменного, а другая нет, почему?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    В одной PHP проходит без каких либо ошибок,
    То что вы их не видите не значит что их нет.
    Ответ написан
    Комментировать
  • Как реализовать хранение и вывод статистики пользователя?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Ну то есть не правильно же будет при каждом открытии данной страницы на сервере\клиенте всё считать?
    Почему, очень даже правильно, для этого и придуманы быстрые хранилища и SQL/noSLQ бд.

    но что если у пользователя 10 000, 100 000, 1 000 000 транзакций? Как такие задачи решаются?
    Во первых, юзер все равно не получает все мульен транзакций в статистике за раз, получает постранично, а это вполне нормальные запросы по 50-100 записей за раз, что вполне себе быстро. Ну и всякие редко обновляющиеся и часто запрашиваемые данные хранят в кэше, дабы не дергать бд попусту.

    идти в аналитику и смотреть что изменилось, а не измениться ничего, так как сервак не успеет посчитать всё.
    Это просто не знаю какой мертвый сервак должен быть, чтобы не успеть "посчитать" за время необходимое для прохода 1-2 экранов приложения.
    Ответ написан
  • В теге form атрибут action не указывает на конкретный файл php, почему?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Гуглить:
    Единая точка входа
    mod_rewrite или аналогичный механизм
    роутинг

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

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    parse_str(str_replace('/','&',$str), $output);
    var_dump($output);
    extract($output);
    Учитывайте, что вываливая переменные из неизвестного источника в текущий контекст вы рискуете нарваться на подмену текущих переменных на левые значения, или, при использовании флага EXTR_SKIP, на неявное поведение. В идеале используйте массив, полученный при парсинге.
    Ответ написан
    6 комментариев
  • Почему return не возвращает значение переменной?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    5eb1935c029ad114391960.jpeg
    тут не хватает ретурна. Почему - сами догадаетесь или надо объяснять?
    Ответ написан
    Комментировать