2010-04-13 98 views
0

以下代碼是我的php文件,它將列出我的文本文件中的人員。重定向回php文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>viewlist php</title> 
</head> 
<body> 
<h1>List</h1> 
<?php 
$file = file("peoplelist.txt"); 
for($i=0; $i<count($file); $i++) 
{ 
    $person = explode(",", $file[$i]); 
    echo "<hr />"; 
    echo "<table cellspacing=10><tr><td>", $i+1,".", "</td>"; 
    echo "<td>", $person[0], "<br />"; 
    echo $person[1], "</td></tr></table>"; 
} 
?> 
<hr /> 
<p> 
    <a href="sortatoz.php" target="_self">Sort A-Z</a><br /> 
    <a href="sortztoa.php" target="_self">Sort Z-A</a><br /> 
</p> 
</body> 
</html> 

我想要做的是,當我點擊排序A-Z的鏈接,文件名爲sortatoz.php將整理在我的文本文件列表,並重定向回用排序順序列表中viewlist.php。下面 是我sortatoz.php:

<?php 
header("Location: http://myserver/workspace/viewlist.php"); 
?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>sort a to z</title> 
</head> 
<h1>List</h1> 
<body> 
<?php 
$file = file("peoplelist.txt"); 
sort($file); 
for($i=0; $i<count($file); $i++) 
{ 
    $person = explode(",", $file[$i]); 
    echo "<hr />"; 
    echo "<table cellspacing=10><tr><td>", $i+1,".", "</td>"; 
    echo "<td>", $person[0], "<br />"; 
    echo $person[1], "</td></tr></table>"; 
} 
?> 
<hr /> 
<p> 
    <a href="sortvisitorsascending.php" target="_self">Sort Visitors A-Z</a><br /> 
    <a href="sortvisitorsdescending.php" target="_self">Sort Visitors Z-A</a><br /> 
</p> 
</body> 
</html> 

現在,當我點擊排序A-Z的鏈接,它重定向回viewlist.php ...所以我假設header()函數是做它的工作。

但問題是......它不是排序。

我對此很新,請耐心等待,並給我一些指導。 我能做些什麼,我的代碼重新導向回列表listlist.php與排序列表?

在此先感謝。

+0

你可以在peoplelist.txt中顯示一些數據嗎? – 2010-04-13 03:26:23

+0

以下是學習一些故障排除技巧的好機會。首先,確保sort()通過臨時添加sort($ file)到viewlist.php(不應該排序的那個)來正確地完成它的工作。如果這樣做不起作用,那麼無論您的瀏覽器是緩存開心還是排序($文件)都沒有正確執行其工作。一般來說,分而治之可以幫助您快速解決問題。 – 2010-04-13 03:27:38

回答

0

基本上,現在,你在做排序的權利,但是因爲你立即重定向到viewlist.php,下面的代碼都沒有執行。無論如何,你爲什麼想要?你可以留在sortatoz.php沒有重定向,它會完美的工作。

+0

@Brant,一些數據會是這樣的: 麥克,瓊斯 大衛,安德森 約翰尼,好 ..每個名字都在每一行。 @Joey Adams,所有功能工作正常。只是當我在sortatoz.php中添加header()函數時,它不會進行排序。 @Arda Xi,我知道它不需要重定向就能完美工作。但是我不想讓sortatoz.php像一個幽靈文件,用戶不會看到它。 ... 所以是的,如果有人有這個解決方案,我會非常感謝幫助。謝謝。 – tooepic 2010-04-13 04:41:35

+0

在這種情況下,閱讀deceze的答案。 – 2010-04-13 05:37:47

1
header("Location: http://myserver/workspace/viewlist.php"); 

發送HTTP標頭,導致瀏覽器重定向。下面的代碼正在執行,但由於瀏覽器正在重定向到另一個頁面,用戶將看不到結果。在您重定向到的網站上,您的sortatoz.php頁面並不重要,它是一個不同的頁面。

此外,sortatoz.php沒有做任何「持久價值」。它只是讀取文件的內容,將這些內容排序在內存中,然後輸出它們。正如你可能認爲的那樣,它不會將已排序的條目寫回到文件中。

由於這兩個頁面上的代碼基本相同,所以您只需在URL中發送一個變量並對其執行操作即可。

if (isset($_GET['sort']) && $_GET['sort'] == 'asc') { 
    sort($file); 
} 

並鏈接到網站,如viewlist.php?sort=asc

+0

謝謝,如果我理解正確,我需要更改sortatoz.php中的代碼進行排序,然後使用fwrite函數按排序順序重寫文本文件,使viewlist.php以排序順序顯示。謝謝。 – tooepic 2010-04-13 06:16:46

+0

@tooepic是的,或者您只需將文件保持原樣並在顯示文件時動態排序。這取決於文件的大小,無論是每次或每次排序它更經濟,是否實際上想要存儲數據等等。您當然應該**不**在您想要顯示的時間重寫文件數據按另一種排序順序排列。存儲數據並顯示它是兩件不同的事情。如果你使用一個合適的數據庫,排序時間成爲一個絕對沒有問題。 – deceze 2010-04-13 07:09:58