Правильный вывод данных из базы!

sarik1986

Новичок
Ребята установил новое меню на сайте.работает с помощю JQuery.пытаюсь выводить категории,подкатегории,и подподкатегории из базы.выводить только одну категорию, одну подкатегорию, и одну подподкатегорию. цикл не продолжается из за тега <ul>.что писать чтоб сначала выполнил вывод из базы все категории потом тег <UL> и переходил к циклу подкатегорий.как это можно решить?Пишу сюда код меню.Пожалуйста посторайтесь помо.Спасибо заранее.
Это мое меню.открывается с +.

http://imageshack.us/photo/my-images/856/menulh.jpg/

А вот это мой код

PHP:
<?php
include "conn.php";
?>
<span class="side_mnu_cat"><?php echo $label['A_C']; ?></span>
<ul class="topnav">
<?php
$i=0;
$category_select=mysql_query("select * from category order by categoryid");
while($category_result=mysql_fetch_array($category_select))
{
$i++;
$cat_title=$category_result['category'];
$cat_name=substr($category_result['category'],0,5);
if($cat_title != '')
?>
<li><?php echo "<a href='#' class='head'><img src='$category_result[image2]' width='15' height='15' /> $cat_title </a>"; ?>

  	<?php
$query="select * from subcategory where  categoryid='$category_result[categoryid]' limit 0,20";
$query1=mysql_query($query);
while($sub_cat_result=mysql_fetch_array($query1))
{
$subcat_title=$sub_cat_result['subcategory'];
$sub_cat_name=substr($sub_cat_result['subcategory'],0,5);
?>
<ul>
<li><?php echo "<a href='#'> $subcat_title </a>"; ?>
  <?php
$query_sub="select * from sub_cat where  subcat_id='$sub_cat_result[subcategoryid]' limit 0,20";
$query_sub1=mysql_query($query_sub);
$query_num_r=mysql_num_rows($query_sub1);
$i=1;
while($sub_subcat_result=mysql_fetch_array($query_sub1))
{
$subcat_sub_title=$sub_subcat_result['sub_subcat'];
$subcat_cat_name=substr($sub_subcat_result['sub_subcat'],0,5);
?>
	<ul>
	<?php
	if($i==$query_num_r){
	echo "<a href='Subsubcategories-".$sub_subcat_result[subcategoryid]."-".$sub_cat_result[subcategoryid]."-".$category_result[categoryid]."-".urlconvert($subcat_cat_name).".html' style='color:#000;font-weight:normal;' >$subcat_sub_title</a>";
	}else{
	 echo "<a href='Subsubcategories-".$sub_subcat_result[subcategoryid]."-".$sub_cat_result[subcategoryid]."-".$category_result[categoryid]."-".urlconvert($subcat_cat_name).".html' style='color:#000;font-weight:normal;' >$subcat_sub_title,</a>";
	 }
	  ?>

	<?php 
	$i++;
	} 
	?>
	</li>
	</li>
	</li>
<?php } ?>
<?php
}
?>
</ul>
</ul>
 

Absinthe

жожо
sarik1986 ты кода много вывалил. Никому не интересно вчитываться в огромные куски кода.
 

sarik1986

Новичок
ну я же не на французком написал.этот форум и создан для поддержки кодов PHP. и раздел вроде б соответсвующий выбрал. PHP же есть код.а если посмотреть то увидете что там он не очень большой.просто вывод данных меню из базы
 

sarik1986

Новичок
Суть любого технического форума – это обмен знаниями, навыками, опытом.
 

sarik1986

Новичок
или я должен сюда писать свой вопрос а потом сразу же начать искать ответ на него?так все происходит у Вас?
 

Absinthe

жожо
sarik1986 форум - место общения. Посмотри определение слова в википедии. Не нужно путать с бесплатной техподдержкой.

Хочешь ответ на свой вопрос?
Четко сформулируй его, а код показывай только тот, который нужен.
 

sarik1986

Новичок
хорошо. проблема в том что я вывожу данные категорий и подкатегорий из базы но показывает всего одну категорию и одну подкатегорию из за того там стоит тег <ul> (переход подменю). как мне сделать так чтоб цикл вывода данных из базы закончился и только после этого он показывал подкатегории в категориях.вот кусочек кода.
PHP:
ВЫВОД ДАННЫХ ИЗ ТАБЛИЦЫ КАТЕГОРИЙ

<?php
$i=0;
$category_select=mysql_query("select * from category order by categoryid");
while($category_result=mysql_fetch_array($category_select))
{
$i++;
$cat_title=$category_result['category'];
$cat_name=substr($category_result['category'],0,5);
if($cat_title != '')
?>
<li><?php echo "<a href='#' class='head'><img src='$category_result[image2]' width='15' height='15' /> $cat_title </a>"; ?>

ЗДЕСЬ НАЧИНАЕТСЯ ВЫВОД ДАННЫХ ИЗ ПОДКАТЕГОРИЙ

	<?php
$query="select * from subcategory where  categoryid='$category_result[categoryid]' limit 0,20";
$query1=mysql_query($query);
while($sub_cat_result=mysql_fetch_array($query1))
{
$subcat_title=$sub_cat_result['subcategory'];
$sub_cat_name=substr($sub_cat_result['subcategory'],0,5);
?>
<ul>
<li><?php echo "<a href='#'> $subcat_title </a>"; ?>
так пойдет?
 

Andkorol

Новичок
как мне сделать так чтоб цикл вывода данных из базы закончился и только после этого он показывал подкатегории в категориях
Какой цикл – у тебя их там два (категории и подкатегории), запрос подкатегорий зависим от запроса категорий.
Сделай нужную тебе структуру вывода сначала просто в HTML – а потом добавляй туда PHP-код.
 

sarik1986

Новичок
вот нашел в исходнике этого меню структуру его

HTML:
<ul class="topnav">
		<li><a href="#">JavaScript</a>
		<ul>
			 <li><a href="#">Cookies</a></li>
			 <li><a href="#">Events</a></li>
			 <li><a href="#">Forms</a></li>
			 <li><a href="#">Games</a></li>
			 <li><a href="#">Images</a></li>
			 <li><a href="#">Navigations</a>
				<ul>
					<li><a href="#">CSS</a></li>
					<li><a href="#">JavaScript</a></li>
					<li><a href="#">JQuery</a></li>
				</ul>
			</li>
			 <li><a href="#">Tabs</a></li>
		</ul>
	</li>
html структура нормально работает.а вот php цикл туда никак не могу собрать. категория, подкатегория,подподкатегория
 

Andkorol

Новичок
Теперь вводи код.
Каждый уровень вложенности должен формироваться по такому принципу
PHP:
// php-запрос
// проверка наличия результатов {
<ul>
    // начало цикла {
    <li></li>
    // } конец цикла 
</ul>
// } конец проверки наличия результатов
Т.е. в твоем случае это будет примерно так:
PHP:
// php-запрос для категорий
// проверка наличия результатов для категорий {
<ul>
    // начало цикла для категорий {
    <li>Категория

	    // php-запрос для подкатегорий
	    // проверка наличия результатов для подкатегорий {
		<ul>
		    // начало цикла для подкатегорий {
		    <li>Подкатегория
		    
			    // php-запрос для под-подкатегорий
			    // проверка наличия результатов для под-подкатегорий {
				<ul>
				    // начало цикла для под-подкатегорий {
				    <li>Под-подкатегория</li>
				    // } конец цикла для под-подкатегорий
				</ul>
			    // } конец проверки наличия результатов для под-подкатегорий
			    
	        </li>
		    // } конец цикла для подкатегорий
		</ul>
		// } конец проверки наличия результатов для подкатегорий

    </li>
    // } конец цикла для категорий
</ul>
// } конец проверки наличия результатов для категорий
 

sarik1986

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

вот код который у меня получился.

PHP:
<?PHP

include "conn.php";

 

echo "<span class='side_mnu_cat'>".$label['A_C']."</span>";

echo "<ul class='topnav'>";

 

$i=0;

$category_select = mysql_query("select * from category order by categoryid");

while($category_result=mysql_fetch_array($category_select))

{

        $i++;

        $cat_title = $category_result['category'];

        $cat_name = substr($category_result['category'],0,5);

        

        if($cat_title != '')

 

        echo "<li>";

        echo "<a href='#' class='head'><img src='".$category_result['image2']."' width='15' height='15' /> ".$cat_title." </a>";

        

        $query = "select * from subcategory where  categoryid='".$category_result['categoryid']."' limit 0,20";

        $query1 = mysql_query($query);

        

        echo "<ul>";

        

        while($sub_cat_result = mysql_fetch_array($query1))

        {

                $subcat_title = $sub_cat_result['subcategory'];

                $sub_cat_name = substr($sub_cat_result['subcategory'],0,5);

 

                

                echo "<li>";

                echo "<a href = '#'> ".$subcat_title." </a>";

                

                $query_sub = "select * from sub_cat where subcat_id='".$sub_cat_result['subcategoryid']."' limit 0,20";

                $query_sub1 = mysql_query($query_sub);

                $query_num_r = mysql_num_rows($query_sub1);

                $i=1;

                

                echo "<ul>";

                

                while($sub_subcat_result = mysql_fetch_array($query_sub1))

                {

                        $subcat_sub_title = $sub_subcat_result['sub_subcat'];

                        $subcat_cat_name = substr($sub_subcat_result['sub_subcat'],0,5);

 

                        if($i == $query_num_r)

                        {

                                echo "<li><a href='Subsubcategories-".$sub_subcat_result['subcategoryid']."-".$sub_cat_result['subcategoryid']."-".$category_result['categoryid']."-".urlconvert($subcat_cat_name).".html' style='color:#000;font-weight:normal;' >".$subcat_sub_title."</a></li>";

                        }

                        else

                        {

                                echo "<li><a href='Subsubcategories-".$sub_subcat_result['subcategoryid']."-".$sub_cat_result['subcategoryid']."-".$category_result['categoryid']."-".urlconvert($subcat_cat_name).".html' style='color:#000;font-weight:normal;' >".$subcat_sub_title."</a></li>";

                        }

                        

                        

 

                        $i++;

                }

                

                echo "</ul>";

                echo "</li>";

                

 

        }

        

        echo "</ul>";

        echo "</li>";

 

}

 

echo "</ul>";
 

Andkorol

Новичок
Я ж указал ранее, что после каждого запроса нужна проверка.
Нужно проверять количество строк в результатах запросов – и создавать новый список, только если запрос вернул хотя бы одну строку:
PHP:
<?php
$sql_result = $categories = mysql_query('SELECT * FROM .... ');// php-запрос
if(mysql_num_rows($sql_result) > 0) { // проверка количества строк в результате запроса
?>
<ul>
    // начало цикла {
    <li></li>
    // } конец цикла 
</ul>
<?php
} //конец проверки наличия результатов
 
Сверху