Сделал таблицу с полями id, cat, ru, en, count где: id - идентификатор (атоматический) cat - номер в какую категорию входит, скажем если номер 1, то является подкатегорией категории под номером 1 ru - название на русском en - название на английском count - количество объявлений в категории Теперь вопрос, как вывести 4 столбика по 3 линии, то-есть 12 всего блоков так, чтобы в самом верху блока шла категория скажем под $id="1" и ниже под ней шли бы все категории с $cat="1", далее блок с $id="2" и т.д. ?
Сделать доску без подкатегорий проблем нету, а вот с ими, я не могу продумать толком, чтобы было правильно, может кто подскажет.
ng0d Сделай отдельные таблицы категория, объявления и т.д. и связывай их между собой. Ничего сложного!
Наверно не так задал вопрос. Мне надо вывести 12 блоков, обратившись один раз к базе, если так можно. 4 столбика по 3 строки. Вот пытаюсь вывести 2 столбика, но второй не выводится, потому что наверно надо дважды обращаться к базе. PHP: <? /* Обращение к базе */ $db_table = mysql_query("SELECT * FROM category",$db); print"<table border='1' width='400'><tr>"; /* Вывод 1 категории */ print "<td>"; while ($category = mysql_fetch_array($db_table)) { $cat = $category["cat"]; $ru = $category["ru"]; if ($cat == "1") { print "$ru<br>"; } } print "</td>"; /* Вывод 2 категории */ print "<td>"; while ($category = mysql_fetch_array($db_table)) { $cat = $category["cat"]; $ru = $category["ru"]; if ($cat == "2") { print "$ru<br>"; } } print "</td>"; print "</tr></table>";
ng0d PHP: <? $db_table = mysql_query("SELECT * FROM category",$db); ?> Вот в этом запросе ты выводишь ВСЕ что есть у тебя в БД, используй условия WHERE, GROUP BY, и т.д.
Вы наверно не понимаете вопроса. Я могу вывести любое поле, тиблицу, неважно что именно. Мне надо сделать вывод в 4 столбика по 3 строки. Я могу вывести 12 блоков вниз, но как сделать чтобы сначало 4 выводилось по горизонтали, потом ниже ещё 4 и ниже ещё 4. Как выглядит на главной странице сайта doska.ru.
Если я Вас правильно понял, то Вам нужно нечто такое: PHP: <? echo "<table width=600 border=0 cellspacing='1' cellpadding='4' align='center'>"; while ($row = mysql_fetch_array($result)){ echo "<tr>"; echo "<td align=center valign=top>'".$row[0]."'></td>"; echo "<td align=center valign=top>'".$row[1]."'</td>"; echo "<td align=center valign=top>'".$row[2]."'</td>"; echo "<td align=center valign=top>'".$row[3]."'</td>"; } echo "</tr>"; echo "</table>"; ?>
Кажется, ему нужно что-то вроде PHP: <? $txt= "<table><tr>"; $k=0; while ($row = mysql_fetch_array($result)){ $txt.="<td>".$row['ru']."</td>"; if (++$a%4==0){$txt.="</tr><tr>"} } $txt.= "</tr></table>"; echo $txt;
Спасибо за ваши варианты, но мне нужен так-же вывод подкатегорий. Вот мой вариант, но тут 12 запросов в базу, можно ли сделать с одним запросом такое или нет? PHP: <?php print "<table border='1' width='800px'>"; $cat_num = "0"; for ($vertical=1; $vertical<=3; $vertical++){ print "<tr><td>"; for ($horizontal=1; $horizontal<=4; $horizontal++){ $db_table = mysql_query("SELECT * FROM category WHERE cat=$cat_num",$db); $cat_num++; while ($cat = mysql_fetch_array($db_table)){ print $cat['ru']."<br>"; } /* Столбик */ print "</td><td>"; } /* Ряд */ print "</td></tr>"; } print "</table>"; ?>
[sql]SELECT * FROM category AS c1 LEFT JOIN category AS c2 ON c1.id=c2.cat WHERE c1.id=$cat_num[/sql] получиш' все подкатегории категории $cat_num + саму категориЙУ одним запросом. или убери WHERE и будет тебе все категории с подкатегориями
1. Убивец! 2. Вытягивай их все одним запросом в массив а потом его уже циклом кидай в print 3. зачем здесь таблица, если можно кидать каждую в <div style="float: left">print </div> и они по контейнеру сами расползутся в столько строк сколько надо, сколько бы категорий у тебя ни было?