我有以下文件:
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>" ." " .$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;而不只传递最后一个组件?
答案 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>" ." " .$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
中移除,您应停止使用它们,请尝试详细了解MySQLi
或PDO
。