Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP: базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.79/14: Рейтинг темы: голосов - 14, средняя оценка - 4.79
Ivanych
1 / 1 / 0
Регистрация: 22.06.2011
Сообщений: 32
1

Поиск по введённым параметрам в MySQL

25.06.2011, 19:31. Просмотров 2476. Ответов 5
Метки нет (Все метки)

Есть БД MySQL.Мне нужно сделать поиск по ней.Пользователь с помощью формы выбирает страну.Скрипт полностью выводит строки из БД в которых совпадает название страны .Тоесть если совпала и страна то он выводит название страны и компании а также остальные ячейки из этой страны.(Совпадений страны может быть несколько)
Пример БД:
country company product price
Россия MyCompany beton 100$
Россия Alalaa soup 10$



PHP
1
2
$search_country=$_POST["country"];
$search_company=$_POST["company"];
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.06.2011, 19:31
Ответы с готовыми решениями:

Не ищет по параметрам оператор LIKE mysql
Здравствуйте уважаемые коллеги (хотя я без профильного образования, я любитель...

Выборка из таблицы mysql по двум параметрам
Здравствуйте все! Нужно из таблицы mysql сделать выборку строки по двум...

Выборка из mysql из одного столбца по нескольким параметрам
Приветствую! Провожу выборку из таблицы, нужно из одного столбца выбрать...

Как выбрать из базы MySQL значения по 2 параметрам
Столкнулся со следующей проблемой. Существует таблица MySQL из которой нужно...

Поиск по параметрам
Нужно реализовать поиск по параметрам с подключением к базе данных. Помогите...

5
MegaAce
330 / 304 / 155
Регистрация: 14.02.2010
Сообщений: 662
25.06.2011, 20:51 2
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
 
 $sql = 'SELECT * FROM `company` JOIN `country` ON `company`.`comp_countr` = `country`.`countr_id` WHERE `comp_countr`="'.$_POST['country'].'" AND `comp_name` LIKE "'.trim($_POST['company']).'" LIMIT 1';
 $result = mysql_query($sql);
 if($row = @mysql_fetch_assoc($result)) //знаю что плохая проверка, но впадло писать((
 {
   echo '<div style="padding:10px; border:1px solid #f00;">Компания ',$row['comp_name'],' в стране ',$row['count_name'],' специализируется на ',$row['comp_type'],' и имеет прибиль ',$row['comp_price'],'</div>';
 }
 else 
 { 
   $sql = 'SELECT * FROM `company` JOIN `country` ON `company`.`comp_countr` = `country`.`countr_id` WHERE `comp_countr`="'.$_POST['country'].'"';
   $result = mysql_query($sql);
   echo '<strong>Возможно вы имели ввиду:</strong><br />';
   while($row = mysql_fetch_assoc($result))
     echo '<div>Компания ',$row['comp_name'],' в стране ',$row['count_name'],' специализируется на ',$row['comp_type'],' и имеет прибиль ',$row['comp_price'],'</div>';
 }
 
 $sql = 'SELECT * FROM `country`';
 $result = mysql_query($sql);
 echo '<form method="post"><select name="country"><option></option>';
 while($row = mysql_fetch_assoc($result))
 {
   echo '<option value="',$row['countr_id'],'"';
   if($row['countr_id'] == $_POST['country'])
   {
     echo ' selected = "selected" ';
   } 
   echo '>',$row['count_name'],'</option>';
 }
 echo '</select><br /><input type="text" name="company" value="',$_POST['company'],'" /><br /><input type="submit" name="OK" /></form>';
 
 mysql_close($conn);
?>
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
CREATE TABLE IF NOT EXISTS `company` (
  `comp_id` INT(5) NOT NULL AUTO_INCREMENT,
  `comp_countr` INT(3) NOT NULL,
  `comp_name` VARCHAR(30) NOT NULL,
  `comp_type` VARCHAR(10) NOT NULL,
  `comp_price` INT(5) NOT NULL,
  PRIMARY KEY (`comp_id`)
) ENGINE=MyISAM
 
CREATE TABLE IF NOT EXISTS `country` (
  `countr_id` INT(3) NOT NULL AUTO_INCREMENT,
  `count_name` VARCHAR(30) NOT NULL,
  PRIMARY KEY (`countr_id`)
) ENGINE=MyISAM
2
Dellok
104 / 74 / 13
Регистрация: 09.01.2011
Сообщений: 237
26.06.2011, 02:44 3
Кстати, не забудьте добавить фильтры на полученные данные. А то рискуете быть дефейснуты
0
hitler35
0 / 0 / 1
Регистрация: 03.08.2011
Сообщений: 8
03.08.2011, 16:17 4
Спасибо, очень помогло, не знал что такое простое решение может быть.
0
hitler35
0 / 0 / 1
Регистрация: 03.08.2011
Сообщений: 8
05.08.2011, 12:30 5
а что такое быть дефейснутым
0
Humanoid
Почетный модератор
9962 / 3849 / 344
Регистрация: 12.06.2008
Сообщений: 11,363
05.08.2011, 13:39 6
hitler35, нельзя сразу в запрос вставлять данные из $_GET, $_POST и т.п. Их надо вначале экранировать через addslashes или mysql_real_escape_string. Дефейснуть (изменить саму страницу) тут вряд ли получится, но сделать SQL-инъекцию и получить доступ к БД можно.
1
05.08.2011, 13:39
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.08.2011, 13:39

Поиск по параметрам
Всем привет. Помогите решить проблему. Есть две страницы, одна страница с...

Поиск по параметрам на PHP
Добрый день! Имеется простенькая форма поиска с 4 параметрами. Ни один из...

Поиск по нескольким параметрам
Есть таблица с названием one a1 a2 a3 a4 0 1 2 3 А так же таблица two в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru