2013-03-16 3 views
0

В моем проекте я сделал разбивку на страницы с использованием PHP, я сделал это следующим образом: Каждая кнопка (СЛЕДУЮЩАЯ СТРАНИЦА и ПРЕДЫДУЩАЯ СТРАНИЦА) - это гиперссылки, которые ссылаются на одну страницу с передачей переменной GET (НОМЕР СТРАНИЦЫ). Для каждой смены страницы есть сценарии дляКак увеличить скорость разбивки на страницы

  1. подключиться к БД.
  2. запрос данных для указанной страницы.
  3. закрыть
  4. DB подключение. отображает данные.

Проблема в том, что она работает медленно. Есть ли альтернативный метод для каждого соединения времени с db и запроса для данных и закрытия соединения db.

Также во время разбивки на страницы я хочу перезагрузить только данные из БД, а все остальное содержимое на странице остается тем же и не хочет перезагружать. Как достичь этого?

Сценария приводится ниже

<?php 
require_once("./include/membersite_config.php"); //include files for login system 
if($fgmembersite->CheckLogin()) 
{ 
    $login=true; 
} 
else 
{ 
    $login=false; 
} 
require_once("db.php"); 
$con=connect();  //connect to db and select the db 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<HTML> 
    <HEAD> 
     <TITLE> Gallery </TITLE> 
     <META name="generator" content="Adobe Photoshop(R) CS Web Photo Gallery"> 
     <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
     <link href="images/galleryStyle.css" rel="stylesheet" type="text/css"> 
     <link rel="STYLESHEET" type="text/css" href="style/new.css" /> 
    </HEAD> 
<body marginheight=0 marginwidth=0 leftmargin=0 topmargin=0> 
<table><tr> 
<?php 
//////////////////DISPLAYING IMAGE THUNBNAILS////////////////////// 
$query="SELECT COUNT(*) FROM gallery "; 
$res = query($query); 
$raw=mysql_fetch_array($res); 
$imagecount=$raw[0]; 
if($imagecount==0) { die ("No images found"); } 
$pagecount=ceil($imagecount/15); 
$page = isset($_GET['page']) ? mysql_real_escape_string($_GET['page']) : 1; 
if (isset($_GET['page'])) 
{ 
    if (!(ctype_digit($_GET['page']) and $_GET['page']>0 and $_GET['page']<=$pagecount)) 
    { 
     die ("You are not autorised to viw this page"); 
    } 
} 
$start= ($page*15)-15; 
$query = "SELECT * FROM gallery ORDER BY imageid DESC LIMIT $start , 15"; 
$res = query($query); 
$count= mysql_num_rows($res); 
$index=0; 
for($i=1;$i<=3;$i++) 
{ 
?> 
<TR> 
<?php 
for($j=1;$j<=5;$j++) 
{ 
    if(!$raw=mysql_fetch_array($res)) {break;} 
    $index++; 
    $imageid=$raw['imageid']; 
    $thumbpath= $raw['thumbpath']; 
    $largepath=$raw['largepath']; 
    $caption=$raw['caption']; 
?> 
<A name=1 href="image.php?imageid=<?php echo $imageid ?>&imageindex=<?php echo ((($page-1)*15)+$index-1) ; ?> "><IMG border=0 src="<?php echo $thumbpath; ?>" height="75" width="75" alt="<?php echo $caption ?>" title="<?php echo $caption ?>" ></A><BR> 
<?php 
echo "<a href='delete.php?delete=yes&imageid=".$imageid.'&page='.$page."'>Delete </a>" 
echo "<a href='replace.php?update=yes&imageid=".$imageid.'&page='.$page."'>Replace </a>" 
?> 
</table> 
</td> 
<?php } ?> 
</TR> 
<?php 
} 
if ($page!=1) 
{ 
?> 
<td width=17><a href=" <?php echo $_SERVER['PHP_SELF'].'?page='.($page-1); ?> "><IMG SRC="images/previous.gif" BORDER=0></a></td> 
<?php } ?> 
<td align=middle class="pagenums"><?php echo "page ".$page." of ".$pagecount ?></td> 
<?php 
if ($page!=$pagecount) 
{ 
?> 
<td align=right width=17><a href=" <?php echo $_SERVER['PHP_SELF'].'?page='.($page+1); ?> "><img border=0 src="images/next.gif"></a></td> 
<?php } ?> 
</table> 
</body> 
</html> 
+1

Вы можете использовать AJAX для этого. Рассчитайте счет один раз и используйте iot в ваших запросах AJAX. –

+1

Как выглядит запрос? Сколько строк в вашей БД? Как выглядит код? –

+1

В статье есть полезная статья и обсуждение статьи http://www.ovaistariq.net/404/mysql-paginated-displays-how-to-kill-performance-vs-how-to-improve-performance/. Проверьте предложения в конце сообщения в блоге. – Wasif

ответ

0

Вам не нужно подключать/закрыть БД для каждого изменения страницы

+0

спасибо за ваш ответ, как сохранить соединение живым во время смены страницы. пожалуйста, помогите –

+0

Используйте свои заявления о подключении в верхней части страницы или поместите их в файл PHP, например config.php, и используйте 'include_once ('config.php')' – Amir

+0

Если операторы соединения являются вершинами, они выполняются каждый раз, когда страница загрузка, то есть для каждой смены страницы –

1

Есть много много вариантов

  1. идет с яваскриптом пагинацией
  2. ajax pagination
  3. попытаться уменьшить код разбивки на страницы (op timized код)
0

использовать AJAX скрипт для подключения и получения значений базы данных с перегрузкой текущей страницы, которую вы можете сделать это - - - --- - - попробуйте Аякс

Смежные вопросы