2013-06-22 37 views
0

我有一个页面显示随机圣经报价,您也可以从中搜索。该页面上的引号以动态链接格式显示,例如, bible-query.php?id = 200重复动态链接

在搜索结果页面上,我在页面的底部和顶部放置了一个链接,以帮助用户返回到随机显示页面。这些链接是动态链接。唯一的问题是,我只能得到顶部链接来显示动态链接,最下面的链接只是加载一个没有引号的页面。

我想要的是底部和顶部的“返回”链接显示相同的动态链接位置。

下面是代码我对搜索结果:

<html> 
<font face="arial"> 
<title>BQuotes: Random Bible Verses</title> 
<?php 
// db requirements 
$db_host="localhost"; 
$db_username="username"; 
$db_password="password"; 
$db_name="name"; 
$db_tb_name="table"; 
$db_tb_atr_name="line"; 
$db_tb_atr_name2="book"; 
$db_tb_atr_name3="cap"; 
$db_tb_atr_name4="verse"; 

//do search task 


mysql_connect("$db_host","$db_username","$db_password"); 
mysql_select_db("$db_name"); 

$query=mysql_real_escape_string($_GET['query']); 

$query_for_result=mysql_query("SELECT * FROM $db_tb_name WHERE 

$db_tb_atr_name like '%".$query."%' OR $db_tb_atr_name2 like '%".$query."%' 
OR $db_tb_atr_name3 like '%".$query."%' OR $db_tb_atr_name4 like '%".$query."%'"); 

echo "Search Results<ol>"; 

// new bible query section begins 


define ('HOSTNAME', 'localhost'); 
define ('USERNAME', 'username'); 
define ('PASSWORD', 'password'); 
define ('DATABASE_NAME', 'name'); 

$db = mysql_connect(HOSTNAME, USERNAME, PASSWORD) or die ('I cannot connect to 
MySQL.'); 

mysql_select_db(DATABASE_NAME); 

$query = "SELECT id,book,cap,verse,line FROM table ORDER BY RAND() LIMIT 1 "; 

$result = mysql_query($query); 
while ($row = mysql_fetch_array($result)) { 

echo "<center><a href='bible-query.php?id=$row[id]'>Back</a></center> "; 

} 

//mysql_free_result($result); 
//mysql_close(); 

//bible query new section ends 




while($data_fetch=mysql_fetch_array($query_for_result)) 
{ 
echo "<li>"; 

echo substr($data_fetch[$db_tb_atr_name2], 0,160)," "; 
echo substr($data_fetch[$db_tb_atr_name3], 0,160)," "; 
echo substr($data_fetch[$db_tb_atr_name4], 0,160)," "; 

echo substr($data_fetch[$db_tb_atr_name], 0,160); 
echo "</li><hr/>"; 
} 






echo "<center><a href='bible-query.php?id=$row[id]'>Back</a></center> "; 

echo "</ol>"; 

//mysql_close(); 
?> 

</font> 
</html> 

请帮帮忙!

回答

0

您的while循环使用mysql_fetch_array获取行。它第一次运行时会检索一个结果,因此$ row的值被设置为一个数组,条件为“true”,所以while循环中的位会运行。但是,在第二次运行时没有第二行,因此$ row设置为false,while循环不运行。这意味着在while循环之后$ row是一个空变量。当它到达该数组的第二个调用时,它是空的。通过删除while循环,$ row变量只被提取一次,并返回第一行。这是你需要的。

只要改变这一点:

while ($row = mysql_fetch_array($result)) { 

echo "<center><a href='bible-query.php?id=$row[id]'>Back</a></center> "; 

} 

到:

$row = mysql_fetch_array($result); 

echo "<center><a href='bible-query.php?id=$row[id]'>Back</a></center>"; 

和两个部分应该工作。

+0

感谢卡梅伦,它的工作。 – adeoba

0

将您的代码更改为此。由于您在查询中限制1行,因此无需使用while循环。另外我更改了你应该使用的php mysql函数。

$query = "SELECT id,book,cap,verse,line FROM table ORDER BY RAND() LIMIT 1 "; 
$result = mysql_query($query); 
$row = mysql_fetch_assoc($result); 

echo "<center><a href='bible-query.php?id=$row[id]'>Back</a></center> "; 

注意到我用mysql_fetch_assoc

+0

这也工作。谢谢Pjack。 – adeoba

+0

如果它有帮助,随时upvote。 :) –

+0

抱歉Pjack没有足够的代表:) – adeoba