Перейти к содержимому



Как сделать вывод навигации не просто от 1 до 20 а <<< 1 2 3 4 5 ..... 20 >>>

#1 tiagamc

tiagamc
  • Пользователь
  • 22 сообщений
  • Репутация: -1
0

Отправлено 04 Август 2012 - 07:44

здравствуйте. есть код вывода с постраничной новигацией вот как зделать что бы выводились не все тсраницы а например
<<< 1 2 3 4 5 ..... 20 >>>
function generate_lists($bukva){
function fsize($str_size){
if ($str_size != ""){
$str_size=(int)$str_size;
$mpd="./../m3_files/".get_dir($str_size)."/".$str_size.".mp3";
@$blya=(int)(@filesize($mpd)/1024);
@$blya=$blya/1024;
list($mb,$kb) = @explode(".",$blya);
@$kb = substr($kb, 0, 2);
if ($kb==""){$kb="00";}
@$blyxa=$mb.".".$kb." Mb";
return $blyxa;
}
}
global $bytes,$WWW, $LIST_DATA ;
// Читаем шаблон по которому изменять все страницы
$fp = fopen ("./../template/list.html", "r" );
$buffer = fread($fp, $bytes);
fclose ($fp);
if ($bukva != ""){$r=2;}else{$r=56;}
for ($i=0; $i<$r; $i++){
// значение $LIST_DATA, это то что появляеться в шаблоне поэтому и в ковычках, тут должна быть верхняя ПОСТРАНИЧНАЯ НАВИГАЦИЯ
$LIST_DATA.="";
$view=$i;
switch ($view) {
case 1: $view="1"; break;
case 2: $view="a"; break;
case 3: $view="b"; break;
case 4: $view="c"; break;
case 5: $view="d"; break;
case 6: $view="e"; break;
case 7: $view="f"; break;
case 8: $view="g"; break;
case 9: $view="h"; break;
case 10: $view="i"; break;
case 11: $view="j"; break;
case 12: $view="k"; break;
case 13: $view="l"; break;
case 14: $view="m"; break;
case 15: $view="n"; break;
case 16: $view="o"; break;
case 17: $view="p"; break;
case 18: $view="q"; break;
case 19: $view="r"; break;
case 20: $view="s"; break;
case 21: $view="t"; break;
case 22: $view="u"; break;
case 23: $view="v"; break;
case 24: $view="w"; break;
case 25: $view="x"; break;
case 26: $view="y"; break;
case 27: $view="z"; break;
case 28: $view="а"; break;
case 29: $view="б"; break;
case 30: $view="в"; break;
case 31: $view="г"; break;
case 32: $view="д"; break;
case 33: $view="е"; break;
case 34: $view="ж"; break;
case 35: $view="з"; break;
case 36: $view="и"; break;
case 37: $view="к"; break;
case 38: $view="л"; break;
case 39: $view="м"; break;
case 40: $view="н"; break;
case 41: $view="о"; break;
case 42: $view="п"; break;
case 43: $view="р"; break;
case 44: $view="с"; break;
case 45: $view="т"; break;
case 46: $view="у"; break;
case 47: $view="ф"; break;
case 48: $view="х"; break;
case 49: $view="ц"; break;
case 50: $view="ш"; break;
case 51: $view="щ"; break;
case 52: $view="э"; break;
case 53: $view="ю"; break;
case 54: $view="я"; break;
case 55: $view="ч"; break;
}
if ($bukva != ""){$view=strtolower($bukva);}
// SELECT * FROM m3_mp3 WHERE artist LIKE 'a%';
if ($view == "1"){
$leet = mysql_query("SELECT * FROM `m3_mp3` WHERE (SUBSTRING(LCASE(`artist`),1,1) = '1' OR SUBSTRING(LCASE(`artist`),1,1) = '2' OR SUBSTRING(LCASE(`artist`),1,1) = '3' OR SUBSTRING(LCASE(`artist`),1,1) = '4' OR SUBSTRING(LCASE(`artist`),1,1) = '5' OR SUBSTRING(LCASE(`artist`),1,1) = '6' OR SUBSTRING(LCASE(`artist`),1,1) = '7' OR SUBSTRING(LCASE(`artist`),1,1) = '8' OR SUBSTRING(LCASE(`artist`),1,1) = '9' OR SUBSTRING(LCASE(`artist`),1,1) = '0') AND `active` = '1' ORDER BY `artist` ASC;");
}else{
$leet = mysql_query("SELECT * FROM `m3_mp3` WHERE (SUBSTRING(LCASE(`artist`),1,1) = '".$view."') AND `active` = '1' ORDER BY `artist` ASC;");
}
$count_str=50;
$max_count_str=mysql_num_rows($leet);
$pages=ceil($max_count_str/$count_str);
$to_file=tag2html($buffer,"/");
$navi_pages=""; //строка навигации будет дополняться ниже
//*************** генерим $navi_pages именно здесь
for($ii=0;$ii<$pages;$ii++)
{
  if ( $ii == 0 )
  {
			    $navi_pages.="<b><a href=./../m3_lists/".$i.".shtml>".($ii+1)."</a> </b>";
  }
  else
  {
			    $navi_pages.="<a href=./../m3_lists/".$i."-".$ii.".shtml>".($ii+1)."</a> ";
  }
}
//***************
for($ii=0;$ii<$pages;$ii++) // цикл для создания страниц навигации
{
  $zh=1;
  while ($row = mysql_fetch_array($leet, MYSQL_ASSOC) AND $zh<$count_str)
  {


$zh=$zh+1;
$w_id=$row['id'];
$w_artist=unsafe_str($row['artist']);
$w_track=unsafe_str($row['track']);
$w_size=$row['size'];
$w_uploader=$row['uploader'];
$w_date=$row['date'];
$p_id=$row['id'];
$p_size=fsize($row['id']);
@$id3 = new id3("./../m3_files/".get_dir($p_id)."/".$p_id.".mp3");
@$id_bitrate=$id3->bitrate();
$v_link=$WWW."pages/".get_dir($w_id)."/".$w_id.".shtml";
// значение $LIST_DATA, это то что появляеться в шаблоне поэтому и в ковычках, и в виде таблице.
$LIST_DATA.="<table width=\"100%\" border=\"0\" cellspacing=\"1\">
  <tr>
	    <td height=\"60%\"><img src=\"./../fon/p.png\" cellspacing=\"1\" align=\"absmiddle\"/> <a href=\"".$v_link."\" >".$w_artist." - ".$w_track."</a></td>
  <td width=\"55\"> [<font color=\"#660000\"> ".$id_bitrate." Kb/s </font>] </td>
	    <td width=\"55\"> [<font color=\"#660000\"> ".$w_size." </font>] </td>
	    <td width=\"90\">[<font color=\"#660000\">  ".$w_date." </font>]</td>

  </tr>
</table>";
}
$LIST_DATA.="<table width=\"99%\" border=\"0\" align=\"center\" cellspacing=\"1\" bgcolor=\"#999999\">
  <tr>
	    <td height=\"36\"  align=\"center\" bgcolor=\"#F8F8F8\"> ". $navi_pages."   </td>
  </tr>
</table>";
//записали в переменку для шаблонки
$to_file=tag2html($buffer,"/");
if ( $ii == 0 )
{
  $fp = fopen ("./../m3_lists/".$i.".shtml", "w+");
}
else
{
  $fp = fopen ("./../m3_lists/".$i."-".$ii.".shtml", "w+");
}
fwrite ($fp, $to_file);
fclose ($fp);
$LIST_DATA=""; //очистили переменку для шаблонки перед след итерацией
}
mysql_free_result($leet); // после всех итерций освободили ресурс
}
}

 

 

  • 0

#2 surfer

surfer
  • Заблокированные
  • 1 956 сообщений
  • Репутация: 71

Отправлено 20 Август 2012 - 12:58

switch - это жестоко!
есть же готовые решения, куча готовых классов, зачем велосипед изобретать?
http://www.softtime....p?id_article=33
http://www.tigir.com/paging.htm
  • 1

#3 Ariadna

Ariadna
  • Пользователь
  • 29 сообщений
  • Репутация: 3

Отправлено 24 Август 2012 - 20:10

surfer, спасибо огромное за ваши ссылки! Очень понравилось, что по второй ссылке очень подробно расписано как раз то, для чего все делается и в какой последовательности. Я только начинаю изучать PHP, поэтому для меня как раз очень важно понимать саму суть, а не просто машинально копировать то, что есть готовое.
  • 0


Оформление форума – IPBSkins.ru