X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Поиск данных в БД
gaaarfild
gaaarfild
Topic Starter сообщение 16.2.2009, 23:51; Ответить: gaaarfild
Сообщение #1


Каким образом можно было бы организовать самый простейший поиск данных по запросу из БД в PHP?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ThanDdoR
ThanDdoR
сообщение 17.2.2009, 0:12; Ответить: ThanDdoR
Сообщение #2


Смысли, ты хочешь сделать поиск по сайту?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 17.2.2009, 0:58; Ответить: ZiTosS
Сообщение #3


gaaarfild, создавалась уже тема. Смотри...
1) Идёт запрос с формы
<form method="POST" action="">
   <input type="text" name="search">
   <input type="submit" name="go_search" value="Найти">
</form>

2) Страница перезагружается, и если существует $_POST['go_search'] значит надо обработать запрос и вывести данные.
<?php

if(isset($_POST['go_search']) && strlen($_POST['search']) > 3)
{
   $search = mysql_escape_stirng($_POST['search']);
   $query = "SELECT * FROM table WHERE pole LIKE '%{$search}%'";
   $res = mysql_query($query) or die("Ошибка!");
   if(mysql_num_rows($res) > 0)
   {
      while($array = mysql_fetch_array($res))
      {
          echo "pole: {$array['pole']}";
      }
   }
}

?>


Тупо нахождение запрашиваемого слова в одном из столбцов таблицы.
Чтобы отобрать уникальные, не забываем использовать DISTINCT по определённому полю
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 17.2.2009, 1:47; Ответить: gaaarfild
Сообщение #4


Как понять уникальные? Тоесть только один? Или те, которые только в единственном экземпляре присутствуют?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 17.2.2009, 12:01; Ответить: ZiTosS
Сообщение #5


Нет. Это к примеру у тебя в таблице имеется поле с повторяющимися данными в записях. Если ты сделаешь по данному полю DISTINCT возьмутся записи только с уникальным значением этого поля. Если таковых записей с подобным значением больше одной, то возьмётся либо первая, либо последняя(просто не помню).

А вообще лучше использовать GROUP BY(поле)
SELECT * FROM pdata GROUP BY(поле);

Выведет по одной записи с уникальным поле, так же можно применить сортировку ORDER BY()
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 17.2.2009, 23:56; Ответить: gaaarfild
Сообщение #6


Здорово! =) Огромное спасибо.
Еще уж вопрос тогда.
Вот этот код генерит поля, в которых находятся кнопки с ID самого поля. Когда нажимаю удалить, он удаляет почему-то всегда последнее поле, а не то, в котором нажата кнопка.

if (!isset($_GET['visdel_id'])) {
echo "<BR>
<table width=''><TR><TH width=150>Код посещения</TH><TH width=150>Дата посещения</TH><TH width=400>Процедуры</TH><TH width=150>Стоимость</TH><TH></TH></TR>";
     while($query_data = mysql_fetch_array($pq)) {
     echo "<TR><TD align='center'>{$query_data[id]}</td><TD align='center'>{$query_data[date]}</td><TD>{$query_data[procedure]}</td><TD align='right'>{$query_data[cash]} руб.</td><TD align='center'>
     <FORM action='{$_SERVER['PHP_SELF']}' method='GET'>
     <INPUT type='hidden' name='id' value='{$query_data[id]}'>
     <INPUT type='hidden' name='pac_id' value='{$pac_id}'>
     <INPUT type='submit' name='visdel_id' value='Удалить'>
     </td></tr>";
     }
     echo "</table>";
     } else {
     $id = $_GET['id'];
     $del = mysql_query("DELETE FROM visit WHERE id={$id}", $link_id);
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 18.2.2009, 0:49; Ответить: ZiTosS
Сообщение #7


gaaarfild,
1) Всегда ключи массива ставь в кавычки, иначе ты тратишь дополнительное время.
$query_data[id]

В данном случае id проверяется на макроопределение, константу, а только затем уже как ключ массива, поэтому тратится больше времени.
$query_data['id']

В данном случае интерпретатор сразу понимает что перед ним ключ массива, а не предопределённая константа.
Поэтому советую писать так:
{$query_data['id']}...............{$query_data['procedure']}


2) Всегда приходящие данные хоть GET, хоть POST методом нужно проверять.
Приведение к целому числу всегда просто сделать, к примеру с тем же самым id
$id = intval($_GET['id']);


3) Твоя же ошибка связанна с простой оплошностью. Стоит посмотреть в код, подумать как передаются данные, внимательно проверить что передаётся. Вывод: Кто за тебя форму будет закрывать?
</form>

Вот вроде и всё, но в следующий раз создавай новую тему, если даже будет похожий запрос, всё же одна тема в ответ на все вопросы не катит ;)


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 18.2.2009, 1:23; Ответить: gaaarfild
Сообщение #8


Вот вечно я так из-за тупой невнимательности. А тебе Огромное спасибо!!!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
FordogeN
FordogeN
сообщение 18.2.2009, 11:46; Ответить: FordogeN
Сообщение #9


Гааапфилд, ну дык нажми "Спасибо")))
зы. Могу предложить модернизировать поиск - сделать чтоб искало не фразу целиком, а чтоб на пример пробел и тире это разделяющие знаки и чтоб по запросу "купить слона в москве" находило и те страницы где написано "купить в москве слона"


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
Topic Starter сообщение 27.4.2009, 0:56; Ответить: gaaarfild
Сообщение #10


Спасибо и предложи. =) Всегда не против поучиться. =)

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Интеграция спортивных данных API. Коэффициенты БК, Live результаты
15 yaroslav89 6862 8.4.2024, 17:17
автор: spoyer_ru
Открытая тема (нет новых ответов) ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ
[Чарджбек|Рекавери|Возврат]
9 Leado 3911 9.2.2024, 16:04
автор: baza0013
Открытая тема (нет новых ответов) Базы данных, различной тематики, выкладываем тут.
Делимся, обмениваемся, заказываем, парсим.
12 InfoObmen 15257 4.9.2022, 2:32
автор: Галецкая
Открытая тема (нет новых ответов) Сбор Данных Услуг И Специалистов Яндекс.Услуги
2 zkalinin 2379 26.5.2022, 17:10
автор: zkalinin
Открытая тема (нет новых ответов) Smmsearch.net - поиск самой дешевой накрутки в социальных сетях.
0 Professor7717 3294 13.8.2021, 19:53
автор: Professor7717


 



RSS Текстовая версия Сейчас: 24.4.2024, 10:16
Дизайн