попрос по выводу из результата mysql

FRIE

Новичок
попрос по выводу из результата mysql

PHP:
$result1 = mysql_query("SELECT `engname`,`runame` FROM `table1` ",$db);
if (($num_rows=mysql_num_rows($result1)) > 0 )
{
	
	$c=0;
	
	while ($myrow1 = mysql_fetch_array($result1)){
		
		if($c<5){  
		if($c==0){echo"<div id='list1'>";}
	echo"<li><a href='".$myrow1["engname"]."' class='li'>".$myrow1["runame"]."</a></li>";
	$c++;
	if($c==5){echo"</div>";}
		}
		if($c>4 and $c<10){  
		if($c==5){echo"<div id='list2'>";}
	echo"<li><a href='".$myrow1["engname"]."' class='li'>".$myrow1["runame"]."</a></li>";
	$c++;
	if($c==10){echo"</div>";}
		}
		if($c>9 and $c<15){  
		if($c==10){echo"<div id='list3'>";}
	echo"<li><a href='".$myrow1["engname"]."' class='li'>".$myrow1["runame"]."</a></li>";
	$c++;
	if($c==12){echo"</div>";}
		}
  }
 }
вот мой криво работающий код, а задача такая, что может быть до 15 категорий и выводиться они должны порциями, не более 5 штук в 1 див (всего может быть 3 дива), но категорий может быть 3 а может быть и все 15 . как корректно рассчитать и разложить по порциям чтобы теги у дивов были закрытыми если категовии в выводе закончились?

PHP:
 очется увидеть примерно такое

<div id='list1'>
<li><a href='kedi' class='li'>кеды1</a></li>
<li><a href='kedi' class='li'>кеды2</a></li>
<li><a href='kedi' class='li'>кеды3</a></li>
<li><a href='kedi' class='li'>кеды4</a></li>
<li><a href='kedi' class='li'>кеды5</a></li>
</div>

<div id='list2'>
<li><a href='kedi' class='li'>кеды6</a></li>
<li><a href='kedi' class='li'>кеды7</a></li>
<li><a href='kedi' class='li'>кеды8</a></li>
<li><a href='kedi' class='li'>кеды9</a></li>
<li><a href='kedi' class='li'>кеды10</a></li>
</div>

<div id='list3'>
<li><a href='kedi' class='li'>кеды11</a></li>
<li><a href='kedi' class='li'>кеды12</a></li>
</div>
знатоки ! натолкните на путь истинный =)




решил проблему вот таким говнокодом

PHP:
$result1 = mysql_query("SELECT `engname`,`runame` FROM `table1` ",$db);
if (($num_rows=mysql_num_rows($result1)) > 0 )
{
	
	$c=0;
	
	while ($myrow1 = mysql_fetch_array($result1)){

if($c<5){  
		if($c==0){echo"<div id='list1'>";}
	echo"<li><a href='".$myrow1["engname"]."' class='li'>".$myrow1["runame"]."</a></li>";
	$c++;
	if($c==5 or $c==$num_rows){echo "</div>";}
		}
		
		elseif($c>=5 and $c<10  and $c!==$num_rows){  
		if($c==5){echo"<div id='list2'>";}
	echo"<li><a href='".$myrow1["engname"]."' class='li'>".$myrow1["runame"]."</a></li>";
	$c++;
	if($c==10 or $c==$num_rows){echo "</div>";}
		}
		
		elseif($c>=9 and $c<15 and $c!==$num_rows){
		if($c==10){echo"<div id='list3'>";}
	echo"<li><a href='".$myrow1["engname"]."' class='li'>".$myrow1["runame"]."</a></li>";
	$c++;
    if($c==15 or $c==$num_rows){echo "</div>";}
		}
  }
  	
 }
как пооптимизированнее сделать можно?
 

FRIE

Новичок
Автор оригинала: prolis
проверка на кратность 5:
PHP:
if ($c % 5 == 0) echo '</div><div>';
неа =) он на первом же результате выведет </div><div>

ну впрочем не суть важно, я сделал и это работает, вопрос остается в оптимизации , возможно можно сделать так чтобы это быстрее работало
 

prolis

Новичок
Автор оригинала: FRIE
неа =) он на первом же результате выведет </div><div>
PHP:
$c=1;
echo '<div>';
while ($myrow1 = mysql_fetch_array($result1))
{ 
echo"<li><a href='".$myrow1["engname"]."' class='li'>".$myrow1["runame"]."</a></li>";
if ($c % 5 == 0) echo '</div><div>';
$c++;
}
echo '</div>';
 
Сверху