par
nico44530 » 08 oct. 2013, 01:09
Bonjour,
J'utilise un input avec auto-complétion pour rechercher les membres.
La recherche se fait par le prénom et le nom.
Le problème c'est qu'il n'y a que le prénom pris en compte.
Dès qu'on commence la recherche par le nom, aucun résultat n’apparaît.
Voici la requête :
<?php
session_start();
require('config.inc.php');
if(isset($_POST['queryString'])){
$queryString = $_POST['queryString'];
if(strlen($queryString) > 0){
$req1 = $connect->prepare("SELECT id, prenom, nom, pseudo, sexe FROM users WHERE prenom LIKE :queryString OR nom LIKE :queryString1 OR CONCAT(prenom,' ',nom) LIKE :queryString2 ORDER BY prenom LIMIT 8");
$req1->execute(array(':queryString'=>$queryString.'%',':queryString1'=>'A%'.$queryString.'%', ':queryString2'=>$queryString.'%'));
$resultMsg = $req1->rowCount();
if($resultMsg > 0){
while($resultMsg = $req1->fetch()){
$id = $resultMsg['id'];
$prenom = $resultMsg['prenom'];
$nom = $resultMsg['nom'];
$pseudo = $resultMsg['pseudo'];
$sexe = $resultMsg['sexe'];
$search_membre = '../img/upload/'.$id.'-mini.jpg';
$adresse_search = $sexe == 1 ? '../img/upload/homme.jpg' : '../img/upload/femme.jpg';
if(strlen($prenom) > 35) { $prenom = substr($prenom, 0, 35) . "..."; }
if(strlen($nom) > 35) { $nom = substr($nom, 0, 35) . "..."; } ?>
<ul class="search">
<li class="user">
<a href="#" onClick="fillInfos('<?php echo $resultMsg['id']; ?>');fill('<?php echo $resultMsg['prenom']; ?> <?php echo $resultMsg['nom']; ?>');return false;">
<?php if(file_exists($search_membre)){ ?>
<img class="avatar-id" src="../img/upload/<?php echo $id; ?>-mini.jpg" height="32" width="32" alt="" />
<?php } else { ?>
<img class="avatar-search" src="<?php echo $adresse_search; ?>" height="32" width="32" alt="" />
<?php } ?>
<span class="text"><b><?php echo htmlentities(ucfirst($prenom)); ?> <?php echo htmlentities(ucfirst($nom)); ?></b></span>
</a>
</li>
</ul><?php } } else { ?>
<ul class="search">
<li class="user">
<span class="noSearch">La recherche n'a donné aucun résultat.</span>
</li>
</ul><?php } } } ?>
Ce que je voudrais c'est avoir des résultats en commençant le recherche soit par le nom, soit par le prénom, soit les deux (en comptant l'espace entre les deux).
Merci d'avance
Bonjour,
J'utilise un input avec auto-complétion pour rechercher les membres.
La recherche se fait par le prénom et le nom.
Le problème c'est qu'il n'y a que le prénom pris en compte.
Dès qu'on commence la recherche par le nom, aucun résultat n’apparaît.
Voici la requête :
[php]
<?php
session_start();
require('config.inc.php');
if(isset($_POST['queryString'])){
$queryString = $_POST['queryString'];
if(strlen($queryString) > 0){
$req1 = $connect->prepare("SELECT id, prenom, nom, pseudo, sexe FROM users WHERE prenom LIKE :queryString OR nom LIKE :queryString1 OR CONCAT(prenom,' ',nom) LIKE :queryString2 ORDER BY prenom LIMIT 8");
$req1->execute(array(':queryString'=>$queryString.'%',':queryString1'=>'A%'.$queryString.'%', ':queryString2'=>$queryString.'%'));
$resultMsg = $req1->rowCount();
if($resultMsg > 0){
while($resultMsg = $req1->fetch()){
$id = $resultMsg['id'];
$prenom = $resultMsg['prenom'];
$nom = $resultMsg['nom'];
$pseudo = $resultMsg['pseudo'];
$sexe = $resultMsg['sexe'];
$search_membre = '../img/upload/'.$id.'-mini.jpg';
$adresse_search = $sexe == 1 ? '../img/upload/homme.jpg' : '../img/upload/femme.jpg';
if(strlen($prenom) > 35) { $prenom = substr($prenom, 0, 35) . "..."; }
if(strlen($nom) > 35) { $nom = substr($nom, 0, 35) . "..."; } ?>
<ul class="search">
<li class="user">
<a href="#" onClick="fillInfos('<?php echo $resultMsg['id']; ?>');fill('<?php echo $resultMsg['prenom']; ?> <?php echo $resultMsg['nom']; ?>');return false;">
<?php if(file_exists($search_membre)){ ?>
<img class="avatar-id" src="../img/upload/<?php echo $id; ?>-mini.jpg" height="32" width="32" alt="" />
<?php } else { ?>
<img class="avatar-search" src="<?php echo $adresse_search; ?>" height="32" width="32" alt="" />
<?php } ?>
<span class="text"><b><?php echo htmlentities(ucfirst($prenom)); ?> <?php echo htmlentities(ucfirst($nom)); ?></b></span>
</a>
</li>
</ul><?php } } else { ?>
<ul class="search">
<li class="user">
<span class="noSearch">La recherche n'a donné aucun résultat.</span>
</li>
</ul><?php } } } ?>
[/php]
Ce que je voudrais c'est avoir des résultats en commençant le recherche soit par le nom, soit par le prénom, soit les deux (en comptant l'espace entre les deux).
Merci d'avance