par
nico44530 » 09 mai 2014, 20:46
Bonjour,
J'ai un script auto-complétion avec jQuery et Mysql.
Il permet de rechercher tous les membres du site par leur nom et prénom, et j'aimerais filtrer la recherche en ignorant le nom et prénom du membre connecté.
Les résultats de la recherche permettent de visiter leur profil.
Sinon à part ça, tout fonctionne
Voici le code de la requête :
$resultat = Bdd::connect() -> prepare("SELECT id, prenom, nom, pseudo, sexe FROM users WHERE CONCAT(prenom,' ',nom) LIKE :q OR CONCAT(nom,' ',prenom) LIKE :q ORDER BY prenom LIMIT 10");
Et le code entier :
if(isset($_POST['queryString'])){
$queryString = $_POST['queryString'];
if(strlen($_POST['queryString']) > 0){
$resultat = Bdd::connect() -> prepare("SELECT id, prenom, nom, pseudo, sexe FROM users WHERE CONCAT(prenom,' ',nom) LIKE :q OR CONCAT(nom,' ',prenom) LIKE :q ORDER BY prenom LIMIT 10");
$resultat->execute(array('q' => $queryString.'%'));
$countResult = $resultat -> rowCount();
if($resultat){
if($countResult > 0){
echo '<div id="sidebarList"><span class="sidebarTitle">Recherche ('.$countResult.')</span><div class="sidebarBorder"></div></div>';
while($result = $resultat -> fetch(PDO::FETCH_ASSOC)){
$avatar = $_SERVER['DOCUMENT_ROOT'].'/users/upload/avatars/'.$result['id'].'-mini.jpg';
$avatarDefault = $result['sexe'] == 'homme' ? 'homme.jpg' : 'femme.jpg';
echo '<li>';
echo '<a href="'.$result['pseudo'].'" data-reactid="'.$result['id'].'" class="sidebarLink">';
if(file_exists($avatar)){
echo '<div class="sidebarImg"><img src="users/upload/avatars/'.$result['id'].'-mini.jpg" class="friendsAvatar" height="24" width="24" alt="" /></div>';
} else {
echo '<div class="sidebarImg"><img src="users/upload/avatars/'.$avatarDefault.'" class="friendsAvatar" height="24" width="24" alt="" /></div>';
}
echo '<div class="sidebarName">'.majuscule($result['prenom']).' '.majuscule($result['nom']).'</div>';
echo '</a>';
echo '</li>';
}
echo '<script type="text/javascript">$(\'a[rel="ignore"]\').hover(function(){$(this).removeAttr(\'href\');},function(){$(this).attr(\'href\',\'#\');});</script>';
} else {
echo '<div id="sidebarList"><span class="sidebarTitle">Recherche (0)</span><div class="sidebarBorder"></div></div>';
echo '<div id="noSearch">Aucun résultat pour votre recherche</div>';
}
} else {
echo 'Il y a un problème avec la requête sql.';
}
}
} else {
echo 'Il ne devrait pas avoir un accès direct à ce script !!!';
}
Merci d'avance
Bonjour,
J'ai un script auto-complétion avec jQuery et Mysql.
Il permet de rechercher tous les membres du site par leur nom et prénom, et j'aimerais filtrer la recherche en ignorant le nom et prénom du membre connecté.
Les résultats de la recherche permettent de visiter leur profil.
Sinon à part ça, tout fonctionne :wink:
Voici le code de la requête :
[php]$resultat = Bdd::connect() -> prepare("SELECT id, prenom, nom, pseudo, sexe FROM users WHERE CONCAT(prenom,' ',nom) LIKE :q OR CONCAT(nom,' ',prenom) LIKE :q ORDER BY prenom LIMIT 10");[/php]
Et le code entier :
[php]
if(isset($_POST['queryString'])){
$queryString = $_POST['queryString'];
if(strlen($_POST['queryString']) > 0){
$resultat = Bdd::connect() -> prepare("SELECT id, prenom, nom, pseudo, sexe FROM users WHERE CONCAT(prenom,' ',nom) LIKE :q OR CONCAT(nom,' ',prenom) LIKE :q ORDER BY prenom LIMIT 10");
$resultat->execute(array('q' => $queryString.'%'));
$countResult = $resultat -> rowCount();
if($resultat){
if($countResult > 0){
echo '<div id="sidebarList"><span class="sidebarTitle">Recherche ('.$countResult.')</span><div class="sidebarBorder"></div></div>';
while($result = $resultat -> fetch(PDO::FETCH_ASSOC)){
$avatar = $_SERVER['DOCUMENT_ROOT'].'/users/upload/avatars/'.$result['id'].'-mini.jpg';
$avatarDefault = $result['sexe'] == 'homme' ? 'homme.jpg' : 'femme.jpg';
echo '<li>';
echo '<a href="'.$result['pseudo'].'" data-reactid="'.$result['id'].'" class="sidebarLink">';
if(file_exists($avatar)){
echo '<div class="sidebarImg"><img src="users/upload/avatars/'.$result['id'].'-mini.jpg" class="friendsAvatar" height="24" width="24" alt="" /></div>';
} else {
echo '<div class="sidebarImg"><img src="users/upload/avatars/'.$avatarDefault.'" class="friendsAvatar" height="24" width="24" alt="" /></div>';
}
echo '<div class="sidebarName">'.majuscule($result['prenom']).' '.majuscule($result['nom']).'</div>';
echo '</a>';
echo '</li>';
}
echo '<script type="text/javascript">$(\'a[rel="ignore"]\').hover(function(){$(this).removeAttr(\'href\');},function(){$(this).attr(\'href\',\'#\');});</script>';
} else {
echo '<div id="sidebarList"><span class="sidebarTitle">Recherche (0)</span><div class="sidebarBorder"></div></div>';
echo '<div id="noSearch">Aucun résultat pour votre recherche</div>';
}
} else {
echo 'Il y a un problème avec la requête sql.';
}
}
} else {
echo 'Il ne devrait pas avoir un accès direct à ce script !!!';
}
[/php]
Merci d'avance