BARRE DE RECHERCHE
- Accueil
- Forum
- Programmation
- PHP
- BARRE DE RECHERCHE
Krys Le 6 septembre 2016 à 15:38 (Édité le 25 janvier 2019 à 17:52)
la barre de recherche fonctionne très bien de mon coté, mais le seul petit souci quand on arrive sur la page, il liste tout ce qui se trouve dans la BDD avant même d'avoir fait une recherche.
je voudrais savoir comment empêché cela, afin que l'on obtient un résultat uniquement après avoir fait une recherche.
je place le code
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=test;charset=utf8','root','');
$articles = $bdd->query('SELECT * FROM table ORDER BY id DESC');
if(isset($_GET['q']) AND !empty($_GET['q'])) {
$q = htmlspecialchars($_GET['q']);
$articles = $bdd->query('SELECT * FROM table WHERE titre LIKE "%'.$q.'%" ORDER BY id DESC');
if($articles->rowCount() == 0) {
$articles = $bdd->query('SELECT * FROM table WHERE CONCAT(titre) LIKE "%'.$q.'%" ORDER BY id DESC');
}
}
?>
<form method="GET">
<input type="search" name="q" placeholder="Recherche..." />
<input type="submit" value="Valider" />
</form>
<?php if($articles->rowCount() > 0) { ?>
<ul>
<?php while($a = $articles->fetch()) { ?>
<li> <?= $a['titre'] ?> - <?= $a['id'] ?> </li>
<?php } ?>
</ul>
<?php } else { ?>
Aucun résultat pour: <?= $q ?>...
<?php } ?>
merci d'avance
TheOldNoob Le 6 septembre 2016 à 16:11 (Édité le 1 janvier 1970 à 01:00)
Alors, tu va pouvoir utilisé les booleen !
En gros :
Entre ta connexion a la bdd et le début de ton code, tu va instancier une variable comme ça :
$showResult = false;
Ensuite, après ta requete ligne 10, donc si il compte plus que 0, tu lui fait :
$showResult = true;
Puis, ton toute tes dernière ligne pgp
if(showResult) {
ton php
}
Krys Le 6 septembre 2016 à 16:51 (Édité le 6 septembre 2016 à 16:59)
Parse error: syntax error, unexpected '}' in C:\wamp\www\teste\index.php on line 36
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=pole-chretien;charset=utf8','root','');
$showResult = false;
$articles = $bdd->query('SELECT * FROM table ORDER BY id DESC');
if(isset($_GET['q']) AND !empty($_GET['q'])) {
$q = htmlspecialchars($_GET['q']);
$articles = $bdd->query('SELECT * FROM table WHERE titre LIKE "%'.$q.'%" ORDER BY id DESC');
if($articles->rowCount() == 0) {
$articles = $bdd->query('SELECT * FROM table WHERE CONCAT(titre) LIKE "%'.$q.'%" ORDER BY id DESC');
$showResult = true;
}
}
?>
<form method="GET">
<input type="search" name="q" placeholder="Recherche..." />
<input type="submit" value="Valider" />
</form>
<?php if(showResult) ?>
<ul>
<?php while($a = $articles->fetch()) { ?>
<li> <?= $a['titre'] ?> - <?= $a['id'] ?> </li>
<?php } ?>
</ul>
<?php } else { ?>
Aucun résultat pour: <?= $q ?>...
<?php } ?>
Balatharas Le 6 septembre 2016 à 17:30 (Édité le 1 janvier 1970 à 01:00)
La dernière accolade avant le ?> est en trop
TheOldNoob Le 6 septembre 2016 à 17:38 (Édité le 1 janvier 1970 à 01:00)
C'est presque ça, il manque une acolade ici :
<?php if(showResult) { ?>
Du coup, l'acolade a la fin n'est pas en trop Krys Le 6 septembre 2016 à 18:50 (Édité le 1 janvier 1970 à 01:00)
TheOldNoob Le 6 septembre 2016 à 18:57 (Édité le 1 janvier 1970 à 01:00)
Krys Le 6 septembre 2016 à 19:06 (Édité le 1 janvier 1970 à 01:00)
TheOldNoob Le 6 septembre 2016 à 20:10 (Édité le 6 septembre 2016 à 20:26)
- Bien indenté ton code
- marquer tes accolades
<?php
$bdd = new PDO('mysql:host=127.0.0.1;dbname=pole-chretien;charset=utf8','root','');
$showResult = false;
$articles = $bdd->query('SELECT * FROM table ORDER BY id DESC');
if(isset($_GET['q']) AND !empty($_GET['q'])) {
$q = htmlspecialchars($_GET['q']);
$articles = $bdd->query('SELECT * FROM table WHERE titre LIKE "%'.$q.'%" ORDER BY id DESC');
if($articles->rowCount() == 0) {
$articles = $bdd->query('SELECT * FROM table WHERE CONCAT(titre) LIKE "%'.$q.'%" ORDER BY id DESC');
$showResult = true;
} // fin du if($articles->rowCount() == 0)
} // fin du if(isset($_GET['q']) AND !empty($_GET['q'])) {
?>
<form method="GET">
<input type="search" name="q" placeholder="Recherche..." />
<input type="submit" value="Valider" />
</form>
<?php
if($showResult) { ?>
<ul>
<?php
while($a = $articles->fetch()) { ?>
<li> <?= $a['titre'] ?> - <?= $a['id'] ?> </li>
<?php
} // fin du while
?>
</ul>
?>
else {
echo 'Aucun résultat pour:'.$q.'...';
} // fin du else
} // fin du if
?>
tutosfaciles48 Le 24 septembre 2016 à 14:32 (Édité le 24 septembre 2016 à 14:32)
Krys Le 25 septembre 2016 à 00:45 (Édité le 1 janvier 1970 à 01:00)