Autocomplétion : Recherche par prénom ou par nom

Eléphant du PHP | 386 Messages

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

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 oct. 2013, 08:08

Sait,

Commence par afficher la requête et la tester dans un client SQL.

Le dernier cas ne sert que si tu renseigne complètement le prénom.

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 386 Messages

08 oct. 2013, 17:33

Comment on fait pour afficher la requête et la tester ?
Parce que la requête fonctionne mais juste quand on écrit :

prénom
prénom+nom

Ce que je voudrais c'est la recherche aussi par le nom :

nom
nom+prénom

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 oct. 2013, 19:37

$variable = 'requete';
echo $variable;


.......

@+
Il en faut peu pour être heureux ......