Как остановить поле поиска, возвращающее все результаты при отправке пустого поля поиска? - PullRequest
2 голосов
/ 25 октября 2011

Если я нажму на поле поиска и отправлю его без ввода текста, все данные в моей базе данных будут возвращены. Как это остановить, чтобы ничего не случилось?

Выезд на сайт:

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);

    ?>

Ответы [ 5 ]

2 голосов
/ 25 октября 2011

Вы должны проверить, если он пуст, прежде чем делать запрос:

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

в противном случае вы можете сделать запрос наподобие:

WHERE name LIKE('%%')

, что действительно дорого и возвращает все строки вашей базы данных

0 голосов
/ 20 ноября 2013

Я столкнулся с некоторыми проблемами в приведенном выше коде. Поэтому следующая улучшенная версия приведенного выше кода работает просто отлично:

<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>
0 голосов
/ 25 октября 2011

Всегда целесообразно сделать front end, используя javascript/Jquery.проверка формы, когда вы предлагаете пользователям что-то ввести.

Как только вы закончите, вы также можете проверить на сервере, используя следующую команду:

if(isset($_POST['searchterm'])){
    // search for the results.
}else{
   // do nothing or show proper message
}
0 голосов
/ 25 октября 2011

Я думаю, что лучшим способом было бы отключить кнопку отправки на стороне клиента, когда поле поиска пусто.

Вы можете сделать что-то вроде:

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

   });
});

где ваш HTML похож:

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

Обязательно выполните проверку на стороне сервера, как указано Николой.

0 голосов
/ 25 октября 2011

Лучший способ сделать это (imo) - это просто проверить javascript, если ввод пустой или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...