Ответы пользователя по тегу PHP
  • Можно ли сделать лучше?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Лучше всего на фронте реализовывать, задача не такая сложная. У Вас там bootstrap, вы выводите каждый товар как столбец (col-lg-3 col-md-3 col-sm-6 и т.д.). Что мешает выводить строками?
    Например
    <div class="row">
        <div class="col-lg-3 col-md-3 col-sm-6 col-xs-4 col-mob-6 col-xxs-6 l-category-model-wrap">
            вёрстка товара
        </div>
        <div class="col-lg-3 col-md-3 col-sm-6 col-xs-4 col-mob-6 col-xxs-6 l-category-model-wrap">
            вёрстка товара
        </div>
        <div class="col-lg-3 col-md-3 col-sm-6 col-xs-4 col-mob-6 col-xxs-6 l-category-model-wrap">
            вёрстка товара
        </div>
        <div class="col-lg-3 col-md-3 col-sm-6 col-xs-4 col-mob-6 col-xxs-6 l-category-model-wrap">
            вёрстка товара
        </div>
    </div>
    <div class="row">
        <div class="col-lg-3 col-md-3 col-sm-6 col-xs-4 col-mob-6 col-xxs-6 l-category-model-wrap">
            вёрстка товара
        </div>
        <div class="col-lg-3 col-md-3 col-sm-6 col-xs-4 col-mob-6 col-xxs-6 l-category-model-wrap">
            вёрстка товара
        </div>
    </div>

    row - строка, даже если элементов внутри не будет хватать, он все равно перескочит на новую.
    Массив, который будете передавать в JS из PHP надо будет тоже изменить примерно
    так
    Array
    (
        [190516] => Array
            (
                [0] => Array
                    (
                        [test] => 123
                        [name] => test
                    )
                [1] => Array
                    (
                        [test] => 123
                        [name] => test
                    )
                [2] => Array
                    (
                        [test] => 123
                        [name] => test
                    )
                [3] => Array
                    (
                        [test] => 123
                        [name] => test
                    )
            )
        [190521] => Array
            (
                [0] => Array
                    (
                        [test] => 123
                        [name] => test
                    )
                [1] => Array
                    (
                        [test] => 123
                        [name] => test
                    )
                [2] => Array
                    (
                        [test] => 123
                        [name] => test
                    )
            )
        [190525] => Array
            (
                [0] => Array
                    (
                        [test] => 123
                        [name] => test
                    )
                [1] => Array
                    (
                        [test] => 123
                        [name] => test
                    )
            )
    )
    Ответ написан
  • Не корректно отрабатывает try\catch. Как исправить?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Так ты перехватил ошибку, но не выводишь ее.
    Просмотрел дебагером, исключение генерируется, попадает в блок catch и скрипт продолжает работать (хотя его работа должна прерываться). Не подскажите из-за чего такая штука может происходить?

    У тебя еще есть код после try-catch, вот он и выполняется.

    UPD. Примерно так должен выглядеть ваш метод
    <?php
        public function sending(string $event, EmailAddress $recipient, array $tpl = array()): void
        {
            try {
                $this->mailer->addAddress($recipient->email, $recipient->name);
                $this->mailer->Subject = $subject;
                $this->mailer->Body = $body;
                $this->mailer->isHTML(true);
                if (!$this->mailer->send()) {
                    throw new EmailSendingFailed("Couldn't send email. Invalid sender address '{$recipient->email}'.");
                }
                return ['status' => 'success'];
                $this->mailer->ClearAddresses();
            } catch (Exception $e) {
                return ['status' => 'error', 'error_message' => $e->getMessage();];
            }
        }


    Результат выполнения - массив со статусом, и если есть, с текстом ошибки.
    Ответ написан
    Комментировать
  • Как загрузить данные из файла в массив php?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Функция file() читает файл построчно в массив
    Ответ написан
    3 комментария
  • Как решить ошибку подключения к бд mysql 8.0.13 через php 5.6.40?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    PHP использует порт 3306 для соединения с mysql
    Ответ написан
  • Как правильно получить CRC-32 файла?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    $sum = hash_file ("crc32b", 'C:\\file.zip');
    Ответ написан
    Комментировать
  • Как решить проблему редактирования значений в таблице?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Прикрути JS. При нажатии редактировать, всплывает модальное окно с формой редактирования, кнопка сохранить отправляет AJAX в php-обработчик, который обновляет записи в бд, возвращает результат, JS обрабатывает ответ, и редактирует таблицу и скрывает модальное окно.
    Ответ написан
    Комментировать
  • Как подключить обработчик формы, на форму из Pop-up?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Должно сработать
    $(document).on('submit', 'form', function (){
        //Ajax
    });
    Ответ написан
    Комментировать
  • Что я указываю неправильно в функции filter_var(..., FILTER_VALIDATE_REGEXP, ...)?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    <?php
        
        $string = '+79618026561';
        
        $check = filter_var( $string, FILTER_VALIDATE_REGEXP, [
                "options" => ["regexp"=>"/^(\s*)?(\+)?([- _():=+]?\d[- _():=+]?){10,14}(\s*)?$/"],
            ]
        );
    
        if (!$check){
            echo 'Телефон задан в неверном формате!';
        }
        else{
            echo 'Телефон задан в верном формате.';
        }
    Ответ написан
    1 комментарий
  • Как сделать задержку на php?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    header("refresh: 5; url=https://test2.ru/");
    Ответ написан
    Комментировать
  • Как исправить условие if isset?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Зачем через foreach выводить переносы строк? Чтобы получить последний элемент массива? Так обратись к нему напрямую. В следующий раз при оформлении не забывай про отступы.
    <?php
    $numbers = $_POST['comment'];
    
    if(isset($_POST["start"])){
    //перезапись
    $html = file_get_contents( '1.php' );
    preg_match_all( '#<header>(.+?)</header>#is', $html, $matches );
    $old_comments = $matches[1][0];
    $filename = '1.php';
    $file = file_get_contents($filename);
    $title_pattern='#<header>(.*)?</header>#s';
    $test= preg_replace($title_pattern, "<header><div>$numbers</div>$old_comments</header>", $file);
    file_put_contents($filename, $test);
    //редирект
    header('Refresh:0; url=http://test.ru/2.php?redirect=1');
    }
    file_get_contents('1.php');
    ?>
    <form method="POST">
    <input type="text" name="comment">
    <input type="submit" name="start" value="send">
    </form>
    Ответ написан
    Комментировать
  • Как вывести данные из базы в формате JSON (с помощью php)?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Держи
    <?php
        /* создаем соедиенение с бд*/
        $link = mysqli_connect("localhost", "root", "", "test");
    
        /* для примера возьмем такой doctorid*/
        $doctorid = 2; 
    
        /* создаем подготавливаемый запрос */
        $stmt = mysqli_stmt_init($link);
        $sql = '
            SELECT
                cal.`doctorid`,
                doc.`doctor-name`,
                cal.`clinicid`,
                clin.`clinic-name`,
                cal.`start`,
                cal.`end`
            FROM
                `bio_vet_calendar` cal 
                JOIN `bio_vet_clinic_department` clin ON cal.`clinicid` = clin.`clinicid`
                JOIN `bio_vet_doctor` doc ON cal.`doctorid` = doc.`doctorid`
            WHERE
                cal.`doctorid` = ?
        ';
        if (mysqli_stmt_prepare($stmt, $sql)) {
            /* привязываем переменные к параметрам */
            mysqli_stmt_bind_param($stmt, "i", $doctorid);
            /* выполняем запрос */
            mysqli_stmt_execute($stmt);
            /* выбираем данные из результата */
            $response = mysqli_stmt_get_result($stmt);
            /* преобразовываем в ассоциативный массив*/
            $result = mysqli_fetch_all($response, MYSQLI_ASSOC);
            /* закрываем запрос */
            mysqli_stmt_close($stmt);
        }
        
        /* закрываем соединение с бд*/
        mysqli_close($link);
        
        /* выводим JSON */
        echo json_encode($result);

    Только соединение с БД поправь на своё.
    Ответ написан
    6 комментариев
  • Как сделать правильное выполнение скрипта?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Почему при первом заходе редиректит, а при втором все верно

    Потому что
    После передачи клиенту cookie станут доступны через массив $_COOKIE при следующей загрузке страницы.

    Так гласит документация
    Ответ написан
    Комментировать
  • Как получить число первого вторника текущего месяца?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    <?php
        $first_tuesday = date("d.m.Y", strtotime('first tuesday of this month'));
    Ответ написан
    Комментировать
  • Как записать html код в переменную php?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    <?php
    $word = 'red';
    $html = "<div class=\"$word\"> $word </div>";
    echo $html;
    //или
    $html = '<div class="'.$word.'"> '.$word.' </div>';
    echo $html;
    Ответ написан
    Комментировать
  • Что я написал не правильно в функции data?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    У Вас нет такой функции data(), в PHP есть функция date()
    Ответ написан
    1 комментарий
  • Как изменить счетчик автоматического увеличения в MySQL на php?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Выполнить запрос,
    ALTER TABLE tbl AUTO_INCREMENT = 10;
    где tbl - название таблицы, а 10 - нужное значение для AUTO_INCREMENT.
    Ответ написан
    1 комментарий
  • На каких проектах можно поднять свой скилл больше всего?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    идти работать на проект с PHP 5.4 покрытый легаси кодом в 2019 году (но при этом переводить его на PHP 7+)

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


    + дополнительно прокачаете скиллы в php 7+
    Ответ написан
    Комментировать
  • В чём проблема в коде?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Так Вы внимательнее посмотрите на свой код. Первые 4 строки и последняя срабатывают вне зависимости от $_POST['submit']. Другими словами, при обновлении страницы, вы формируете сокращенную ссылку для пустого $url, потом проверяете есть ли $_POST['submit'], если есть выводите ссылку, записываете в файлы, если нет то ничего не выводите и не пишите ни в какие файлы, потом пишите ссылку для пустого $url в бд. Вас это не смущает? Не надо быть профи, чтобы понять какая это глупая ошибка.

    Примерно так должно быть у Вас, чтоб не было ложных срабатываний
    ↓ ↓ ↓ КОД ↓ ↓ ↓
    <?php
        if ($_POST['submit']) {
            $h = "QqWwEeRrTtYyUuIiOoPpAaSsDdFfGgHhJjKkLlZzXxCcVvBbNnMm1234567890"; //Выбираем символы, из которых будет состоять наш рандом
            $rand = substr(str_shuffle($h), 0, 5); //создаём ранд. Цифра 5 обозначает длину ранда
            $site = "http://test.com/"; //Адрес сайта. 
            $url = $_POST['url'];
            echo "<div class='a'>
            <a href='".$site.$rand."'>".$site.$rand."
            </a>
            </div>"; //выводим пользователю ссылку, в виде ссылки
            $f = fopen("a/$rand.php", "w"); //Файл с именем ранда.
            fwrite($f, "<?php header('Location: $url') ?>"); //И записываем в код редиректа, с ссылкой которую ввёл пользователь
            fclose($f); //Закрываем файл
            $fh = fopen(".htaccess", "a"); //Открываем файл .htaccess с дозаписью на последний байт
            fwrite($fh, "
            RewriteRule ^$rand$ /a/$rand.php"); //Записываем ссылку на файл в каталоге a и её сокращённый вариант, который был дан пользователю. 
            fclose($fh); //Закрываем файл
            $connect->query("INSERT INTO `url` (`url`) VALUES ('".$site.$rand."')");
        }
    Ответ написан
    3 комментария
  • Как на php-сервере проверить данные?

    irishmann
    @irishmann
    Научись пользоваться дебаггером
    Использовать подготовленные запросы и не париться, если Вас беспокоит безопасность БД.
    Проверяйте регулярными выражениями, вырезайте JS-скрипты.

    UPD.: А вообще, по-хорошему, стоит пересмотреть концепцию. Зачем хранить HTML, не проще его генерировать на основе каких-то минимальных данных?
    Ответ написан