0

検索エンジンを搭載したウェブサイトを開発しています。

検索用に次の形式を持つ index.html にいるとします。

<form  method ="post" name="search" action="search.php?go">
<input accesskey="s" type="text" size="20px" name="find" id="fastsearch" alt= "search"     value="search..." /> 

<input type="hidden" name="searching" value="yes" />
<input id="searchicon" type="submit" value="" style="border-style: none; background:     url('searchsmall.png') no-repeat;"/>

</form>

それから、その下の高度な検索に加えて結果を持つ次の search.php があります。

結果の部分は次のとおりです。

    $searching = $_POST['searching'];
$find = $_POST['find'];
if ($searching =="yes") { 
    echo "<h2>Results</h2><p>"; 
        if ($find == "") 
        { 
            echo "<p>You forgot to enter a search term"; 
            exit; 
        } 


    //Connect to mysql server
    $con = mysql_connect($DB_HOST, $DB_USER, $DB_PASSWORD);
    if(!$con) {
    die('Failed to connect to server: ' . mysql_error());
    }

    //Select database
    $db = mysql_select_db($DB_DATABASE);
    if(!$db) {
    die("Unable to select database");
    }



    $find = strtoupper($find); 
    $find = strip_tags($find); 
    $find = trim ($find); 
    $date = $_POST['date'];
    $category = $_POST['category'];
    $data ="SELECT * FROM event WHERE upper(title) LIKE'%".$find."%'OR date     LIKE '%".$date."%' OR upper(category_id) LIKE ".$category." ORDER BY date;" ;

    $result=mysql_query($data );




if($result) {
        while($info = mysql_fetch_array( $result )) 
        { 
        echo "<a href=' ".$info['url']." '> ".$info['title']." </a><br/>";
        echo "<br>"; 

        } 
    }
    else 
    { 
    echo "Sorry, but we can not find an entry to match your query<br><br>"; 
    echo "<b>Searched For:</b> " .$find; 
    } 



}

最後に、高度な検索部分を次に示します。

<form method ="post" name="search" action="<?=$PHP_SELF?>" style="margin-top: 20px;">
<div class="blockbody" style="width: 700px;">

<h3 class="blocksubhead">Advanced search </h3>
<div class="section">
<!--<div class="blockrow">
<label for="keyword">Search by title: </label>
<input type="text" name="keyword" name="find" >
</div >-->
<div class="blockrow">
<label for="category"> Category </label>
<select name="category">

<option VALUE="CONFERENCE"> Conference </option>
<option VALUE="WORKSHOP"> Workshop </option>
<option VALUE="ACTIVITY"> Activity </option>
</select>
</div>

<div class="blockrow">
<label for="date">Search by date </label>
<input type="date" name="date">
</div>
</div>
<div class="actionbuttons">

<input type="submit" name="search" value="Search" />
</div>
</div>
</div>
</form>

私の質問は、php ファイルがそれ自体のファイルとそのフォームで送信された別のファイルの両方から変数を取得するようにするにはどうすればよいかということです。インデックス内のものに投稿を使用し、高度な検索のものに取得しようとしましたが、投稿と取得の両方を同じファイルに作成することは正しくありません。そして、それらをすべて取得させたとき..変数(検索、検索、日付、カテゴリ)がnod宣言されているというエラーが発生しましたか?:/

注意: *Find は index.html からの検索語です *searching は、index.html でも検索を使用したかどうかを確認するための値です。

※日付は同じsearch.phpファイルでの入力日付、詳細検索時※カテゴリは選択値で、オプションにより異なります。また、search.php

ところで、それは私が開発した最初のウェブサイトです。情報やコードが多すぎて申し訳ありませんが、どこに問題があるのか​​ わかりません。

4

2 に答える 2

0

私が質問を理解しているかどうかわかりませんが、$_REQUESTあなたが望むものではありませんか?

于 2012-12-13T10:16:53.737 に答える
0

GET で取得したい場合は、次のようにして取得する必要があります$_GET["paramName"]

$searching = $_GET['searching'];
$find = $_GET['find'];
$date = $_GET['date'];
$category = $_GET['category'];

そして、フォームは以下を使用してそれらを送信する必要がありますGET:

<form method ="get" name="search" action="<?=$PHP_SELF?>" style="margin-top: 20px;">

を使用する場合は、コードにあるようにメソッドをPOST使用POSTします。

とにかく、必要に応じていつでも両方の方法を使用できます。フォームの属性にいくつかの変数を渡してactionから、フォームを で送信できますPOST

于 2012-12-13T10:22:11.073 に答える