2011-03-02 77 views
2

嘿大家。所以我想要做的是实现我的分页更干净的网址。目前我通过GET传递变量,并重新加载相同的页面并修改查询。PHP:清洁分页url(文件夹)

我希望做类似:http://designspiration.net/

自己的网页显示为与相应数量的文件夹。我假设他们正在做这个动作,但我不知道如何。不是特别确定我可能会涉及什么,或者可能涉及什么,但我很乐意接受挑战,请让我知道!

这是我设置的使用$ _GET的当前测试。已经有一些在线教程帮助理解分页的理论。

<?php 
$host = "localhost"; 
$username = "user"; 
$password = "pass"; 
$db_name = "database"; 
$directory = "/newProject"; 

mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB"); 

$postsPerPage = 2; 
$start = $_GET['start']; 
$totalRecords = mysql_num_rows(mysql_query("SELECT * FROM posts")); 

if (!$start) 
    $start = 0; 

$result = mysql_query("SELECT * FROM posts ORDER BY id DESC LIMIT $start, $postsPerPage"); 

while ($post = mysql_fetch_assoc($result)){ 
    echo "<span>" ."Title: " .$post['title'] ."</span><br />\n"; 
    echo "<span>" ."Author: " .$post['author'] ."</span><br />\n"; 
    echo "<span>" ."Description: " .$post['description'] ."</span><br />\n"; 
    echo "<a href='full_post.php?id=" .$post['id'] ."'>\n" ."<img src='" .$directory .$post['thumbUrl'] ."' /></a>" ."<br />\n"; 
    echo "<span>" ."Type: " .$post['type'] ."</span><br />\n"; 
    echo "<span>" ."Tags: " .$post['tags'] ."</span><br />\n"; 
    echo "<span>" ."Submitted: " .$post['date'] ."</span><br />\n"; 
    echo "<span>" ."ID: " .$post['id'] ."</span><br /><br /><br />\n"; 
} 

$prev = $start - $postsPerPage; 
$next = $start + $postsPerPage; 

//previous button 
if (!($start<=0)) 
    echo "<a href='index.php?start=$prev'>Prev</a> "; 

//page numbers 
$pageNumbers = 1; 

for($x=0;$x<$totalRecords;$x=$x+$postsPerPage){ 
    if ($start!=$x) 
    echo "<a href='index.php?start=$x'> $pageNumbers</a> "; 
    else 
    echo "<a href='index.php?start=$x'><b> $pageNumbers</b></a> "; 
    $pageNumbers++;  
} 

//next button 
if(!($start>=$totalRecords-$postsPerPage)) 
    echo "<a href='index.php?start=$next'>Next</a>"; 

?> 

我的假设:我将POST'ing变量为我的分页/的mysql_query到一个新的文件夹,其中的index.php我即时创建基于我的网页数..我也看了成。 htaccess的重写规则,可以修改的网址,但我是一个初学者与PHP,试图学习,这似乎是一个捷径。

邮编,或者只是点我在正确的方向!通过搜索没有任何运气。

+0

正确的方向是使用Apache的mod_rewrite路由网址像/ /第1页添加到/index.php?page=1 (或类似的东西)。我希望有其他人出席,他们可以给你一个完整的例子,说明必要的重写规则。 – pableu 2011-03-02 10:54:57

回答

1

嘿,你在寻找什么是路由技术,你可以简单地看到一些框架是如何做到这一点,并实现它自己,或者只是使用的框架。 的基本前提是重新路由所有TRAFIC到该文件中解析URI和独立的,你想要什么,然后送到相应的特定代码文件(一般的index.php)。

重新路由请求的URL是通过Apache国防部重写做,然后解析是由你。

请参阅this文档以查看zend如何执行此操作。

好运

编辑以this链接,这似乎是更具可读性

+0

谢谢!我会看看这个。 – Michael 2011-03-02 10:58:05

+0

好运!这是非常标准的做法,所以你应该能够轻松地做到这一点。 – cromestant 2011-03-02 12:05:46