MySQL+PHP

TsarAlex

Новичок
MySQL+PHP

Есть база данных. В ней есть записи. Содержимое поле game может повторяться. То есть могут быть две записи в которых поле game одинаково, а остальные поля разные. Как в таких условиях выбрать все записи. Причем если сожержимое ячейки game встречалось раньше то игнорировалось все ячейки этой строки. То есть надо сделать запрос типа
SELECT DISTINCT game FROM dtable
только чтобы одновременно с полем game было и поле id:
SELECT DISTINCT game,id FROM dtable - но это не работает.
 

tserbis

Guest
И какой id ты хочешь чтоб стоял в результате "рядом" со значением game, которое всречается 8 раз с 8 разными id ?
 

TsarAlex

Новичок
Поиск

Автор оригинала: tserbis
И какой id ты хочешь чтоб стоял в результате "рядом" со значением game, которое всречается 8 раз с 8 разными id ?
ID нужен не здесь а немного в другом месте. Так что там нужно все кроме ID.

Всем спасибо!!!

Еще вопросец назрел: а как люди в наше время организовывают поиск по БД. Если к примеру ввели N слов, нужно организовать поиск по всем словам, да еще использовать постраничный вывод. Как посчитать страницы - проблем нет. А вот с выводом данных..... проблемно. Намекните алгоритм действия
 

Demiurg

Guest
Делаешь индексную таблицу, в которой будут все слова всречающиеся в том, где ты ищещ. Потом разбиваешь, то, что ищут на слова, и делаешь запрос.
 

RomikChef

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

А то вишь - Демиург тебе по накатанному отвечает ;-)
 

TsarAlex

Новичок
Автор оригинала: RomikChef
странно.
Обычно у людей вопрос - как организовать поиск.
ас выводом данных никаких проблем никогда не было.
так что ты уж поподробнее о своих проблемах...

А то вишь - Демиург тебе по накатанному отвечает ;-)
Ну суть вот в чем:
Есть таблица с читами: там есть собтсвнно сами читы и название игры в отдельной ячейке. Напрмер пользователь ищет "Heroes of might and magic". Должны вывестить ссылки на все игры которые в своем названии содержат хотя бы одно из слов heroes, might или magic. Опять же надо использовать постраничный вывод. Поиск я оргнизовываю так:
$aKeyWords = split(" ",$SearchStr);
foreach($aKeyWord as $aVal){
запрашиваю игру в назвении которой содержится $aVal
суммирую кол-во rows.
}
Далее формируется кол-во страниц. А также переменная начиная с которой записи нужны. То есть если бы поиск был по одному слову, то было бы так:
SELECT game FROM cheats WHERE game LIKE $searchstr LIMIT $initialGame, $maxGames
То есть: взять из базы $maxGames игр начиная с $initialGame.
А как быть если результатов несколько? Всмысле есть еще варианты кроме уже приведенного?
 

RomikChef

Guest
Все-таки, проблема не в выводе, а в поиске.

Если поиск по нескольким словам, то он делается ОДНИМ запросом, который выглядит так

SELECT game FROM cheats
WHERE
game LIKE $aKeyWord[0] OR
game LIKE $aKeyWord[1] OR
...
game LIKE $aKeyWord[n]
LIMIT $initialGame, $maxGames

Задача сводится к уже решенной.
 

TsarAlex

Новичок
Огроменное спасибо!!! А есть FAQ по PHP+MySQL? а то, сдается мне я в некоторых местах моих скриптов перемудрил....
 

TsarAlex

Новичок
Автор оригинала: RomikChef
SELECT game FROM cheats
WHERE
game LIKE $aKeyWord[0] OR
game LIKE $aKeyWord[1] OR
...
game LIKE $aKeyWord[n]
LIMIT $initialGame, $maxGames
А тиап как это генерировать в цикле? Сейчас я делаю так:
$aQuery = "SELECT game FROM cheats WHERE game LIKE \"$aKeyWord[0]\" "
foreach($aKeyWord as $aKey){
if ($aKeyWordp[0] == $aKey) continue;
$aQuery .= "OR game LIKE \"$aKey\" "
}
Иными словами есть более простой способ пропустить первый элемент массива?
 

TsarAlex

Новичок
Еще раз всем спасибо!!! Вроде бы все что хотел узнать. Разве что только можт кто-нибудь знает как проверить жива ли ссылка на файл, средствами PHP причем чтобы пользователю не пришлось долго ждать?
 

RomikChef

Guest
ты определись, что тебе надо - ССЫЛКА или ФАЙЛ.
в файловой системе нет ссылок, а в вебе нету файлов.
файл проверить легко, но поскольку речь идет об ожидании, то ты имеешь в виду наверное, удаленные сервера. Ну так сам и можешь ответить на свой вопрос - или ждать, или никак.
 

TsarAlex

Новичок
Автор оригинала: RomikChef
ты определись, что тебе надо - ССЫЛКА или ФАЙЛ.
в файловой системе нет ссылок, а в вебе нету файлов.
файл проверить легко, но поскольку речь идет об ожидании, то ты имеешь в виду наверное, удаленные сервера. Ну так сам и можешь ответить на свой вопрос - или ждать, или никак.
Дело в том что я только Junior Member. Посему не могли бы вы пояснить вами сказанное:
Есть к примеру ссылка http://host.dom/path/to/dir/file.rar - как проверить жива эта ссылка или нет. Известно что свзяь - нормальная. Доступ к кронам есть.
 

Kirs

Fireman
Не знаю как правильно, но я бы сделал так:
Сначала попытался прочесть несколько первых килобайт файла, проверить, есть ли там тег <html>, если есть, то никакого файла нет. Если такого тега нет, то файл присутсвует и готов для скачивания.
 

RomikChef

Guest
Ага. в рар-архиве мы будем искать тег <html>

Какая бы связь не была, если файла не будет, то скрипт будет тормозить - система все равно будет ждать таймаут.

а проверять можно просто [m]fopen[/m]
 

Kirs

Fireman
Автор оригинала: RomikChef
Ага. в рар-архиве мы будем искать тег <html>
Ну так если он есть, этот тег, то лезет 404-ая страница. Если нет - то явно файл. Насчет "килобайт" я описался, достаточно байт 6-ти.
 
Сверху