Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск по таблице 
V
    Опции темы
hetfield
Дата 7.4.2008, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



Добрый день. Смотрел по форуму подобного не нашел, поэтому если тема была, звыняйте!

Мне собстна нужно организовать поиск на сайте в адресной книге(одна таблица в базе). Я бы хотел чтоб это была одна строка ввода и в соответствии с введенным скрипт выдавал результат. Сейчас мне приходится делать так:
Код

...
<tr>
    <td width="20%">Фамилия:</td>
    <td width="80%"><input type="text" size="35" name="surname" class="inp"></td>
</tr>
<tr>
    <td width="20%">Имя:</td>                        
    <td width="80%"><input type="text" size="35" name="name" class="inp"></td>
</tr>
<tr>
   <td width="20%">Отчество:</td>
   <td width="80%"><input type="text" size="35" name="middle" class="inp"></td>
</tr>
...
(и еще 10 инпутов, по которым можно искать)                        
...                        



Код

db_connect();
if (isset($_POST['search'])) {
       $name = $_POST['name'];
    $surname = $_POST['surname'];
    $middle = $_POST['middle'];

        $where = '';    
    if (!empty($name)) { $where .= "AND `name` = '$name' "; }
    if (!empty($surname)) { $where .= "AND `surname` = '$surname' "; }
    if (!empty($middle)) { $where .= "AND `middle` = '$middle' "; }

        $where = substr($where, 3, strlen($where) - 4);

        $search_query = "SELECT * FROM adress WHERE $where";
    $query = mysql_query($search_query) or die(mysql_error());
....



Подскажите как сделать поис по всей таблице используя лишь одну строку ввода? Заранее благодарен
PM MAIL   Вверх
Feldmarschall
Дата 7.4.2008, 09:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Для начала ты должен нам рассказать, что будут в эту строку вводить. Ты не находишь?
PM   Вверх
hetfield
Дата 7.4.2008, 09:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



Все что угодно, если фамилию, то найти строку, где есть фамилия... если почтовый адрес, то всю строку, где он встречается

что-то типа
Код

SELECT * FROM `adress` WHERE '".$search."'

PM MAIL   Вверх
Feldmarschall
Дата 7.4.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



а как ты собрался отличать - что они ввели? Телепатически?
PM   Вверх
hetfield
Дата 7.4.2008, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



ну я поэтому и спрашиваю у вас, ибо не знаю...
может:
Код

SELECT * FROM `adress` WHERE LIKE '".$search."'

PM MAIL   Вверх
Feldmarschall
Дата 7.4.2008, 09:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Если я правильно понял твой вопрос (в чем я сильно сомневаюсь)
то у тебя есть код.
Код

    $where = '';    
    if (!empty($name)) { $where .= "AND `name` = '$name' "; }
    if (!empty($surname)) { $where .= "AND `surname` = '$surname' "; }
    if (!empty($middle)) { $where .= "AND `middle` = '$middle' "; }

почему бы его не переделать на работу с одним только полем?
PM   Вверх
hetfield
Дата 7.4.2008, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



тоесть искать допустим только по фамилии? Так нельзя, это адрессная книга, допустим человек знает телефон какой-то и хочет найти все данные о владельце этого телефона. Он вводит номер в  строку поиска и получает результат. Это как поиск по сайту... вводишь запрос и получаешь в ответе места где слово встречается...
PM MAIL   Вверх
Feldmarschall
Дата 7.4.2008, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



С одним полем из формы, а не в базе.
PM   Вверх
hetfield
Дата 7.4.2008, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



Так я так так и хочу, чтоб в форме было одно поле, а искало по всей таблице, независимо от введенных в форму данных.
PM MAIL   Вверх
Feldmarschall
Дата 7.4.2008, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



Ну так переделай этот код так, чтобы там было одно поле из формы, а не несколько!
Так трудно заменить имена переменных?

Это сообщение отредактировал(а) Feldmarschall - 7.4.2008, 10:09
PM   Вверх
hetfield
Дата 7.4.2008, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



Хорошо, вот одна переменная
Код

db_connect();
if (isset($_POST['search'])) {
       $data = $_POST['data'];    //    например "Иванов"
// что мне после WHERE вставить
       $search_query = "SELECT * FROM adress WHERE ???";
       $query = mysql_query($search_query) or die(mysql_error());
}

Может я где-то туплю? Объясни...


Тоесть проверять входные данные, если имя то вставить
Код

$where = '';    
if (($data) == имя ) { $where .= `name` = '$name' "; }
$search_query = "SELECT * FROM adress WHERE $where ???";


Это сообщение отредактировал(а) hetfield - 7.4.2008, 10:22
PM MAIL   Вверх
mishaSL
Дата 7.4.2008, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 7
Всего: 54



hetfield, самый простой вариант:
Код

<input type="text" size="35" name="searchText" class="inp">


Код

<?php

if (!empty($_POST['searchText'])) {
    $text = mysql_real_escape_string($_POST['searchText']);
    $sql  = "SELECT * FROM `adress` WHERE CONCAT(`name`,`surname`,`middle`) LIKE '%".$text."%'";
    $query = mysql_query($sql) or die(mysql_error());
    // ...
}

?>


Только посоветовал бы тебе поисковую форму делать методом GET.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
hetfield
Дата 7.4.2008, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



mishaSL , спасибо. Вроде оно...
PM MAIL   Вверх
Feldmarschall
Дата 7.4.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 1
Всего: 32



hetfield, этот код ты сам писал или взял где-то?

Добавлено через 9 минут и 29 секунд
hetfield, ну даже если не ты сам.
Возьми, заполни в первоначальной форме все поля.
потом выведи на экран запрос, который получился.
что нужно сделать, чтобы текст при сравнении каждой колонки был одинаковый? 
Подставить в каждое сравнение одну и ту же переменную. Несложно, правда?
PM   Вверх
hetfield
Дата 7.4.2008, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 122
Регистрация: 26.11.2007

Репутация: нет
Всего: нет



сам писал... учусь еще...

ок, покапаюсь... спасибо за советы...   smile 

Это сообщение отредактировал(а) hetfield - 7.4.2008, 11:02
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.