[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с простейшей выборкой в mySQL пожалуйста!
Aziz87
ПРИВЕТ! осталось надеятся только на этот форум(
дамп таблицы:

SQL
===База данных aziz8432_baza
== Структура таблицы ezid-rus
|------
|Поле|Тип|Null|По умолчанию
|------
|ezid|text|Да|NULL
|zvuk|text|Да|NULL
|rus|text|Да|NULL
== Дамп данных таблицы ezid-rus
|a | а | см. ya.
|ab | аб | см. aba.


Как сделать чтобы php искал все строки в которых встречается слово $myText
(пожалуйста опишите весь пхп код от <?php до ?> =))




вот так например выводит весь список слов из таблицы.
http://ezid-online.ru/SLOVAR/test3.php
PHP
<?php
$host
='localhost'$user='***';$pass='***'$bd_name='aziz8432_baza'$table='ezid-rus'
  
$db mysql_connect($host,$user,$pass);
  
mysql_query("set names utf8");
  
mysql_select_db($bd_name ,$db);
  
$sql mysql_query("SELECT * FROM `".$table."`" ,$db);
  echo (
"<table border ='1'>");
  echo (
"<tr><td>EZID</td><td>ЧИТАЕТСЯ</td><td>RUS</td></tr>");
while (
$tablerows mysql_fetch_row($sql))
{
  echo(
"<tr><td>$tablerows[0]</td><td>$tablerows[1]</td><td>$tablerows[2]</td></tr> ");
}
  echo 
"</table>";
  
mysql_close($db);
  






Спустя 1 минута, 53 секунды (28.03.2009 - 19:24) Kuliev написал(а):
Aziz87
А огород тебе не вкопать???

Спустя 2 минуты, 50 секунд (28.03.2009 - 19:27) Aziz87 написал(а):
я просто думаю , может я прописал много лишних строк например:
$user='***';$pass='***'; $bd_name='aziz8432_baza'; $table='ezid-rus';

поэтому попросил чтобы вы мне показали весь код. огорода у меня нету.

ну тогда подскажите хотябы правильный Select пожалуйста, если вам не сложно!

Спустя 17 минут, 29 секунд (28.03.2009 - 19:44) Kuliev написал(а):
Aziz87
Давай конкретней что тебе нужно выбрать из БД! И что ты хочешь получить в конечном результате???

Спустя 2 минуты, 13 секунд (28.03.2009 - 19:47) Kuliev написал(а):
Цитата (Aziz87 @ 28.03.2009 - 16:27)
я просто думаю , может я прописал много лишних строк например:
$user='***';$pass='***'; $bd_name='aziz8432_baza'; $table='ezid-rus';

поэтому попросил чтобы вы мне показали весь код. огорода у меня нету.

ну тогда подскажите хотябы правильный Select пожалуйста, если вам не сложно!

Я бы имя таблицы не держал в переменной т.к. таблиц в БД может быть много!!!

Спустя 3 дня, 19 часов, 53 минуты, 29 секунд (1.04.2009 - 14:40) Cookson написал(а):
Куда уж тут конкретнее:
Цитата
Как сделать чтобы php искал все строки в которых встречается слово $myText

У самого точно такая же проблема, и тоже ищу решения. Сам сделал так:
PHP
$cells=mysql_query("select * from CELLS");
for ($i=1;$i<$cells_r;++$i) {
if (mysql_result($cells,$i,"type")==$word) { /* do smth */ }
}

Очевидный недостаток: ищет только по одному полю, если нужно, например, искать несколько разных слов и\или в разных полях, то такой вариант не рабоает. Собственно, хотелось бы узнать, можно ли это сделать чисто на функциях mysql.

select from не предлагать, т.к. такой метод совершенно не подходит, если таблица очень большая.

Спустя 29 минут, 54 секунды (1.04.2009 - 15:10) waldicom написал(а):
Цитата
У самого точно такая же проблема, и тоже ищу решения. Сам сделал так:
PHP
$cells=mysql_query("select * from CELLS");
for ($i=1;$i<$cells_r;++$i) {
if (mysql_result($cells,$i,"type")==$word) { /* do smth */ }
}

Я правильно понял, что констпукция выше, это тоже самое, что и
SQL
SELECT * FROM CELLS WHERE `type` = $word

Спустя 1 час, 13 минут, 40 секунд (1.04.2009 - 16:24) Cookson написал(а):
Да, всё правильно.

Немного перепутал проблему создавшего тему и свою собственную, бо они похожи, но не одинаковы. Мне нужно посчитать, сколько раз в таблице встречается конкретне слово в конкретном поле, причём много разных слов для разных полей.

Aziz87, как сказал waldicom, так и делай.

Я же добавлю от себя: если таблица очень большая, а на одной странице нужно сделать поиск слова по таблице несколько раз, то в сумме все " SELECT * FROM CELLS WHERE ($field = '$word') " займут ну очень много времени. Решение:

PHP
$cells=mysql_query("select * from cells")
$cells_rows=mysql_affected_rows();
function find($query,$affrows,$what,$where) {
for ($i=1;$i<$affrows;++$i) {
if (mysql_result($query,$i,$where)==$what) {
$results+=1;
}
}
return $results;
}


И теперь каждый раз, когда нужно посчитать, сколько раз слово содержится в поле таблицы, не нужно делать отдельный запрос и считать ему mysql_affected_rows(), нужно просто вызвать функцию find, скормив ей название запроса, кол-во записей в нём, что искать и в каком поле.Например: find($cells,$cells_rows,"Вася","Имя") Повторюсь: само собой, для небольших таблиц целесообразнее использовать " SELECT * FROM CELLS WHERE ($field = '$word') ", т.к. запросы не занимают много времени.

Хотел создать свою тему, пока искал решение проблемы, но решил не плодить одинаковые темы и отписаться здеь. А как нашёл решение - поделился.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.