2011-09-03 7 views
0

내 페이지 매김에 함수 mysql_data_seek()을 사용하는 데 문제가 있습니다. 링크를 클릭하면 아무런 문제가 발생하지 않지만, 페이지 매김 링크의 마지막 페이지를 클릭 할 때,이 같은 오류 발생 :페이지 매김을 위해 mysql_data_seek를 사용할 때

Warning: mysql_data_seek() [function.mysql-data-seek]: Offset 14 is invalid for MySQL result index 6 (or the query data is unbuffered)

내 코드는 다음과 같습니다 :

 $rpp = 3; 
     $adjacents = 4; 
     $page = (!empty($_GET["page"]) ? intval($_GET["page"]) : 1); 
    if($page<=0) $page = 1; 
     $reload = $_SERVER['PHP_SELF']; 
     $sql = "SELECT * FROM ".TABLE_IMAGE." ORDER BY id ASC"; 
     $qry = mysql_query($sql, $con); 
     $tcount = mysql_num_rows($qry); 
     $tpages = ($tcount) ? ceil($tcount/$rpp) : 1; 
       $i = 1; 
     $count = 0; 
     $j = ($page-1)*$rpp; 
     while(($result = mysql_fetch_array($qry)) && (($count<$rpp) && ($j<=$tcount))){               mysql_data_seek($qry,$j); 
       $id = $result['id']; 
     $img = $result['path']; 
     $title = $result['title']; 
     $detail = $result['detail']; 
     $priority = $result['priority']; 
     $active = $result['isActive'];      
?><div id="block-image-slider" class="<?php echo(($i%2==0)?'even':'odd')?>"> 
    <h2><?php echo $title ?></h2><span class="operation">[<a href="?action=edit&section=slider&id=<?php echo $id ?>">កែប្រែ</a>|<a href="?action=delete&section=slider&id='<?php echo $id ?>'">លុប</a>]</span> 
      <div class="block-slider-image-body"> 
       <div class="left"> 
        <ul> 
         <li>លេខរៀងទី<span class="space"><?php echo $id ?></span></li> 
         <li>កំនត់អទិភាពទី<span class="space"><?php echo $priority ?></span></li> 
         <li>ត្រូវបានបង្ហាញអោយឃើញ<span class="space"><?php echo (($active==1)?'បង្ហាញ':'មិនបង្ហាញ')?></span></li> 
         <li>អត្ថបទពេញ<div class="detail"><?php echo $detail ?></div></li> 
        </ul> 
       </div> 
      <div class="right"> 
      <img src="<?php echo '../../image/Slider/'.$img ?>" alt="<?php echo $title ?>" width="170" height="100" /> 
    </div> 
<div style="clear:both;"></div> 
</div> 
</div> 
<?php 
    $j++; 
    $count++; 
    $i++; 
} 
    include("../include/paginate.php"); 
    echo paginate_three($reload, $page, $tpages, $adjacents); 

을 그리고 이것은 paginate.php 코드를

<?php 
    function paginate_three($reload, $page, $tpages, $adjacents) { 
    $prevlabel = "&lsaquo; Prev"; 
    $nextlabel = "Next &rsaquo;"; 

    $out = "<div class=\"pagin\">\n"; 

    // previous 
    if($page==1) { 
     $out.= "<span>" . $prevlabel . "</span>\n"; 
    } 
    elseif($page==2) { 
     $out.= "<a href=\"" . $reload . "\">" . $prevlabel . "</a>\n"; 
    } 
    else { 
     $out.= "<a href=\"" . $reload . "?action=slider&page=" . ($page-1) . "\">" . $prevlabel . "</a>\n"; 
    } 

    // first 
    if($page>($adjacents+1)) { 
     $out.= "<a href=\"" . $reload . "\">1</a>\n"; 
    } 

    // interval 
    if($page>($adjacents+2)) { 
     $out.= "...\n"; 
    } 

    // pages 
    $pmin = ($page>$adjacents) ? ($page-$adjacents) : 1; 
    $pmax = ($page<($tpages-$adjacents)) ? ($page+$adjacents) : $tpages; 
    for($i=$pmin; $i<=$pmax; $i++) { 
     if($i==$page) { 
      $out.= "<span class=\"current\">" . $i . "</span>\n"; 
     } 
     elseif($i==1) { 
      $out.= "<a href=\"" . $reload . "?action=slider\">" . $i . "</a>\n"; 
     } 
     else { 
      $out.= "<a href=\"" . $reload . "?action=slider&page=" . $i . "\">" . $i . "</a>\n"; 
     } 
    } 

    // interval 
    if($page<($tpages-$adjacents-1)) { 
     $out.= "...\n"; 
    } 

    // last 
    if($page<($tpages-$adjacents)) { 
     $out.= "<a href=\"" . $reload . "?action=slider&page=" . $tpages . "\">" . $tpages . "</a>\n"; 
    } 

    // next 
    if($page<$tpages) { 
     $out.= "<a href=\"" . $reload . "?action=slider&page=" . ($page+1) . "\">" . $nextlabel . "</a>\n"; 
    } 
    else { 
     $out.= "<span>" . $nextlabel . "</span>\n"; 
    } 

    $out.= "</div>"; 

    return $out; 
} 

?> 

PS입니다 : 매김 페이지 버튼의 마지막 링크를 클릭하면 표시 위와 같은 오류 메시지가 표시됩니다. 또한, 왜 내 데이터베이스의 첫 번째 레코드가 항상 각 페이지에 표시되는지 모르겠습니다. 어떤 도움을 주시면 감사하겠습니다. 고맙습니다.

답변

2

아무런 문제가 없습니다. 12시에만 행 14를 요청하고 있습니다.

또한 LIMIT [from], [amount]을 페이지 매김에 사용하는 것이 더 효율적이라고 생각합니다.

2

페이지 매김에 mysql_data_seek()를 사용하고 있다면 이미 큰 문제가 있습니다.

대신 쿼리에 LIMIT 연산자 사용

관련 문제