2011-10-25 10 views
2

検索フィールドをクリックしてテキストを入力せずに送信すると、データベースのすべてのデータが返されます。これはどうやって止まって何も起こらない?空の検索フィールドを送信するときに検索フィールドをすべて停止する方法

サイトをチェックアウト:

weezy.co.uk/newresults.php

ありがとう!

ジェームズ

<?php 

    $conn = mysql_connect("cust-mysql-123-02", "uwee_641290_0001", "La0%-Mr4"); 

    if (!$conn) { 
    echo "Unable to connect to DB: " . mysql_error(); 
    exit; 
    } 

    { 

     $search = "%" . $_POST["search"] . "%"; 
    $searchterm = "%" . $_POST["searchterm"] . "%"; 

    } 

    if (!mysql_select_db("weezycouk_641290_db1")) { 
    echo "Unable to select mydbname: " . mysql_error(); 
    exit; 
    } 

    $sql = "SELECT name,lastname,email 
    FROM test_mysql 
    WHERE name LIKE '%".$search."%' AND lastname LIKE '%".$searchterm."%'"; 

    $result = mysql_query($sql); 

    if (!$result) { 
    echo "Could not successfully run query ($sql) from DB: " . mysql_error(); 
    exit; 
    } 

    if (mysql_num_rows($result) == 0) { 
    echo "No rows found, nothing to print so am exiting"; 
    exit; 
    } 


while ($row = mysql_fetch_assoc($result)) { 
    echo '<br>'; 
    echo '<br>'; 
    echo '<div class="data1">'; 
    echo $row["name"]; 
    echo '</div>'; 
    echo '<br>'; 
    echo '<div class="data2">'; 
    echo $row["lastname"]; 
    echo '</div>'; 
    echo '<br>'; 
    echo '<div class="data3">'; 
    echo $row["email"]; 
    echo '</div>'; 
    } 

    mysql_free_result($result); 

    ?> 
+0

コードを表示する必要があります。 –

+0

@AurelioDeRosaはその前の質問を見ています。 [最後の1つ](http://stackoverflow.com/questions/7888865/my-search-results-arent-consistent-why-is-this)、ex。 –

+0

@DamienPirsyだから、あなたは作品のために作品全体をやっていると言っているのですか? :) –

答えて

2

、クエリを作成する前に、空の場合は、チェックする必要があります:実際にある

WHERE name LIKE('%%') 

if(empty($_POST['searchterm'])){ 
    //don't search and show an error message 
}else{ 
    //proceed as normal, do the query 
} 

をそれ以外の場合は次のようなクエリを作成するに終わるかもしれません高価で、すべてのデータベース行を返します

+0

私はこれを私のコードに入れましたが、それでもすべての結果を返しますか? – James

0

これを行う最善の方法(imo)は、入力が空白であるかどうかを確認する簡単なjavascriptを使用することです。

+2

あなたは検証のためだけにjavascriptに依存するべきではありません。ユーザーエクスペリエンスを向上させるために使用する必要がありますが、バックエンドでは常にデータを検証する必要があります。 –

+0

私は同意します。シンプルなJavascript、Nicolaの空のif文と混じってここで一番うまくいくでしょう。 – OptimusCrime

0

私は、あなたの検索ボックスが空であればクライアント側の送信ボタンを無効にすることをお勧めします。

あなたが好きな何かができる:あなたのhtmlのようなある

$(document).ready(function() 
{ 
    $('#searchBox').keyup(function() 
    { 
     if($(this).val() == '') 
     { 
     $('#searchButton').attr('disabled', true); 
     } 
     else 
     { 
     $('#searchButton').removeAttr('disabled'); 
     } 

    }); 
}); 

<input type='text' id="searchBox" /> 
<input type='button' id='searchButton' value='search' disabled/> 

ニコラが示されているように、サーバ側で検証することを確認します。

0

front endは、javascript/Jqueryを使用すると常に賢明です。ユーザーに何かを入力させるようなフォーム検証が必要です。

作業が完了したら、あなたはまた、次を使用してバックエンドで確認することができ:

if(isset($_POST['searchterm'])){ 
    // search for the results. 
}else{ 
    // do nothing or show proper message 
} 
0

私は上記のコードではいくつかの問題に直面していました。したがって、上記のコードの次の改良版は正常に動作します:

<form action="searchengine.php" method="POST"> 
<input type="text" id = "searchbox" name="searchterm" placeholder="Search here"> 
<input type="submit" id = "searchbutton" value="Search" style="display:none;"> 
</center> 
<script src="http://codeorigin.jquery.com/jquery-1.10.2.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() 
{ 
$('#searchbox').keyup(function() 
{ 
if($(this).val() == '') 
{ 
$('#searchbutton').hide(); 
} 
else 
{ 
$('#searchbutton').show(); 
} 

}); 
}); 

</script> 
関連する問題