J'ai ce problème avec php. Ce que je veux faire, c'est avoir un moteur de recherche avec trois filtres: recherche par titre, description et prix. Ceci est mon index html.
<form style="text-align:center;" method="get" action="search.php">
<label>
Search
<input type="text"name="keywords" autocomplete="off">
</label>
<input type="submit" value="Search"><br>
</form>
En utilisant la méthode d'action, j'appelle le fichier search.php.
if(isset($_GET['keywords'])) {
$keywords = $db->escape_string($_GET['keywords']);
$query = $db->query("SELECT title, description, price FROM products WHERE title LIKE '%{$keywords}%' OR description LIKE '%{$keywords}%' OR price LIKE '%{$keywords}%'");
}
Non, il combine tous les résultats en un seul, car j'utilise les mêmes mots-clés variables. Le problème maintenant est que je n'ai pas de filtre, car je ne sais pas comment le créer. Peut-être que j'aimerais avoir un menu déroulant avec ces trois options: titre, description, prix. Mais je ne sais pas comment créer mon code php pour voir lequel est sélectionné. Ou peut-être y a-t-il une meilleure solution pour mon idée? Dois-je utiliser différentes variables comme le mot-clé était ou quoi?
3 réponses
C'est très simple .. ajoutez une balise de sélection. voici un exemple.
<!doctype html>
<html>
<head>
<title>filter</title>
</head>
<body>
<form method="post" action="test1.php">
<select name="keywords" >
<option value="title">title</option>
<option value="description">description</option>
<option value="price">price</option>
</select>
<input type="submit">
</form>
<?php print_r($_POST);
if(isset($_GET['keywords'])) {
$keywords = $db->escape_string($_GET['keywords']);
$query = $db->query("SELECT title, description, price FROM products WHERE '%{$keywords}%' LIKE '%{$keywords}%' ");
}
?>
<br>
</body>
</html>
Divisez la chaîne d'entrée en mots-clés uniques avec la fonction explode
$keywords = "world word2";
$keywords_arr = explode(" ",$keywords);
echo $keywords_arr[0];
Oui. Vous devez ajouter une sélection pour limiter le champ de recherche:
<form style="text-align:center;" method="get" action="search.php">
<label>
Search
<input type="text"name="keywords" autocomplete="off">
</label>
<select name="field">
<option value="title">title</option>
<option value="description">description</option>
<option value="prcie">price</option>
</select>
<input type="submit" value="Search"><br>
</form>
Et php:
if(isset($_GET['keywords']) && isset($_GET['field'])) {
$keywords = $db->escape_string($_GET['keywords']);
$sql="SELECT title, description, price FROM products WHERE ". $_GET['field'] ." like '%{$keywords}%'" ;
$query = $db->query($sql);
}
De plus, vous devez protéger votre code de l'injection.
De nouvelles questions
php
PHP est un langage de script largement utilisé, de haut niveau, dynamique, orienté objet et interprété, principalement conçu pour le développement Web côté serveur. Utilisé pour les questions sur le langage PHP.