1
Indiquez l’intérêt que vous portez à cette question
0

Recherche avec auto complétion 2

Je n’ais pas pu répondre a mon propre post, je copie/colle dont ici mon message, désolé.

J’ai fait quelques essais sur mes sites SPIP en local.
En essayant de suivre l’article d’Erational je ne suis pas arrivé a grand-chose, du a mes compétences limitées. L’article date de 2013, il me semble que depuis SPIP la version 3.2 intègre jQury Ui dans ses plugin.

J’ai donc essayé quelque chose :
- J’ai un spip en local
- j’ai monté un autre site en local en HTML (une seule page)

Sur ma page index en HTML, j’ai codé ceci :

<form action="">
		<input type="text" id="recherche">
	</form>
 
	<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
	<script src="js/jquery-ui.js"></script>
 
	<script>
		$('#recherche').autocomplete({
	    source : 'liste.php'
		});
	</script>

Un input de recherche, les appels des librairies JS et le script autocomplete qui ira chercher les infos d’une page liste en PHP.

Dans ma page liste.php :

<?php
 
$BD = new PDO('mysql:host=localhost;dbname=maBase', 'root', 'root');
 
$term = $_GET['term'];
 
$requete = $BD->prepare('SELECT * FROM spip_articles WHERE titre LIKE :term');
$requete->execute(array('term' => '%'.$term.'%'));
 
$array = array();
 
while($donnee = $requete->fetch()) 
{
    array_push($array, $donnee['titre']);
}
 
echo json_encode($array);
 
?>

Je me connecte a la base du site spip en sélectionnant les titres des articles.

Lorsque je vais sur l’index de ce petit site avec mon navigateur, je vois exactement le comportement attendu, les titres des articles du site spip apparaisse en liste suivant la saisi dans le champ input. Sauf que, évidemment si je valide une recherche je ne vais pas sur l’article en question.

J’ai essayé la même chose avec le vrai site, mais cela ne fonctionne pas aussi bien, les articles n’apparaissent pas tous contrairement a mon test en local.

L’idée serait peut être d’intégrer ça tout dans spip, mais je sèche !!

Des idées ?

Merci à vous.