Ответы пользователя по тегу PHP
  • Почему при добавлении R::freeze() перестает находить таблицы?

    RedBeanPHP по умолчанию выполняет проверку на существование таблиц и столбцов.
    Если установить R::freeze(true), никаких проверок выполняться не будет.
    Ответ написан
    Комментировать
  • Как выполнить поиск только по заголовкам постов?

    @petruncho Автор вопроса
    Решение:
    Спасибо Dymok за наводку)

    1. Добавляем в functions.php темы
    // find_posts_by_title_part — название функции, можно заменить на любое свое название
    // title_part — название нового параметра для WP_Query()
    function find_posts_by_title_part( $where, &$wp_query ){
        global $wpdb;
    
        if ( $title_part = $wp_query->get( 'title_part' ) ) {
            $param = esc_sql( $wpdb->esc_like( $title_part ) );
            $sql .= " AND " . $wpdb->posts . ".post_title LIKE '%" . $param . "%'";
        }
    
        return $sql;
    }
    add_filter( 'posts_where', 'find_posts_by_title_part', 10, 2 );


    2. Пишем запрос к базе данных через WP_Query()
    $args = array(
      'posts_per_page' => -1,
      'post_type'      => array('projects', 'jobs', 'services'),
      'order'          => 'ASC',
      'title_part'     => 'инже',
    );
    
    $query = new WP_Query( $args );
    Ответ написан
    Комментировать
  • Как правильно настроить телеграмм-бота?

    Какой функционал нужен от телеграм бота?
    Я забил на все библиотеки, которые есть и сделал свою на Guzzle и ORM (PHP).
    На самом деле все просто — создаешь бота, активируешь работу через webhook.
    Webhook присылает данные в POST, их дампишь и отправляешь ответные запросы через Telegram API.
    Времени на изучение уйдет час-два. Намного быстрее, чем ковыряться в чужих библиотеках.
    Ответ написан
  • Отправка формы и разделение на массив данные из формы?

    Примерное решение твоей задачи + следующие шаги для самостоятельного решения

    1. Нужно указать название таблицы, где хранятся пользователи и их балансы.
    2. Нужно заменить название столбца с именем пользователей.
    3. Нужно заменить название столбца с балансом пользователей.
    4. Желательно, собрать групповой SQL запрос, чтобы разом обновить несколько данных в MySQL.
    5. Желательно, использовать PDO (подготовленные SQL запросы)
    6. Желательно, делать проверку на существование пользователя. Если его нет, то создавать нового и начислять баланс.

    // Получаем строку
    	$str = 'Вася - 500; Петя - 450; Олег - 300; Александр - 250; Евгений - 100;';
    
    	// Удаляем все пробелы из строки
    	$str = str_replace(' ', '', $str);
    
    	// Разделяем пользователей
    	$users = explode(';', $str);
    
    	// Проходимся по всем пользователям
    	foreach ($users as $userIndex => $user){
    		// Разделяем данные пользователя
    		$userData = explode('-', $user);
    		
    		$userName = $userData[0]; // имя
    		$userAmount = $userData[1]; // сумма
    
    		// Собираем одиночный SQL запрос
    		$sql = 'UPDATE users SET balance = balance + ' . $userAmount . ' WHERE user_name = ' . $userName;
    
    		// Выполняем запрос к базе данных
    		$mysqli->query( $sql );
    	}
    Ответ написан
    2 комментария