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

Af1k

Прошу помочь написать правильно код вывода информации

есть БД:
Посмотреть вложение 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’].»https://php.ru/».$row[‘category’].»https://php.ru/».$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. ?>

Спасибо за ответы!!!

 

miketomlin

Вам же написали, что этот код к делу не относится. Зачем его повторно постить? Тем более что он отстойный.

И, да, этот раздел тоже не совсем для вас :) Два других раздела выбраны правильно.

Вам не понятно по моему вопросу в первой теме, что выводить номер телефона, ФИО и др. ПД не надо?
— Добавлено —

Человечество раньше загнется, чем вам столько заказов сделает ;)

bigint unsigned – 20 цифр, но вам и unsigned int’а хватит.

 

Вероломство

бабуля моя в каменном веке с динозаврами так говнокодила :)

3 основных косяка:

1. Расширение для работы с мускулом, которое УСТАРЕЛО с версии PHP 5.5 (2013 — 2016 года).
2. Множество ифов вложенных во множественные ифы — цикломатическая сложность.
3. Ну и то, с чего автору нужно было начать — это сначала изучить HTML, например, тегу button не нужно задавать type=»submit», так как он по дефолту уже submit

основной плюс — автор не создаёт кнопку тегом input с типом submit, слава богу

 

miketomlin

@Вероломство, ТС нифига не сечет в этом. Если хотите помочь:
https://php.ru/forum/threads/poisk-v-baze-dannyx-i-vyvod-na-sajte-cherez-php.89433/
https://php.ru/forum/threads/poisk-v-baze-dannyx-i-vyvod-na-sajte-cherez-php.89435/

 

Вероломство

Нифига не сечёт? С нами с 2010-го года :) Через 10 лет колупает ГК-процедурку…

 

miketomlin

Он этот г/код где-то по-быстрому надыбал ;)
— Добавлено —
Его первая тема. Можете ознакомиться:
https://php.ru/forum/threads/ne-pol…schi-php-i-vyvod-informacii-iz-msql-bd.89388/

 

Af1k

Ребята ну помогите с кодом. С php кодом вообще ни как не дружу, кому не сложно, как этот поиск сделать, неделю сижу код этот ковыряю…

 

miketomlin

https://php.ru/forum/posts/635073/ и с учетом того, что я написал в этой теме по поводу номера и т.п.

 

Вероломство

тут нужно калёным железом выжигать mysql_query, просто брать и отказываться, начни вот с этого — это самый лёгкий путь, чтобы спрыгнуть, из того, что есть в тюбике — самый лёгкий

потом после осознания сюда —

ну а потом по восприятию: хочешь ли ты быть программистом или пользователем готового фреймворка какого-то

и ещё читай каждый день по одной функции PHP, через год ты не то что бы будешь знать 365 функций, но ты хотя бы прочитаешь о них и что-то отложится

ну и в конце-концов *баш код

 

BAbl_gun

Если я не ошибаюсь то уже нужно использовать PDO или mysqli. Подправьте меня если я ошибаюсь

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *