[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите сделать отбор из таблицы
Diakon
Привет всем!
Я сейчас делаю очень простой форум для одного внутреннего ресурса. Я сделал простую таблицу которая состоит из следующих полей:

Поле Тип
id int(11)
thems char(200)
msg varchar(10000)
frommsg char(100)
timemsg char(200)
thems - название темы, msg - сообщение, frommsg - имя юзверя оставившего сообщение, timemsg - время когда было оставлено сообщение (тип char потому, что я получаю время средствами php и записываю его как текст).
Вообщем все работает, темы создаются, ответы добовляются. Но есть одна беда. Когда строится список тем у меня по нескольку раз выводятся названия тем, т.к. в базу пишется название темы и ответ, а т.к. ответов в одной теме может быть много, то и в поле thems существует несколько названий тем с одним именем. Поэтому когда я строю список тем у меня выводится много раз название одной и той же темы. Помогите правильно построить запрос. Вот листинк кода, как я вывожу список тем:


...
if ($db=@mysql_connect("localhost",$user,$password)){
mysql_select_db($database);
$query="SELECT * FROM forum ORDER BY thems";
$result=mysql_query($query);
$num=mysql_numrows($result);
if ($num<1){
echo '<div align="center">';
echo '<h3>Нет данных.</h3>';
echo '</div>';}
else{
$i=0;
while ($i<$num){
$thems = mysql_result($result,$i,'thems');
$patch = 'forumon.php?usermsg='.$usermsg.'&thems='.$thems;
echo '<div align="top">';
echo '<a href="'.$patch.'">';echo '<span class="shrift">'.$thems.'</span>';
echo '</div>';
++
$i;
}
}}

else{
echo "<p>База данных не найдена!</p>";}
echo '</div>'; }
...

Заранее спасибо!




Спустя 31 минута, 36 секунд (28.11.2009 - 18:45) Argnist написал(а):
кошмар)

Спустя 8 дней, 3 часа, 15 минут (6.12.2009 - 22:00) ancient mariner написал(а):
$usermsg - это что за переменная?
Я дилетант пока, но не правильнее ли было бы создавать каждый топик как отдельную таблицу?

Спустя 33 минуты, 59 секунд (6.12.2009 - 22:34) dr_Lev написал(а):
Цитата (Diakon @ 28.11.2009 - 15:14)
$i=0;
while ($i<$num){
.............
echo '<a href="'.$patch.'">';echo '<span class="shrift">'.$thems.'</span>';

Попробуй так

$i=0;
$nowTheme = "";
while ($i<$num){
.............
if ($nowTheme != $thems){
echo '<a href="'.$patch.'">';echo '<span class="shrift">'.$thems.'</span>';
$nowTheme = $thems;
}

P.S. Код действительно кошмар...

Спустя 1 день, 18 часов, 52 минуты, 33 секунды (8.12.2009 - 17:27) Raskolnikoff написал(а):
Вот таким образом вы получите список только тем, каждой по одному разу.
SELECT DISTINCT thems FROM forum
Быстрый ответ:

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