поиск php по возрасту

0

Я не знаю, как сделать в этом сценарии возрастный диапазон поиска в базе данных пользователи имеют tabla с именем "возраст" и возраст показывают как цифру, и мне нужна форма, в которой пользователи поиска по возрасту от возраста?

Вот код, пожалуйста, помогите мне :)

<form id="form1" name="form1" method="post" action="index.php">
  <label>City</label>
  <select name="city">
    <option value="">--</option>
    <?php
         $sql = "SELECT * FROM ".$SETTINGS["data_table"]." GROUP BY city ORDER BY city";
         $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
         while ($row = mysql_fetch_assoc($sql_result)) {
             echo "<option value='".$row["city"]."'".($row["city"]==$_REQUEST["city"] ? " selected" : "").">".$row["city"]."</option>";
         }
     ?>
  </select>
  <input type="submit" name="button" id="button" value="Filter" />
  </label>
  <a href="index.php">reset</a>
</form>
<br /><br />
<table width="700" border="1" cellspacing="0" cellpadding="4">
  <tr>
    <td width="90" bgcolor="#CCCCCC"><strong>username</strong></td>
    <td width="95" bgcolor="#CCCCCC"><strong>e-mail</strong></td>
    <td width="159" bgcolor="#CCCCCC"><strong>city</strong></td>    
  </tr>
  <?php
     if ($_REQUEST["string"]<>'') {
         $search_string = " AND (full_name LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%' OR email LIKE '%".mysql_real_escape_string($_REQUEST["string"])."%')";    
     }
     if ($_REQUEST["city"]<>'') {
        $search_city = " AND city='".mysql_real_escape_string($_REQUEST["city"])."'";   
     }

    if ($_REQUEST["from"]<>'' and $_REQUEST["to"]<>'') {
    $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date >= '".mysql_real_escape_string($_REQUEST["from"])."' AND to_date <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_city;
    } else if ($_REQUEST["from"]<>'') {
        $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE from_date >= '".mysql_real_escape_string($_REQUEST["from"])."'".$search_string.$search_city;
    } else if ($_REQUEST["to"]<>'') {
        $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE to_date <= '".mysql_real_escape_string($_REQUEST["to"])."'".$search_string.$search_city;
    } else {
       $sql = "SELECT * FROM ".$SETTINGS["data_table"]." WHERE id>0".$search_string.$search_city;
    }

    $sql_result = mysql_query ($sql, $connection ) or die ('request "Could not execute SQL query" '.$sql);
    if (mysql_num_rows($sql_result)>0) {
      while ($row = mysql_fetch_assoc($sql_result)) {
       ?>
      <tr>

        <td><?php echo $row["username"]; ?></td>
        <td><?php echo $row["email"]; ?></td>
        <td><?php echo $row["city"]; ?></td>
      </tr>
      <?php
      }
    } else {
     ?>
     <tr><td colspan="5">No results found.</td>
     <?php  
     }
?>
</table>
Теги:
search

2 ответа

1

Вы не должны использовать методы mysql, поскольку они устарели и будут удалены в будущем.

Я отправляю код с помощью PDO.
Вы можете проверить документацию PDO здесь php.net
Вы можете запросить как:

try{
  $conn = new PDO('mysql:dbname=db_name', 'username', 'password');
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  $range = $_POST['age_range'];
  $query = $conn->prepare("SELECT * FROM table_name WHERE age <= $range");
  $query->exec();
}
catch(Exception $e){
  echo "Exception: " . $e->getMessage();
  // you might not use the above code in your production code
  // as might want not to show the errors and redirect to another custom error page
}

объяснение

В приведенном выше коде мы создаем соединение с db с помощью pdo и атрибута set, чтобы запустить систему отчетов об ошибках и
переменный диапазон получает значение поля поведенческого возраста, предоставленного пользователем, и сохраняет его. И в строке запроса он получает все записи, для которых значение возрастного столбца меньше, чем заданный пользователем.

  • 0
    Это не дает ответа на вопрос. Чтобы критиковать или запрашивать разъяснения у автора, оставьте комментарий под его постом - вы всегда можете комментировать свои собственные посты, и, когда у вас будет достаточно репутации, вы сможете комментировать любые посты .
  • 0
    Для комментирования мне нужно более 50 репутации
Показать ещё 2 комментария
0

прежде всего, не используйте функции mysql_*, потому что они устарели. Используйте расширение mysqli или предпочтительный PDO.

С помощью этих расширений вы можете создать подготовленный оператор, который предотвращает SQL-инъекцию.

Вот пример кода:

<?php
$db = new PDO('mysql://host=localhost;dbname=test_db', 'myuser', 'password');
$stmt = $db->prepare('SELECT * FROM table WHERE age < ?');
$stmt->execute([$age]);
$rows = $stmt->fetchAll();

Ещё вопросы

Сообщество Overcoder
Наверх
Меню