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

    $str = '[abc] {abc} abc (abc) [abc]';
    $result = preg_replace('/\(.*?\)|\{.*?\}|\[.*?\]/', '!', $str);
    print($result); // Выведет "! ! abc ! !"
    Ответ написан
    Комментировать
  • Нужно обновить значение в БД mysql по нажатию кнопки, а после удалить кнопку?

    А что, собственно, у вас трудности вызывает?

    Как это можно осуществить?

    В общем это выглядит так:
    1. Проверяете ваше условие. Если оно возвращает true, показываете кнопку.
    2. Нажимаете кнопку, показываете сообщение.
    3.а. Можете обновлять запись сразу при открытии сообщения.
    3.б. Обновляете запись при закрытии сообщения.
    4. Условие в п.1. больше не должно проходить проверку.

    P.S. В условии, о котором вы говорите, должен проверяться какой-то флаг прочтения сообщения, либо что угодно другое, по чему вы сможете однозначно определить, что сообщение было открыто. Например, при обновлении записи можно ставить дату прочтения, или просто флаг true в специально отведенном для этого столбце.
    Ответ написан
    2 комментария
  • Почему в цикле for в PHP функция unset удаляет не все четные элементы массива?

    Как вам уже ответили, потому-что вы увеличиваете значение $i ($i=$i+2) и в то же время уменьшаете количество элементов в массиве (unset($array[$i])).

    Чтобы удалить все четные значения из массива, вы можете переписать свой код следующим образом:
    //Создаем массив с числами от 0 до 20
    $array = range(0, 20, 1);
    
    foreach($array as $i => $v) {
            // проверяем остаток при делении по модулю
    	if ($v % 2 === 0) {
    		unset($array[$i]);
    	}
    }
    
    foreach ($array as $value){
    	echo $value . '<br>';
    }

    Результат выполнения будет таким: 1 3 5 7 9 11 13 15 17 19
    Ответ написан
    Комментировать
  • Ошибка Undefined array key "confirmation" при загрузке страницы, как исправить?

    Искал в интернете и кто-то писал поставить условие if(isset($_POST['login']), но это не помогло, пробовал даже так if(isset($_POST))

    Вам нужно разобраться в вашем коде, а не пробовать решить проблему методом тыка

    Undefined array key "confirmation" in
    sign.php on line 30

    Собственно, вам черным по белому сообщается, что ошибка в файле sign.php на строке 30.
    Вот и смотрите почему вы пытаетесь обратиться к ключу 'confirmation', которого не существует в массиве.

    Подсказка: потому-что есть кейс, при котором 'confirmation' у вас не существует и это надо учитывать.
    Ответ написан
    Комментировать
  • Как выполнить cURL запрос с ключом -u в PHP?

    Для параметра -u в PHP нужно передать CURLOPT_USERPWD
    https://www.php.net/manual/ru/function.curl-setopt.php

    UPD.
    curl_setopt($ch, CURLOPT_USERPWD, '12345:');
    Ответ написан
    3 комментария
  • Отправка формы без перезагрузки страницы?

    Проверяйте, что jquery точно подключился. Смотрите другие ошибки в консоли. Код который вы предоставили в песочнице отрабатывает корректно.
    6578098a3b61d305783675.png
    Ответ написан
    Комментировать
  • Как из формы получить описание выбранного select option с помощью php POST?

    Вы же где-то берёте, что curs1 = Курс 1, curs2 = Курс 2, curs3 = Курс 3?

    Вы либо сопоставляете значение по curs1, curs2, curs3 в php, если оно у вас где-то хранится, например:
    $courses = [
        'curs1' => 'Курс 1',
        'curs2' => 'Курс 2',
        'curs3' => 'Курс 3'
    ];
    
    $courses[$_POST['scourse']];

    Либо пишите Курс 1, Курс 2, Курс 3 в value.
    <select name="scourse" id="selectcourse"  >
              <option value="">Выберите курс для обучения</option>
              <option value="Курс 1">Курс 1</option>
              <option value="Курс 2">Курс 2</option>
              <option value="Курс 3">Курс 3</option>
    </select>

    UPD: Или как в комментариях написали, value в этих оption можно вообще не писать.
    <select name="scourse" id="selectcourse"  >
        <option value="">Выберите курс для обучения</option>
        <option>Курс 1</option>
        <option>Курс 2</option>
        <option>Курс 3</option>
    </select>


    P.S. И не забывайте валидировать то, что приходит в $_POST и $_GET.
    Ответ написан
    6 комментариев
  • Как добавить в регулярное выражение кириллицу?

    Нужно выполнять с ключем u и, соответственно, а-яА-Я в нужное место добавить:
    $name = preg_replace('/(^[0-9]+|[^a-zA-Z0-9\-\_\:]+)/u',  '',  $name);


    Можно еще использовать ключ i, чтобы сразу учитывался и нижний и верхний регистр.
    Ответ написан
    3 комментария
  • Почему код падает с ошибкой?

    Это что у вас вообще такое?
    count($translit>0)
    Ну и собственно текст вашей ошибки: Argument #1 ($value) must be of type Countable|array, bool given

    Вы в count передаёте в параметр булево значение, которое функция не поддерживает. Она ожидает получить в параметрах либо объект, который реализует интерфейс Countable, либо массив.

    https://www.php.net/manual/ru/function.count.php
    Ответ написан
    Комментировать
  • Как прописать API от timeweb?

    x-app-key нужно в заголовке передавать, а не в теле, как вы делаете это. Пример:
    curl -X POST "https://api.timeweb.ru/v1.2/access" \
    -H "accept: application/json" \
    -H "x-app-key: 9d999b163fdc572524028201a02c9999" \
    -u cn90632:dhasfaGdss8F

    Лучше всего, сначала ознакомится с документацией, прежде чем, что-то пилить:
    https://timeweb.com/ru/docs/publichnyj-api-timeweb...
    Ответ написан
    Комментировать
  • Как организовать хранение заявок и клиентов в БД?

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

    Делаете таблицу для пользователей, в которой присутствуют поля для телефона и для эл.почты. И записываете либо телефон, либо эл. почту и потом выводите где нужно соответствующее поле. С таблицами по заявкам связываете пользователей по user_id.

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

    Нет, не нужно. Просто выводите там где нужно телефон, а в другом случае эл.почту.

    Таблица users: id, name, phone_number, email;
    Таблица application_product: id, user_id, message;

    Потом вы можете делать запрос к базе данных, например, так:
    SELECT u.name, u.email, ap.message
    FROM application_product ap
        JOIN users u ON ap.user_id = u.id
    WHERE ...


    Для application_back_call соответственно выбираете u.phone_number вместо u.email.
    Ответ написан
    3 комментария
  • Как из JSON массива правильно получить id?

    У вас там как-бы разная структура массивов. В первом случае у вас массив верхнего уровня содержит исключительно массивы (т.е. список), поэтому ваш foreach отрабатывает корректно. Во втором случае, массив содержит элементы других типов данных, кроме массива (числа и строки). В это случае вам не нужно перебирать $matches в цикле, а можете сразу обращаться к элементам массива через $matches['id'], $matches['geo']['country'] и т.д.
    Ответ написан
    1 комментарий
  • Есть ли на PHP сокращенный перебор массива?

    foreach($array as $item) {
    // тут ваш код
    }

    https://www.php.net/manual/ru/control-structures.f...
    Ответ написан
    Комментировать
  • Как сделать вывод данных из phpmyadmin в лк пользователя при активной сессии?

    В общем, прошу не обижаться, но учитывая уровень ваших знаний, я даже не буду предлагать варианты с join.

    В вашем случае, наверно, лучше использовать примитивный вариант вроде:

    if(!empty($_SESSION['id'])) {
        $forma = selectOne('osago', ['id_user' => $_SESSION['id']]);
    
        if (empty($forma)) {
            $forma = selectOne('kasko', ['id_user' => $_SESSION['id']]);
        }
    }


    UPD. Возьмите учебник какой-нибудь почитайте по PHP, MySQL и т.д. Что-нибудь вроде "Создаем динамические сайты с помощью PHP, MySQL ...." от O'Reilly, "PHP в подлиннике" Д.Котерова
    Ответ написан
    2 комментария
  • Как вывести элемент из json?

    Если вы получаете json, то вам нужно его сначала декодировать: json_decode

    $result = $test->billCreate($billSettings);
    $result = json_decode($result, true); // true указывает на то, что декодируем как ассоциативный массив
    echo $result['success'];
    Ответ написан
    1 комментарий
  • Можно ли без особых знаний php доработать phpgeo под работу с запросами?

    "Если долго мучиться, что-нибудь получится"
    А, если долго мучиться не хотите, то вам сюда https://freelance.habr.com/
    Ответ написан
    Комментировать
  • Что означает данная запись в PHP?

    В данном коде формируется массив в котором ключ массива задается из $row['key'], а значение из $row['value'].
    $row['value'] в квадратных скобках для того, чтобы элемент массива был также массивом.

    // исходная строка
    $options[$k] = [$row['value']];
    // означает то же самое, что
    $options[$k] = array($row['value']);
    // или
    $options[$k][] = $row['value'];


    В вашем случае используется короткий синтаксис для array(), который поддерживается с версии 5.4.
    $array = array(
        "foo" => "bar",
        "bar" => "foo",
    );
    
    // Использование синтаксиса короткого массива
    $array = [
        "foo" => "bar",
        "bar" => "foo",
    ];


    Подробнее о массивах php здесь:
    https://www.php.net/manual/ru/language.types.array.php
    Ответ написан
    Комментировать
  • Сумма скидки и общая сумма со скидкой php?

    1) Нужно считать сумму (с учетом скидки или без неё, в зависимости, что хотите вывести) по каждой позиции в корзине и потом складывать их. Можете даже посчитать общую сумму со скидкой и без скидки и вывести их рядом.
    2) По вопросу увеличения количества товаров в корзине и отображения правильной общей суммы, у вас должен быть какой-то асинхронный запрос, который будет получать актуальные данные по корзине и обновлять их на странице.
    Ответ написан
  • Почему выдаёт ошибку?

    Потому-что в методе encode ожидает 3 параметра (там у вас даже написано это). Перейдите в метод encode и посмотрите, чего не хватает. Обычно передается payload, secret key и algorithm.
    $jwt = JWT::encode($payload, $key, 'HS256');
    Ответ написан
    Комментировать
  • Как получить пользователя из базы данных после добавления?

    Вы пытаетесь в mysqli_fetch_assoc передать булево значение, о чем вам говорит ошибка: Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given in. А эта функция принимает параметр другого типа: https://www.php.net/manual/ru/function.mysql-fetch....

    UPD: ошибка возникает потому-что вы используете mysqli_multi_query для регистрации пользователя, а потом отправляете запрос mysqli_query для авторизации. Вам нужно сначала прочитать результат из mysqli_multi_query через mysqli_next_result(), а потом делать запрос на авторизацию пользователя. А лучше для регистрации пользователя также использовать mysqli_query. Это происходит потому-что mysqli по-умолчанию использует не буферизованные запросы.
    Ответ написан