PHP - 通过mysql行向前和向后移动

时间:2009-07-22 01:08:46

标签: php mysql

我有一个显示行的页面,具体取决于浏览器栏中给出的id(page.php?id = 1)。我正在尝试使用前进和后退按钮来显示页面上相应的下一行或上一行。因此,prev和next按钮只是指向page.php的链接,id是列表中的下一个。它不是一个顺序列表,所以我不能只做id + 1等。

无论如何,我有它工作正常,但基本上我希望前进和后退链接只显示为文本,如果没有要去的页面。如果$ backformat为空,我一直试图运行代码只显示文本,但它似乎保持“资源ID#(和一个随机数)”。所以我尝试了一些其他的方法来匹配字符串中的“资源”但是没有用

有什么想法吗?

  <?php

        $backresult = mysql_query("SELECT id FROM studies WHERE niche = '$niche' AND date < '$currentdate' ORDER BY date DESC LIMIT 1", $connection);
            if (!$backresult) {
                die("Database query failed: " . mysql_error());
            }

            $forwardresult = mysql_query("SELECT id FROM studies WHERE niche = '$niche' AND date > '$currentdate' ORDER BY date ASC LIMIT 1", $connection);
            if (!$forwardresult) {
                die("Database query failed: " . mysql_error());
            }

    ?>

while ($row = mysql_fetch_array($forwardresult)) {
                $forward = $row["id"];
                $forwardformat = preg_replace('/\s+/','',$forward);

                    echo $forwardformat;

                    $pos = strpos($forwardformat,'source');

                    if($pos == false) {
                     // string needle NOT found in haystack
                     echo 'Exploring moves us <a href="casestudy.php?id=';
                    echo $forwardformat;
                    echo '">forward</a>';
                    }
                    else {
                     // string needle found in haystack
                     echo "forward";
                    }
                                //other code I've tried before
                /* if (!empty($forwardformat)) {
                    echo 'Exploring moves us <a href="casestudy.php?id=';
                    echo $forwardformat;
                    echo '">forward</a>';
                }
                else {
                    echo "forward";
                }*/
}
echo $backresult;
while ($row = mysql_fetch_array($backresult)) {
                $back = $row["id"];
                $backformat = preg_replace('/\s+/','',$back);

                    echo $backformat;

                    //$pos = strpos($backformat,'source');

                    //$match = preg_match("R",$backformat);

                    if (substr($backformat,0,1) == 'R') {
                     // string needle NOT found in haystack
                    echo ', studying we look <a href="casestudy.php?id=';
                    echo $backformat;
                    echo '">back</a>';
                    }
                    else {
                     // string needle found in haystack
                     echo "back";
                    }
                                //other code I've tried before          
                /*if (!empty($backformat)) {
                    echo ', studying we look <a href="casestudy.php?id=';
                    echo $backformat;
                    echo '">back</a>';
                }
                if ($backformat==false) {
                    echo "back";
                } */
}

2 个答案:

答案 0 :(得分:3)

$ backresult是PHP与查询结果的连接。如果你想检查$ backresult不包含任何行,你需要像

这样的东西
if(mysql_num_rows($backresult)==0) {
 //inactive link
} else {
 //active link
}

答案 1 :(得分:1)

如果您只使用一行,则不需要while()语句。是的,如上所述,您测试查询是否返回了mysql_num_rows($result)的任何行,您可以使用empty($result['fieldname'])测试各个字段是否为空。