За последние 24 часа нас посетили 22656 программистов и 1272 робота. Сейчас ищет 851 программист ...

поиск в базе данных и вывод на сайте через php

Тема в разделе "PHP Free-Lance", создана пользователем Af1k, 7 дек 2020.

  1. Af1k

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

    С нами с:
    20 окт 2010
    Сообщения:
    16
    Симпатии:
    0
    Прошу помочь написать правильно код вывода информации

    есть БД:
    Посмотреть вложение 5674

    На странице search.php нужно сделать выдачу результатов из формы:


    Код (Text):
    1. <form name="search" method="post" action="search.php">
    2.     <input type="search" name="query" placeholder="Введите трек-номер">
    3.     <button type="submit">Найти</button>
    4. </form>
    Помогите составить файл search php так, что бы при поиске в строке только по номеру 100000000*
    выводило все 4 столбца информации.
    если пустое поле то ошибка, если менее 3 символов или более 120 то ошибка.
    если нет совпадения в БД то выдать что ничего не найдено.

    Есть код search.php но он в корни не правильный, помогите изменить код.

    Код (Text):
    1.  
    2. <?php
    3. define('DB_HOST', 'localhost');
    4. define('DB_USER', '*******');
    5. define('DB_PASS', '*******');
    6. define('DB_NAME', '*******');
    7.  
    8. if (!mysql_connect(DB_HOST, DB_USER, DB_PASS)) {
    9.     exit('Cannot connect to server');
    10. }
    11. if (!mysql_select_db(DB_NAME)) {
    12.     exit('Cannot select database');
    13. }
    14.  
    15. mysql_query('SET NAMES utf8');
    16.  
    17. function search ($query)
    18. {
    19.     $query = trim($query);
    20.     $query = mysql_real_escape_string($query);
    21.     $query = htmlspecialchars($query);
    22.  
    23.     if (!empty($query))
    24.     {
    25.         if (strlen($query) < 3) {
    26.             $text = '<p>Слишком короткий поисковый запрос.</p>';
    27.         } else if (strlen($query) > 128) {
    28.             $text = '<p>Слишком длинный поисковый запрос.</p>';
    29.         } else {
    30.             $q = "SELECT `page_id`, `title`, `desc`, `title_link`, `category`, `uniq_id`
    31.                   FROM `table_name` WHERE `text` LIKE '%$query%'
    32.                   OR `title` LIKE '%$query%' OR `meta_k` LIKE '%$query%'
    33.                   OR `meta_d` LIKE '%$query%'";
    34.  
    35.             $result = mysql_query($q);
    36.  
    37.             if (mysql_affected_rows() > 0) {
    38.                 $row = mysql_fetch_assoc($result);
    39.                 $num = mysql_num_rows($result);
    40.  
    41.                 $text = '<p>По запросу <b>'.$query.'</b> найдено совпадений: '.$num.'</p>';
    42.  
    43.                 do {
    44.                     // Делаем запрос, получающий ссылки на статьи
    45.                     $q1 = "SELECT `link` FROM `table_name` WHERE `uniq_id` = '$row[page_id]'";
    46.                     $result1 = mysql_query($q1);
    47.  
    48.                     if (mysql_affected_rows() > 0) {
    49.                         $row1 = mysql_fetch_assoc($result1);
    50.                     }
    51.  
    52.                     $text .= '<p><a> href="'.$row1['link'].'/'.$row['category'].'/'.$row['uniq_id'].'" title="'.$row['title_link'].'">'.$row['title'].'</a></p>
    53.                     <p>'.$row['desc'].'</p>';
    54.  
    55.                 } while ($row = mysql_fetch_assoc($result));
    56.             } else {
    57.                 $text = '<p>По вашему запросу ничего не найдено.</p>';
    58.             }
    59.         }
    60.     } else {
    61.         $text = '<p>Задан пустой поисковый запрос.</p>';
    62.     }
    63.  
    64.     return $text;
    65. }
    66.  
    67. if (!empty($_POST['query'])) {
    68.     $search_result = search ($_POST['query']);
    69.     echo $search_result;
    70. }
    71. ?>

    Предлагайте цену за реализацию!
     
  2. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    $10 с вашей версткой (нужно будет взять от сайта). И я принципиально ПД по номеру выводить не буду.
    --- Добавлено ---
    Или, спустя 10 лет все-таки придется норм. выучить пых, чтобы никому не платить :)
     
  3. alexphp

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

    С нами с:
    5 дек 2019
    Сообщения:
    98
    Симпатии:
    12
    Посмотрите на скриншотах: если это то, что Вам надо, могу так сделать. Для номера 100000004 я сделал две записи в базу, чтобы показать, как будет работать, если номер повторяется (в тексте задания нет информации, что он должен быть уникальным):
     

    Вложения:

    • 1.png
      1.png
      Размер файла:
      3,4 КБ
      Просмотров:
      4
    • 2.png
      2.png
      Размер файла:
      2,2 КБ
      Просмотров:
      4
    • 3.png
      3.png
      Размер файла:
      1,8 КБ
      Просмотров:
      4
    • 4.png
      4.png
      Размер файла:
      2,6 КБ
      Просмотров:
      4
    • 5.png
      5.png
      Размер файла:
      2,1 КБ
      Просмотров:
      4
    • 6.png
      6.png
      Размер файла:
      2,4 КБ
      Просмотров:
      4
    • 7.png
      7.png
      Размер файла:
      4,6 КБ
      Просмотров:
      4
    • 8.png
      8.png
      Размер файла:
      2,2 КБ
      Просмотров:
      4
    • 9.png
      9.png
      Размер файла:
      7 КБ
      Просмотров:
      4
  4. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @alexphp, естественно, он должен быть уникальным. И, возможно, выдаваться самой БД (автоинкремент). Можно уточнить у ТСа.
     
  5. alexphp

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

    С нами с:
    5 дек 2019
    Сообщения:
    98
    Симпатии:
    12
    В принципе, нет проблем: можно переделать в уникальный. Полагаю, скрипт тогда ещё проще выйдет.
     
  6. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Главное – не простота, а «вменяемость» ;)
    --- Добавлено ---
    Например, ничего не выводить в ответ на POST-запрос.
     
  7. alexphp

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

    С нами с:
    5 дек 2019
    Сообщения:
    98
    Симпатии:
    12
    В смысле, это как? Там же передаётся номер методом POST, а дальше программа выполняется и выводит. :)
     
  8. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Как во вменяемых программах :)
    --- Добавлено ---
    Плюс ТС при желании сможет сразу давать ссылку на страницу отслеживания статуса конкретного заказа.
     
  9. alexphp

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

    С нами с:
    5 дек 2019
    Сообщения:
    98
    Симпатии:
    12
    Вы имеете в виду, что ошибки выполнения пишутся в журнал ошибок, а не на экран?
    Ну, это уже дополнительная задача, если я правильно понимаю.
     
  10. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Нет. Ошибки, естественно, тоже выводятся на страницу не методом POST.
     
  11. alexphp

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

    С нами с:
    5 дек 2019
    Сообщения:
    98
    Симпатии:
    12
    try-catch?
     
  12. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    Она укладывается в рамки текущей, т.к. ничего дополнительно не требует.

    o_O

    Нет, в ответ на GET-запрос :) Все, хорош.
     
  13. miketomlin

    miketomlin Старожил

    С нами с:
    9 авг 2016
    Сообщения:
    3.792
    Симпатии:
    650
    @Af1k, что сдулся? Спустя 10 лет, по-прежнему, 10 баксов – неподъемная сумма? Тогда сами пишите ваш бюджет :) Или обратитесь к miltorg'у в одной из соседних тем. Он за 50 р./час работает :D
     
    alexphp нравится это.