Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Постраничный вывод в "Новостях"...
 
 автор: Soloway   (17.04.2008 в 22:24)   письмо автору
 
 

Уважаемые, поможите... :-)

Взяв за основу скрипт "Блока новостей" от авторов данного проекта, адаптировал его под свои цели, в т.ч. применил псевдостатические ссылки. Вроде всё нормально, но вот с модулем постраничной навигации есть проблемка. А именно вот в чём. Скажем жмакая по ссылке [5-8], перехожу, как и планируется на страницу news2.htm а возвращаясь на [1-4] - на страницу news1.htm... В итоге имею на сайте две совершенно одинаковых страницы: news.htm и news1.htm

Вот фрагмент кода:

  // Постраничная навигация
    if(isset($_GET['id_news']))
  {
  }
  else
  {
  $page_link = 4;
  $query = "SELECT COUNT(*) FROM news WHERE hide='show' AND putdate <= NOW()";
  $tot = mysql_query($query);

  $total = mysql_result($tot,0);
  $number = (int)($total/$all_number_news);
  if((float)($total/$all_number_news) - $number != 0) $number++;
  echo "<br><table><tr><td><p>";
// Проверяем есть ли ссылки слева
  if($page - $page_link > 1)
  {
    echo "<a href=news.htm>[1-$all_number_news]</a>&nbsp;&nbsp;...&nbsp;";
 // Есть
    for($i = $page - $page_link; $i<$page; $i++)
    {
        echo "&nbsp;<a href=news".$i.".htm>[".(($i - 1)*$all_number_news + 1)."-".$i*$all_number_news."]</a>&nbsp;";
    }
  }
  else
  {
    // Нет
    for($i = 1; $i<$page; $i++)
    {
        echo "&nbsp;<a href=news".$i.".htm>[".(($i - 1)*$all_number_news + 1)."-".$i*$all_number_news."]</a>&nbsp;";
    }
  }
  // Проверяем есть ли ссылки справа
  if($page + $page_link < $number)
  {
    // Есть
    for($i = $page; $i<=$page + $page_link; $i++)
    {
      if($page == $i)
        echo "&nbsp;[".(($i - 1)*$all_number_news + 1)."-".$i*$all_number_news."]&nbsp;";
      else
        echo "&nbsp;<a href=news".$i.".htm>[".(($i - 1)*$all_number_news + 1)."-".$i*$all_number_news."]</a>&nbsp;";
    }
    echo "&nbsp;...&nbsp;<a href=news".$number.".htm>[".(($number - 1)*$all_number_news + 1)."-$total]</a>&nbsp;";
  }
  else
  {
    // Нет
    for($i = $page; $i<=$number; $i++)
    {
      if($number == $i)
      {
        if($page == $i)
          echo "&nbsp;[".(($i - 1)*$all_number_news + 1)."-$total]&nbsp;";
        else
          echo "&nbsp;<a href=news".$i.".htm>[".(($i - 1)*$all_number_news + 1)."-$total]</a>&nbsp;";
      }
      else
      {
        if($page == $i)
          echo "&nbsp;[".(($i - 1)*$all_number_news + 1)."-".$i*$all_number_news."]&nbsp;";
        else
          echo "&nbsp;<a href=news".$i.".htm>[".(($i - 1)*$all_number_news + 1)."-".$i*$all_number_news."]</a>&nbsp;";
      }
    }
  }


Вобщем, ребят, помогите сделать так, что бы при переходе на первую страницу (ну или на крайнюю левую ссылку) я попадал ни на news1.htm, а на news.htm...

Сорри за сумбурное изложение, но я уже практически в трансе...

   
 
 автор: Даниэль   (17.04.2008 в 22:35)   письмо автору
 
   для: Soloway   (17.04.2008 в 22:24)
 

У меня на сайте так.

<?PHP
$page
=$_GET['page'];
$phpself="themes";

if ((!isset(
$page)))
{
    
$page=1;
    
$rows=mysql_num_rows($result2); //Всего строк
    
$inpage="10"// На одной странице выводить 10 записей
    
    
$vsego_page=$rows/$inpage// Всего страниц
    
    
$do=1*$inpage// До
    
$ot=$do-$inpage// От
    
    
$thispagedo=1*$inpage;
    
$thispageot=$thispagedo-$inpage;
    
$thispageecho="<span style=\"color: #66B0F5;\">[&nbsp;".$thispageot."-".$thispagedo."&nbsp;]</span>";
    
        
        if (
$vsego_page>1)
        {
            
$rdo=(1+1)*$inpage;
            
$rot=$rdo-$inpage;
            
$right=2;
            
$rightecho=" [&nbsp;<a href=\"".$phpself.".php?session=".$_GET['session']."&page=".$right."&search=".$search."\">".$rot."-".$rdo."</a>&nbsp;]";
                    
            
            if (
$vsego_page>$right)
            {
                
                
$rdo2=($right+1)*$inpage;
                
$rot2=$rdo2-$inpage;
                
$right2=3;
                
$right2echo="[&nbsp;<a href=\"".$phpself.".php?session=".$_GET['session']."&page=".$right2."&search=".$search."\">".$rot2."-".$rdo2."</a>&nbsp;]";
                
                
            }
            
            
$vsego_pagedo=$vsego_page*$inpage;
            
$vsego_pageot=$vsego_pagedo-$inpage;
            
            
$vsego_page=ceil($vsego_page);
                        
            
$vsegoecho=" ...[&nbsp;<a href=\"".$phpself.".php?session=".$_GET['session']."&page=".$vsego_page."&search=".$search."\">".$vsego_pageot."-".$vsego_pagedo."</a>&nbsp;]";
            
    
            
            
        }
        
        
$ot="0";
        
$do="10";
}

else

{        
    
    
        if (!empty(
$page) && ($page>0))
    {
    
    
$rows=mysql_num_rows($result2); //Всего строк
    
$inpage="10"// На одной странице выводить 10 записей
    
    
$vsego_page=$rows/$inpage// Всего страниц
    
    
$do=$page*$inpage// До
    
$ot=$do-$inpage// От
    
    
$thispagedo=$page*$inpage;
    
$thispageot=$thispagedo-$inpage;
    
$thispageecho="<span style=\"color: #66B0F5;\">[&nbsp;".$thispageot."-".$thispagedo."&nbsp;]</span>";
    
    
$onepagedo=$inpage;
    
$onepageot=0;
    
$onepageecho="[&nbsp;<a href=\"".$phpself.".php?session=".$_GET['session']."&page=1&search=".$search."\">".$onepageot."-".$onepagedo."</a>&nbsp;]...";
    
    if (
$thispagedo==$onepagedo)
    {
        
$onepageecho="";
    }
    
    
$vsego_pagedo=$vsego_page*$inpage;
    
$vsego_pageot=$vsego_pagedo-$inpage;
            
    
$vsego_page=ceil($vsego_page);
                        
    
$vsegoecho=" ...[&nbsp;<a href=\"".$phpself.".php?session=".$_GET['session']."&page=".$vsego_page."&search=".$search."\">".$vsego_pageot."-".$vsego_pagedo."</a>&nbsp;]";
    
    if ((
$thispagedo==$vsego_pagedo) || ($vsego_page==$page))
    {
        
$vsegoecho="";
    }
    
        
        if (
$vsego_page>$page)
        {
            
$rdo=($page+1)*$inpage;
            
$rot=$rdo-$inpage;
            
$right=$page+1;
            
$rightecho=" [&nbsp;<a href=\"".$phpself.".php?session=".$_GET['session']."&page=".$right."&search=".$search."\">".$rot."-".$rdo."</a>&nbsp;]";
            
            if (
$rdo==$onepagedo)
    {
        
$onepageecho="";
    }
            
            if (
$right==$vsego_page)
                {
                    
$rightecho="";
                }
                    
            
            if (
$vsego_page>$right)
            {
                
                
$rdo2=($right+1)*$inpage;
                
$rot2=$rdo2-$inpage;
                
$right2=$right+1;
                
$right2echo="[&nbsp;<a href=\"".$phpself.".php?session=".$_GET['session']."&page=".$right2."&search=".$search."\">".$rot2."-".$rdo2."</a>&nbsp;]";
                
                if (
$rdo2==$onepagedo)
    {
        
$onepageecho="";
    }
                
                if (
$right2==$vsego_page)
                {
                    
$right2echo="";
                }                
                
            }        
            
        }
        
        if ((
$page==1) || ($page<1))
        {
            
        }
        
        else
        
        {
        
                
$ldo=($page-1)*$inpage;
                
$lot=$ldo-$inpage;
                
$left=$page-1;
                
$leftecho="[&nbsp;<a href=\"".$phpself.".php?session=".$_GET['session']."&page=".$left."&search=".$search."\">".$lot."-".$ldo."</a>&nbsp;]";
                
                if (
$ldo==$onepagedo)
    {
        
$onepageecho="";
    }
        
        
                
        if (
$left==1)
        {
            
        }
        
        else
        
        {
            
$ldo2=($left-1)*$inpage;
                
$lot2=$ldo2-$inpage;
                
$left2=$left-1;
                
$leftecho2="[&nbsp;<a href=\"".$phpself.".php?session=".$_GET['session']."&page=".$left2."&search=".$search."\">".$lot2."-".$ldo2."</a>&nbsp;]";
                
                if (
$ldo2==$onepagedo)
    {
        
$onepageecho="";
    }
        }
        }

}

else

{
    
$page=1;
    
$rows=mysql_num_rows($result2); //Всего строк
    
$inpage="10"// На одной странице выводить 10 записей
    
    
$vsego_page=$rows/$inpage// Всего страниц
    
    
$do=1*$inpage// До
    
$ot=$do-$inpage// От
    
    
$thispagedo=1*$inpage;
    
$thispageot=$thispagedo-$inpage;
    
$thispageecho="<span style=\"color: #66B0F5;\">[&nbsp;".$thispageot."-".$thispagedo."&nbsp;]</span>";
    
        
        if (
$vsego_page>1)
        {
            
$rdo=(1+1)*$inpage;
            
$rot=$rdo-$inpage;
            
$right=2;
            
$rightecho=" [&nbsp;<a href=\"".$phpself.".php?session=".$_GET['session']."&page=".$right."&search=".$search."\">".$rot."-".$rdo."</a>&nbsp;]";
                    
            
            if (
$vsego_page>$right)
            {
                
                
$rdo2=($right+1)*$inpage;
                
$rot2=$rdo2-$inpage;
                
$right2=3;
                
$right2echo="[&nbsp;<a href=\"".$phpself.".php?session=".$_GET['session']."&page=".$right2."&search=".$search."\">".$rot2."-".$rdo2."</a>&nbsp;]";
                
                
            }

            
            
$vsego_pagedo=$vsego_page*$inpage;
            
$vsego_pageot=$vsego_pagedo-$inpage;
            
            
$vsego_page=ceil($vsego_page);
                        
            
$vsegoecho=" ...[&nbsp;<a href=\"".$phpself.".php?session=".$_GET['session']."&page=".$vsego_page."&search=".$search."\">".$vsego_pageot."-".$vsego_pagedo."</a>&nbsp;]";
            

        
$ot="0";
        
$do="10";
                
                
            
            
        }    
}
}

if((!empty(
$_POST['search'])) ||  (!empty($_GET['search'])))
{
    
$result mysql_query ("SELECT * FROM themes WHERE MATCH(theme) AGAINST ('$search' IN BOOLEAN MODE) ORDER BY newmessages DESC LIMIT $ot,$inpage");
    
    
}

else

{
    
$result mysql_query("SELECT * FROM `themes` ORDER BY newmessages DESC LIMIT $ot,$inpage");
}


echo
"<div class=\"pager\">".$onepageecho." ".$leftecho2." ".$leftecho." ".$thispageecho." ".$rightecho." ".$right2echo." ".$vsegoecho."</div>";
        
?>

   
 
 автор: soloway   (18.04.2008 в 12:42)   письмо автору
 
   для: Даниэль   (17.04.2008 в 22:35)
 

Даниэль, спасибо.
По ограниченности своей я ещё не вник в Ваш код, но обязательно его прочту... Попытаюсь расшифровать... Просто не совсем я программист... :-)

А проблему решил заменив вот этот кусок:
for($i = 1; $i<$page; $i++)
    {
        echo "&nbsp;<a href=news".$i.".htm>[".(($i - 1)*$all_number_news + 1)."-".$i*$all_number_news."]</a>&nbsp;";
    }
  } 

На такой:
    for($i = 1; $i<$page; $i++)
    {
        
        if($i == 1)
        echo "<a href=news.htm>[1-$all_number_news]</a>&nbsp;";
        else
        echo "&nbsp;<a href=news".$i.".htm>[".(($i - 1)*$all_number_news + 1)."-".$i*$all_number_news."]</a>&nbsp;";
        
    }
  }


Как ни странно даже заработало как я хотел.
Я прям на себя удивляюсь... :-)
Спасибо.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования