[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не выводить два одинаковых результата
OTSHELNIK
Пытаюсь написать сейчас что-то более-менее серьёзное,пишу форум. Задался вопросом,как сделать что-то типа вывода последних тем,в которые последними отпостили юзеры. Что-то вроде как тут "Активные темы".
Придумал,как это примерно должно работать. А это брать из базы выводить последние строки,где естественно последние иды сообщений. В базе у этих сообщений есть естественно номер темы,в которой сделано это сообщение. Ну и вот,сделал вывод последних для начала трёх хаписей из базы с сообщениями. Потом в массиве начинаю делать запрос к базе о том,какие нужно вытаскивать иды тем. Вывожу в этом-же массиве то что вытащил из базы. Вроде работает,но вот нужно сделать так,чтобы из массива(то что из базы вытащил) фильтровалось по принципу "если есть в массиве запись с таким-же содержимым,то выводить только один из них". То есть,на другом примере: выводим из базы что-то со значениями 1 2 3 3 4 5 4 9 4 1. Нужно чтобы не все числа вывеслись,в том-же порядке,что и в базе,а вывелось что-то подобного вида: 1 2 3 4 5 9. То есть без повторных числах. Надеюсь,кто-то понял мой вопрос.
Если что,сам код того,что сейчас имею:

$posl = mysql_query("SELECT * FROM for_soob ORDER BY id DESC LIMIT 3"); 
while($ps = mysql_fetch_array($posl))
{
$pps = $ps['t'];
$poslt = mysql_fetch_array(mysql_query("SELECT * FROM for_tem WHERE id = '".$pps."' ORDER BY id DESC"));
$poslt = $poslt['naz'];
$kso = $ps['t'];
echo '<br/>Последняя тема: <a href="t.php?id='.$pps.'">'.$poslt.'</a>';}
}




Спустя 1 час, 53 минуты, 28 секунд (23.04.2010 - 22:35) Bezdna написал(а):
SELECT DISTINCT ?

Спустя 7 часов, 13 минут, 13 секунд (24.04.2010 - 05:48) OTSHELNIK написал(а):
как я понял,запрос должен быть примерно таковым?

SELECT DISTINCT * FROM for_tem WHERE id = '".$pps."' ORDER BY id DESC

Спустя 20 минут, 4 секунды (24.04.2010 - 06:08) OTSHELNIK написал(а):
но пытаюсь написать так как я предположил-не работает. ищу в интернете информацию о том,как правильно составить запрос-но найти ничего толкового не могу. объясните пожалуйста.

Спустя 51 минута, 37 секунд (24.04.2010 - 06:59) andrey написал(а):
Есть функция для удаления из массива повторяющихся значений: array_unique.

Как-то так:
$massiv = array_unique($massiv);

Попробуй, может поможет...

Спустя 8 минут, 17 секунд (24.04.2010 - 07:08) OTSHELNIK написал(а):
Вставил в цикле для жтих двух массивов. Вот что денвер сообщает:

Warning: array_unique() [function.array-unique]: The argument should be an array in Z:\home\sub-test.ru\www\forum\index.php on line 50

Warning: array_unique() [function.array-unique]: The argument should be an array in Z:\home\sub-test.ru\www\forum\index.php on line 55

Последние темы:
Warning: array_unique() [function.array-unique]: The argument should be an array in Z:\home\sub-test.ru\www\forum\index.php on line 50

Warning: array_unique() [function.array-unique]: The argument should be an array in Z:\home\sub-test.ru\www\forum\index.php on line 55

Последние темы:
Warning: array_unique() [function.array-unique]: The argument should be an array in Z:\home\sub-test.ru\www\forum\index.php on line 50

Warning: array_unique() [function.array-unique]: The argument should be an array in Z:\home\sub-test.ru\www\forum\index.php on line 55

Последние темы:

а строчка 50 это $pps = array_unique($pps); ,а 55 это $kso = array_unique($kso);

Спустя 4 минуты (24.04.2010 - 07:12) andrey написал(а):
The argument should be an array - значит аргумент должен быть массивом. Ты выполняешь функцию над отдельным элементом массива, а надо над всем массивом, где хранится список номеров.

Спустя 26 минут, 15 секунд (24.04.2010 - 07:38) andrey написал(а):
Кстати твой запрос:
SELECT DISTINCT * FROM for_tem WHERE id = '".$pps."' ORDER BY id DESC

у меня тоже почему-то не работает. Попробуй вместо звёздочки указать значение нужных полей через запятую. Так должно заработать.

Спустя 2 минуты, 57 секунд (24.04.2010 - 07:41) maxims написал(а):
ИМХО проше sql-запрос составить, который будет выдавать N-ое количество активных тем.

Спустя 7 минут, 2 секунды (24.04.2010 - 07:48) OTSHELNIK написал(а):
andrey, о,спасибо! без звездочки всё работает! а обработкой массива всё так и не разобрался,да и ладно,пока не нужно. ведь практически всё на базе у меня smile.gif

Спустя 1 минута, 20 секунд (24.04.2010 - 07:49) maxims написал(а):
может так.
SELECT * FROM for_tem WHERE id IN ( SELECT DISTINCT t FROM for_soob ORDER BY id DESC LIMIT 3) ORDER BY id DESC

Спустя 4 минуты, 24 секунды (24.04.2010 - 07:54) OTSHELNIK написал(а):
решил не плодить тысячу тем,так что спрошу здесь. как на форуме лучше организовать закрытие темы? как я предполагаю,закрытие можно сделать,если в табличку с темами(где ид,название темы и т.п.) добавить столбец со значением.. допустим цифровым. допустим одно значение это есть поле ввода сообщения,а второе нет поля ввода сообщения. так проканает или есть еще тонкости?

Спустя 1 час, 15 минут, 53 секунды (24.04.2010 - 09:10) OTSHELNIK написал(а):
и еще,не хочет работать запрос в базу:

$result = mysql_query('UPDATE `user` SET gor = `$gor` , icq = `$icq` , url = `$url` , osebe = `$osebe`  WHERE `id` = '.$_SESSION['id_user']); 
if($result == 'true') {echo 'Ваш профиль успешно изменён!';}
else{echo 'Произошла ошибка! '.mysql_error();}


сделал вывод ошибки,мне пишет Unknown column '$gor' in 'field list'. Как я понял жалуется на неизвестную колонку в списке полей и переменной gor. А в базе,поле gor равно varchar(20). в чем может быть ошибка и из-за чего может не обновляться в базе?

если что: переменные идут с другой страницы методом пост. я обрабатываю то что получил и ради теста попробывал вывести все переменные-всё правильно выводит,то что вводилось с формы на предыдущей странице.

Спустя 9 минут, 23 секунды (24.04.2010 - 09:19) andrey написал(а):
Поменяй фрагмент на вот такую запись

UPDATE `user` SET `gor` = '.$gor.'

Ну и так далее... Вроде так

Спустя 15 минут, 45 секунд (24.04.2010 - 09:35) OTSHELNIK написал(а):
andrey, всмысле пременную оградить точками?

Спустя 2 минуты, 52 секунды (24.04.2010 - 09:38) andrey написал(а):
Ну да. И насчёт кавычек тоже проверь

Спустя 9 часов, 22 минуты, 56 секунд (24.04.2010 - 19:01) OTSHELNIK написал(а):
andrey, пишет ту же ошибку. не помогает.

Спустя 11 часов, 19 минут, 48 секунд (25.04.2010 - 06:20) andrey написал(а):
Имя полей и таблиц надо обрамлять вот в такие кавычки: `` - которые слева от клавиши 1, а имя переменных в обычные ' '. У тебя так сделано?

Спустя 1 день, 13 часов, 22 минуты, 10 секунд (26.04.2010 - 19:43) OTSHELNIK написал(а):
andrey, да,спасибо,понял ошибки! но хотелось-бы получить ответ на вопрос ранее:

решил не плодить тысячу тем,так что спрошу здесь. как на форуме лучше организовать закрытие темы? как я предполагаю,закрытие можно сделать,если в табличку с темами(где ид,название темы и т.п.) добавить столбец со значением.. допустим цифровым. допустим одно значение это есть поле ввода сообщения,а второе нет поля ввода сообщения. так проканает или есть еще тонкости?

Спустя 9 часов, 28 минут, 33 секунды (27.04.2010 - 05:11) andrey написал(а):
Ну а ето уже не ко мне smile.gif

Спустя 1 час, 6 минут, 43 секунды (27.04.2010 - 06:18) OTSHELNIK написал(а):
andrey, ну,ты же не единственный юзер на форуме...) так что думаю кто-нибудь и ответит)

Спустя 5 дней, 21 час, 38 минут, 1 секунда (3.05.2010 - 03:56) OTSHELNIK написал(а):
актуальный вопрос.

Спустя 3 дня, 16 часов, 2 минуты, 14 секунд (6.05.2010 - 19:58) OTSHELNIK написал(а):
возник уже другой вопрос: а как мне вывести дату последнего поста в данном форуме? почти как на этом форуме на главной,колонка "Обновления". я не могу понять какие запросы сначала нужно делать и какие потом. очень надеюсь на вашу помощь.
Быстрый ответ:

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