如何将搜索结果特定组件会话传递到另一个页面

时间:2016-02-12 23:39:47

标签: php

我有以下文件:

file1.php:它包含搜索表单:

<form action="search.php" method="GET">
<input type="text" name="query" />
<input type="Submit" value="Search" />
</form>

和 file2&#34; search.php&#34;是提交结果的文件:

<?php
require "../session.php";
$query = isset($_GET['query']) ? $_GET['query'] : "";
$raw_results = mysql_query("SELECT * FROM Component WHERE (`ComName` LIKE '%".$query."%')") or die(mysql_error());
$number = mysql_num_rows($raw_results);
if(mysql_num_rows($raw_results) > 0){ 
         $i=1;
echo "<p><h3>" ."There are ( <font color='red'>".$number ." </font>) matches to your search of" ."<font color='red'> $query </font>" ."</h3></p>"
while($results = mysql_fetch_array($raw_results)) {
$_SESSION['ComName']= $results['ComName'];
print_r ( "<p><h3>" ."<font color=yellow>" ."&nbsp" .$i."- </font>" ."<a href=\"ViewComponents.php?flag=Submit&status_Component=".$_SESSION['ComName']."\">" . str_ireplace($query, "<font color=red>$query</font>", $_SESSION['ComName']) .'</font>'."</h3>" ."</a>";
 $i++;

 } else{ 
echo "<p><h3>" ."Sorry there are no results for your search of " ."<font color='red'> $query</font>." ."</h3></p>"; 
}

}
?>

问题是当我点击搜索结果页面中的特定组件时,例如component2;应该传递给file3&#34; ViewComponents.php&#34;但文件&#34; ViewComponents.php仅显示搜索结果中的最后一个组件会话,而不是单击的组件。

如何使点击的组件传递给其他文件&#34; ViewComponents.php&#34;而不只传递最后一个组件?

1 个答案:

答案 0 :(得分:0)

你去了,这里的问题是你使用SESSION数组获取组件详细信息,如第二个文件search.php中所示,你只保留了最后一个组件名称数据库中。

search.php文件上,删除不必要的行

$_SESSION['ComName']= $results['ComName'];

在链接中更改传递的GET参数,以便从结果数组而不是SESSION获取它:

以下是您的search.php文件的外观:

<?php
require "../session.php";
$query = isset($_GET['query']) ? $_GET['query'] : "";
$raw_results = mysql_query("SELECT * FROM Component WHERE (`ComName` LIKE '%".$query."%')") or die(mysql_error());
$number = mysql_num_rows($raw_results);
if(mysql_num_rows($raw_results) > 0){ 
         $i=1;
echo "<p><h3>" ."There are ( <font color='red'>".$number ." </font>) matches to your search of" ."<font color='red'> $query </font>" ."</h3></p>"
while($results = mysql_fetch_array($raw_results)) {
print_r ( "<p><h3>" ."<font color=yellow>" ."&nbsp" .$i."- </font>" ."<a href=\"ViewComponents.php?flag=Submit&status_Component=".$results['ComName']."\">" . str_ireplace($query, "<font color=red>$query</font>", $results['ComName']) .'</font>'."</h3>" ."</a>";
 $i++;

 } else{ 
echo "<p><h3>" ."Sorry there are no results for your search of " ."<font color='red'> $query</font>." ."</h3></p>"; 
}

}
?>

至于你的主要问题,即仅显示数据库中最后一个组件的ViewComponent.php文件,更改该文件中的第二行,以便变量$temp_package从中获取包名称GET数组而不是SESSION,所以这一行:

$temp_package=$_SESSION['ComName'];

变为:

$temp_package=$_GET['ComName'];

那应该做的工作。此外,mysql_*函数已弃用并从PHP 7中移除,您应停止使用它们,请尝试详细了解MySQLiPDO