За последние 24 часа нас посетили 37947 программистов и 7809 роботов. Сейчас ищет 1781 программист ...

Вывод нескольких результатов

Тема в разделе "PHP для новичков", создана пользователем Sega1821, 7 янв 2023.

Метки:
  1. Sega1821

    Sega1821 Активный пользователь

    С нами с:
    22 мар 2021
    Сообщения:
    4
    Симпатии:
    0
    Здравствуйте. Беру из бд все нужные результаты, но почему то выводится только 1, в чём моя ошибка?

    <?php
    ini_set('error_reporting', E_ALL);
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);

    class Search {
    function select_list($query) {
    //установим уровень видимости нашего объекта, чтобы он был доступен внутри метода
    global $mysqli;
    //выполняем запрос
    $q = $mysqli->query($query);
    if (!$q) {
    return null;
    }
    $ret = [];
    //собираем массив
    while ($row = $q->fetch_array(MYSQLI_BOTH)) {
    $out = array_push($ret, $result);
    }
    return $ret;
    }
    }


    //если мы получили что-то через $_POST
    if (isset($_POST['search'])) {
    // соединение с базой
    include('search/db.php');
    $db = new Search();
    $word = $mysqli->real_escape_string($_POST['search']);
    // формирование поискового запроса к базе

    $sql = "SELECT wp_posts.post_title, wp_posts.ID, wp_postmeta.meta_value, wp_postmeta.post_id, wp_posts.post_status
    FROM wp_posts JOIN wp_postmeta
    ON wp_posts.ID = wp_postmeta.post_id
    WHERE wp_posts.post_title LIKE '%" . $word . "%' AND wp_posts.post_status = 'publish' OR wp_posts.ID LIKE '%" . $word . "%' OR wp_postmeta.meta_value LIKE '%" . $word . "%' OR wp_postmeta.post_id LIKE '%" . $word . "%'
    GROUP BY wp_posts.post_title
    ";

    // получение результатов
    $text = "";
    $result = mysqli_query($mysqli, $sql);
    $num = mysqli_num_rows($result); // =========================================> Определим колличество найденных совпадений
    if($num > 0){
    $row = mysqli_fetch_assoc($result);
    $polink = get_permalink( get_page_by_title( $row['post_title'] ) );
    do{ $text = '<p>По вашему запросу <strong>'.$word.'</strong> найдено '.$num.' совпадений
    <div class="result"><a href="'. $polink .'">' . $row['post_title'] . '</a><p>пост id:'. $row['ID'] .'</p><p>мета id:'. $row['post_id'] .'</p><p>мета: '. $row['meta_value'] .'</p></div>';}
    while($row = mysqli_fetch_assoc($result));
    }
    else{
    $text = '<li>По вашему запросу результатов не обнаружено</li>';
    }
    echo $text;
    }

    ?>
     
  2. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.874
    Симпатии:
    753
    Адрес:
    Татарстан
    Так и хочется сказать - в ДНК
    Много чего ннепоняоного, начиная от того что $result хер пойми че и оркудам взялось, может всё же $row?

    В дальнеее не ввникал...
    И есть тег оформления кода
     
  3. yanuzay

    yanuzay Активный пользователь

    С нами с:
    28 мар 2018
    Сообщения:
    503
    Симпатии:
    58
    А если так?

    Либо у тебя все записи с одинаковыми post_title
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ой... А зачем в бд вордпресс лезть через mysqli? Если это внутри ворпдресса, то надо его апи пользовать для базы
     
    yanuzay нравится это.