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

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    SELECT v.product, , v.link FROM v_product v WHERE v.id = 5463 ORDER BY v.product ASC;
    SELECT i.id as info_id, i.link_to_site FROM infograph v WHERE id = 5463;
    SELECT i.info, description, title, price, first_letter FROM baseinfo v WHERE id = 5463;

    Во первых - куда делся префикс алиаса в условии во втором запросе и почему сам алиас как в первом, хотя используется какой-то i? И тот же вопрос про третий запрос. Еще и в первом 2 раза выбран v.link... Короче бардак с самими запросами для начала пофиксить бы...
    Во вторых - почему у вас айди в 3 разных таблицах один и тот же? Может это не первичный индекс, а внешний ключ, тогда он должен иначе называться. И где тогда сам первичный ключ?
    В третьих - сделать нормальную структуру, ну и тогда можно объединить их через внешний ключ, с указанием что один из них (базовый) равен 5463.

    Похоже что сам синтаксис вам предельно незнаком, и вы просто пишете рандомные строки...
    Ответ написан
    5 комментариев
  • На почту не приходит отправленная форма с помощью MAILER?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    $mail->SMTPDebug = 1;
    Ответ написан
  • Не могу вызвать файл по адресу домена mail.php а пишет 404 хотя файл есть?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Скорее всего настроенный mod_rewrite или аналогичная настройка для нжинкса, для реализации единой точки входа. Или вы не в ту папку положили файл.
    Ответ написан
    Комментировать
  • Куда прописывать php_admin_flag display_startup_errors on?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    www.softtime.ru/info/apache.php?id_article=97

    Использование директив php в конфигурационных файлах Apache возможно только при подключении PHP в качестве модуля, а также при соответствующей настройке привилегий AllowOverride, которые должны быть установлены либо в значение Options, либо в значение All.

    AllowOverride Options
    AllowOverride All
    Ответ написан
  • Какие могут быть ошибки при прикреплении файла к письму?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    1. В каких случаях возникнет $msg .= 'Failed to move file to ' . $uploadfile;?
    В случае когда
    move_uploaded_file($_FILES['userfile']['tmp_name'][$ct], $uploadfile)
    вернет фалс.

    Что конкретно должно быть не так?
    https://www.php.net/manual/ru/function.move-upload...

    Имеется в виду, относится ли эта причина к типам ошибок E_WARNING, E_NOTICE и т.д.?
    Там все написано.
    Ответ написан
  • Создание массива, запись его в файл, как получить массив из файла?

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

    создаю выборку из бд в массив и записываю его в текстовый файл
    Не массив, а массивы. И вопрос о том зачем вам эта выборка в файле остается открытым.

    пытаюсь получить массив из файла
    Не пытаетесь, а получаете, правда только 1 массив, остальные записи игнорируются, так как сериализация (и соответственно десериализация), подразумевает 1 переменную (а вы туда пихаете несколько).

    а хотелось бы что бы вот так
    То что ключи массива при этом у вас одинаковые вас не смущает? Например, что конкретно по вашему мнению вы получите из такого массива, при обращении вот так:$array['oc_loadprice_schema']??
    Ответ написан
    8 комментариев
  • Какой JS скрипт или библиотеку использовать для загрузки изображений?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    но при создании можно не полностью заполнить обязательные
    Как? И почему? Слово "обязательные" как бы намекает что без них ничего не должно работать, форма просто не должна срабатывать.

    Вообще не очень понятно, в чем проблема? После сохранения продукта у вас должна быть
    а) запись в таблице продуктов,
    б) N записей в таблице изображений
    в) собственно лежащие где-то (не особо важно где) изображения, ссылки на которые лежат в таблице изображений.
    В ларе создается зависимость один ко многим на таблицы продуктов и картинок.
    Все, дальше что бы вы не делали, и как бы не заливали, происходит независимо от заполненности/незаполнености полей...

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

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    UPD: так как ТС не может сразу описать нормально вопрос, ответ полностью нафиг изменен.
    мой код вот такой:
    $another = [
        [
        'button' => 'Смотреть все фото',
        'title' => '',
        'display' => '_none',
        'link' => "/page1.php",
        'popup' => 'myBtn3',
        ]
        ];

    Добавлять через php в button вот эту строчку "onclick="location.href = ...", чтобы кпокна становилась ссылкой,
    и так же хочу ссылку, которая будет находиться в "onclick="location.href = ...", определять в php...
    когда 'popup' => 'myBtn3', а не пусто, то по классу myBtn3 вешается событие для js, которое по клику открывает попап если оставлять "onclick="location.href = ..." для button , то идет переход по ссылке (который мне не нужен).

    То есть, в вашем случае, вы не смогли определиться что единственным значимым условием для вас является непустое значение 'popup' => 'myBtn3',...
    foreach ($another as $slide) :;?>
        <div class="another-request__title <?= $slide['display']; ?>"><?= $slide['title']; ?></div>
        <div class="another-request__button <?= $slide['popup']; ?>">
          <div class="button">
            <a class="button_gray" <?=(empty($slide['popup']))?'':('href="'.$slide['link'].'" ');?>>
                 <?= $slide['button']; ?>
            </a>
          </div>
        </div>
        <?php endforeach; ?>
    Ответ написан
  • Элементы на php не отображаются на веб сервере в локальной сети. Как исправить?

    ThunderCat
    @ThunderCat Куратор тега PHP
    {PHP, MySql, HTML, JS, CSS} developer
    Я создал веб-сервер, переместил в папку "htdocs" шаблон сайта
    Код отсутствует, скрин от непонятно чего совершенно лишний и не несет никакой информации. Подозреваю что пути к ресурсам у вас указывают на локальное расположение ресурсов, в то время как для серверного использования нужно указывать пути от корневой папки сервера.
    Это легко проверить, посмотрев куда конкретно идет запрос при "The requested URL was not found on this server".
    Ответ написан
    Комментировать
  • Как выводить предупреждения в php?

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

    Как варианты реализации:
    1) Просто перед обработкой выбираем галочку "убрать все дубликаты", простое и рабочее решение, вы заранее определяете алгоритм обработки и больше ничего не надо делать.
    2) На сервере проходимся по файлу, находим все дубликаты и записываем массив позиций, выдаем человеку этот массив в виде списка галочек, после отправки - удаляем помеченные позиции. Реализация в разы сложнее, но полностью удовлетворяет условию.
    3) Вариант с извращениями - на сервере перебираем файл, при нахождении дубля отправляем клиенту галочку, а в сессию пишем позицию с которой продолжать и завершаем скрипт. По получении запроса с галочкой - продолжаем с той же позиции. Криво, но абсолютно повторяет функционал описанный вами.
    Ответ написан
    Комментировать
  • Как в php преобразовать строку с числом в строку?

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

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

    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 комментария
  • Почему запрос в 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 Куратор тега 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 комментарий