11521 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'ai besoin d'une piste pour réussir à faire fonctionner une fonction "d'autocompletion"!

Une recherche "simple" (texte d'un input) fonctionne mais je souhaite la complémenter par une vérification (une simple variable php) et là... bah me voilà !

En simplifiant la page d'appel à son strict minimum on obtiendrait quelque chose du genre :

<html>
<body>
	<?php $lvl=4; ?>
	<form method="post" action="page.php" name="formulaire">
		<label for="destinataire">Destinataire : </label>
		<input type="text" id="destinataire" name="destinataire" /> 
	</form>
</body>
<script>
	//Autocomplete
	$(function() {
		$( "#destinataire" ).autocomplete({
			source: 'autocomplete.php'
	    });
	});
</script>
</html>


le fichier autocomplete :

<?php
    //Configuration basse de données
    $dbHost = 'localhost';
    $dbUsername = 'root';
    $dbPassword = 'pwd';
    $dbName = 'dbname';
    
    //Connexion à la base de données
    $db = new mysqli($dbHost,$dbUsername,$dbPassword,$dbName);
    
    //Récupération de la saisie
    $searchTerm = utf8_decode($_GET['term']); 

	//Recherche de la saisie dans la bdd
	$query = $db->query("SELECT id, prenom, nom, pseudo, confidentialite.lvlnom 
		FROM membres 
		LEFT JOIN confidentialite ON membres.id = confidentialite.usr
		WHERE pseudo LIKE '%".$searchTerm."%' OR nom LIKE '%".$searchTerm."%' OR prenom LIKE '%".$searchTerm."%'
		ORDER BY pseudo ASC LIMIT 0, 5");

	while ($row = $query->fetch_assoc()) 
	{
		$lvlnom=isset($row['lvlnom'])?(int) stripslashes(htmlspecialchars($row['lvlnom'])):5;
		//C'est pour le test ci-dessous que je souhaite récupérer la variable $lvl
		if ($lvlnom <= $lvl)
		{
	    		$data[] = utf8_encode($row['prenom'])." ".utf8_encode($row['nom'])." (".utf8_encode($row['pseudo']).")";
	   	 }
	    	else
	   	 {
		 	$data[] = utf8_encode($row['pseudo']);
	    	 }
	}
	
	//Encodage en JSON et affichage
	echo json_encode($data);
?>


L'objectif étant de vérifier les droits de l'utilisateur (la variable php "$lvl=4" correspond en temps normal à une variable de session), savoir si il peut visualiser le nom et le prénom des résultats trouvés par l'autocomplete ou simplement le pseudo !

Pour l'instant je n'arrive pas à transférer/intégrer la variable $lvl dans autocomplete.php

Je continue de chercher mais si un expert javascript/jquery venait à passer par là il me ferait, je pense, gagner beaucoup de temps!

Merci d'avance !
Modifié par Elkcloner (22 Nov 2016 - 16:40)
Bonjour,

Si $lvl est censée être en session, initialise cette variable dans ton script php et pas dans ton template.

Parce que là, tu la compares alors qu'elle n'a pas de valeur.
Bonjour Loicbcn !

et merci ! en effet le problème était tout bête...!

	//Niveau du membre
	$lvl=(isset($_SESSION['lvl']))?(int) $_SESSION['lvl']:1;


dans le fichier autocomplete.php aura suffit pour que le résultat soit conforme aux attentes Smiley cligne

C'est en forgeant... je retourne forger ! et merci encore !