0

データベースの検索を有効にして結果を表示するために、このコードを作成しました。(以下にコードをコピー)

検索結果からリンクを作成して結果をクリックできるようにする方法を知る必要があるため、助けが必要です。新しい Web ページで詳細が自動的に開きます。

私はPHPに非常に慣れていないので、誰でもできる助けをいただければ幸いです。

ありがとう

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');
$search_output = "";
if(isset($_POST['searchquery']) && $_POST['searchquery'] != ""){
     $searchquery = preg_replace('#[^a-z 0-9?!]#i', '', $_POST['searchquery']);
     if($_POST['filter1'] == "Whole Site"){
         $sqlCommand = "(SELECT id, title AS title FROM cars WHERE title LIKE '%$searchquery%' OR description LIKE '%$searchquery%') UNION (SELECT id, title AS title FROM motorcycles WHERE title LIKE '%$searchquery%' OR description LIKE '%$searchquery%')";
     } else if($_POST['filter1'] == "cars"){
         $sqlCommand = "SELECT id, title AS title FROM cars WHERE title LIKE '%$searchquery%' OR description LIKE '%$searchquery%'";
     } else if($_POST['filter1'] == "motorcycles"){
         $sqlCommand = "SELECT id, title AS title FROM motorcycles WHERE title LIKE '%$searchquery%' OR description LIKE '%$searchquery%'";
     }
        include_once("testconn2.php");
        $query = mysql_query($sqlCommand) or die(mysql_error());
     $count = mysql_num_rows($query);
     if($count > 1){
         $search_output .= "<hr />$count results for <strong>$searchquery</strong><hr />$sqlCommand<hr />";
         while($row = mysql_fetch_array($query)){
                 $id = $row["id"];
            $title = $row["title"];
            $search_output .= '<a href="item.php"' .$_SERVER['PHP_SELF'] . '"?c=$catId&p=' . $id . '">' .$title . '</a><br>';
                } // close while
     } else {
         $search_output = "<hr />0 results for <strong>$searchquery</strong><hr />$sqlCommand";
     }
}
?>
<html>
<head>
</head>
<body>
<h2>Search the Database </h2>   <h4><a href="Sign in.php">Sign in</a> <a href="UserRegistration.php">Register</a></h4>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
Search For: 
  <input name="searchquery" type="text" size="44" maxlength="88"> 
Within: 
<select name="filter1">
<option value="Whole Site">Whole Site</option>
<option value="Cars">Cars</option>
<option value="Motorcycles">Motorcycles</option>
</select>
<input name="myBtn" type="submit">
<br />
</form>
<div>
<?php echo $search_output; ?>
</div>
</body>
</html>
4

4 に答える 4

2

検索結果へのリンクがすでにここにあるようですね。

 $search_output .= '<a href="item.php"' .$_SERVER['PHP_SELF'] . '"?c=$catId&p=' . $id . '">' .$title . '</a><br>';

$_SERVER['PHP_SELF'] を削除するか、item.php の前に移動することをお勧めします。これは、ファイル名に追加されるためです。これは望ましくないと確信しています。

あとは、item.php ページを作成し、$_GET['id'] を使用して探しているアイテムの ID を取得するだけです。

探しているアイテムを取得したら、データベースに対してクエリを実行できます。

また、通常の mysql コマンドではなく、PDOまたはmysqli の使用を検討する必要があります。これらは、現在使用が推奨されているものではないためです。

get の参考として、 w3schoolsまたはPHP のマニュアルを試すことができます。

お役に立てれば!

于 2012-08-02T22:54:14.217 に答える
0

フォーム メソッドを「post」ではなく「get」に置き換えると、フォームが送信されると、探しているリンクが生成されます。

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="get">

リンクは次のようになります。

http://yourwebsite/yourfile.php?searchquery=sometext&fillter1=somevalue1&myBtn=submit
于 2012-08-02T22:51:38.100 に答える
0
<a href="item.php"' .$_SERVER['PHP_SELF'] . '"?c=$catId&p=' . $id . '" taget="_blank">' .$title . '</a><br>';

その部分は「_blank」ターゲットを使用し、リンクされたページで $_GET 変数を使用して結果を表示します。

于 2012-08-02T22:55:07.317 に答える
0
$search_output .= '<a href="item.php"' .$_SERVER['PHP_SELF'] . '"?c=$catId&p=' . $id . '">' .$title . '</a><br>';

二重引用符の外側に$_SERVER['PHP_SELF']含めると、次のようになります

<a href="item.php"search.php"?c=1&p=1">Title</a><br>

おそらくあなたはただ欲しいだけです(ああ、あなたのアンパサンドをエンコードしてください)

$search_output .= '<a href="item.php?$catId&amp;p=$id">$title</a><br>';
于 2012-08-02T23:04:30.480 に答える