• Создаю страницу со своей формой

    <form name="search" method="post" action="#">
        <input type="search" name="query" placeholder="Поиск">
    <button type="submit">Поиск</button>
    </form>

    В action вставляю адрес страницы, где находиться скрипт поиска по БД wordpress, в которой я сделал дополнительную таблицу. При попытке поиска, после перехода на нужную страницу происходит ошибка «возникли технические сложности». Если встраиваю скрипт в шаблон (потом создаю новую страницу по шаблону), то после перехода на страницу отрисовка страницы заканчивается в месте начале скрипта. Тестил на денвере — все работает. На боевой версии нет.

    Скрипт такой:

    <?php 
    
    function connectDB (){
    define('DB_HOST', 'host');
    define('DB_USER', 'user');
    define('DB_PASS', 'pass');
    define('DB_NAME', 'name');
    $dbconn = mysql_connect(DB_HOST, DB_USER, DB_PASS)
      or die("Ошибка соединения с базой данных! " . mysql_error());
    mysql_select_db(DB_NAME); 
    mysql_query('SET NAMES utf8');
    return $dbconn;
    }
    
    function closeDB($dbconn){
    mysql_close($dbconn);
    }
    
    function search ($query) { 
    $text = '';
    
    $query = trim($query);                     
    $query = strip_tags($query);             
    $query = mysql_real_escape_string($query); 
    
    if (!empty($query)){
      if (strlen($query) < 4) {
        $text = '<p>короткий поисковый запрос.</p>';
      }elseif (strlen($query) > 128) {
        $text = '<p>длинный поисковый запрос.</p>';
      } else {
        $sql = "SELECT <code>cad_number</code>, <code>cad_sum</code>
          FROM <code>cadastrsum</code> WHERE <code>cad_number</code> LIKE '%$query%'";
        $result = mysql_query($sql);
        $num = mysql_num_rows($result);
        if ( $num > 0) { 
          $row = mysql_fetch_assoc($result); 
          $text .= '<p>По вашему запросу';
          $text .= ' найдено '.$num.' совпадений</p>' ;
    
          do {
            $text .= '<p> Для объекта <strong>'.$row['cad_number'].'</strong> стоимость составляет:</p>';
            $text .= '<p>'.$row['cad_sum'].' руб.</p>';
          } while ($row = mysql_fetch_assoc($result)); 
        } else {
          $text = '<p>По вашему запросу ничего не найдено.</p>';
        }
      } 
    }else {
      $text = '<p>Задан пустой поисковый запрос.</p>';
    }
    return $text; 
    }
    
    ///////////// Сам скрипт обработчик ///////////////
    if (isset ($_POST['query'])){ 
      // Открываем соединение с базой данных
      $connect = connectDB();
      $search_result = search ($_POST['query']); 
      echo $search_result; 
      // Закрываем соединение с  базой данных
      closeDB ($connect);
    }
    ?>

    Страница, с которой нужна помощь: [войдите, чтобы увидеть ссылку]

Просмотр 2 ответов — с 1 по 2 (всего 2)
  • Модератор Юрій

    (@yube)

    mysql_connect

    Во-первых, прошлый век. Вместо mysql уже давно используется mysqli. Расширения mysql может вообще не быть в установленной на сервере php.
    Во-вторых, находясь в среде wordpress, лучше и правильнее использовать wpdb

    На боевой версии нет.

    см. выше.

    Модератор Юрій

    (@yube)

    —аннулировано—

    • Ответ изменён 6 лет, 3 месяца назад пользователем Юрій.
Просмотр 2 ответов — с 1 по 2 (всего 2)

Тема «Поиск по отдельной таблице БД» закрыта для новых ответов.