分页代码出错

时间:2014-01-12 23:00:51

标签: php sql pagination

我第一次做分页并遇到问题。问题似乎出现在我使用mysqli_fetch_array的行上。错误说明:mysqli_fetch_array()期望参数1为mysqli_result,boolean given ...

这是我的整个分页部分的代码。谢谢!

if (!(isset($page_num))) {
    $page_num = 1;
}

$sqlko = mysqli_query($con, "SELECT * FROM clanek INNER JOIN uzivatel ON clanek.uzivatel_ID=uzivatel.uzivatel_ID");
$rows = mysqli_num_rows($sqlko);
$rows_num = 5;
$last = ceil ($rows/$rows_num);

if($page_num < 1) {
    $page_num = 1;
} else if($page_num > $last) {
    $page_num = $last;
}

$max = 'limit ' .($page_num - 1) * $rows_num .',' .$rows_num;


$vytah = mysqli_query($con,"SELECT * FROM clanek INNER JOIN uzivatel ON clanek.uzivatel_ID=uzivatel.uzivatel_ID $max ORDER BY clanek_ID DESC ");
while($clanecky = mysqli_fetch_array($vytah)){

    if($clanecky["typ_ID"] == "1") {

    $nadpis_alpha = $clanecky["nadpis"];
    $nadpis = urldecode($nadpis_alpha);
    $obsah = $clanecky["obsah"];
    $uzivatel_ID = $clanecky["uzivatel_ID"];
    $jmeno = $clanecky["jmeno"];
    $prijmeni = $clanecky["prijmeni"];
    $datum = $clanecky["datum"];
    $novinka_ID = $clanecky["clanek_ID"];

    echo "<div class='domu_column'>";
    echo "<h2><a href='index.php?page=novinka&id=$novinka_ID&nazev=$nadpis'>".$nadpis."</a></h2>";
    echo "<div id='novinka_panel'><b>".$jmeno." ".$prijmeni."</b> | ";
    echo $datum."</div>";
    echo "<p>".$obsah."</p>";

    echo "Stránka $page_num z $last";   
    if ($page_num == 1) {
    } else {
        echo " <a href='{$_SERVER['PHP_SELF']}?page=domu&page_num=1'> <<-First</a>";
        echo " ";
        $predchozi = $page_num - 1;
        echo " <a href='{$_SERVER['PHP_SELF']}?page=domu&page_num=$predchozi'> <<-Předchozí</a>";
    }

    echo "----";
    if ($page_num == $last) {

    } else {

        $next = $page_num + 1;

        echo " <a href='{$_SERVER['PHP_SELF']}?page=domu&page_num=$next'>Next -></a> ";

    echo " ";

    echo " <a href='{$_SERVER['PHP_SELF']}?page=domu&page_num=$last'>Last ->></a> ";

    }   

                    echo "</div>";
                }}

1 个答案:

答案 0 :(得分:0)

LIMIT(变量$ max)必须是SQL查询中的最后一个。但是,您在ORDER BY之前插入。请参阅SELECT Syntax

$max = 'limit ' .($page_num - 1) * $rows_num .',' .$rows_num;
$vytah = mysqli_query($con,"SELECT * FROM clanek INNER JOIN uzivatel ON clanek.uzivatel_ID=uzivatel.uzivatel_ID $max ORDER BY clanek_ID DESC ");

更改为:

    $vytah = mysqli_query($con,"SELECT * FROM clanek INNER JOIN uzivatel ON clanek.uzivatel_ID=uzivatel.uzivatel_ID ORDER BY clanek_ID DESC $max ");