Page 1 sur 1

rechercher un mot dans une liste déroulante

Posté : 08 déc. 2012, 17:07
par polo73
bonjour,

j'aimerais que dans ma liste déroulante je puisse taper par exemple les 3 premieres lettres (exemple je tape : mar )
et qu'il me propose les mots qui existe dans ma base par exemple (tous les noms existants : marie , marc , maryline ...)
j'ai reussi a recuper les valeurs dans ma base mais pas a restreindre mon choix quand je tape les 3 premieres lettres .
voici mon code :
<?php
								$host = "localhost"; 
								$user = "root";
								$pass = "";
								$bdd = "entretien";
								// connexion
								@mysql_connect($host,$user,$pass)
								   or die("Impossible de se connecter");
								@mysql_select_db("$bdd")
								   or die("Impossible de se connecter à la base"); 

								$result = mysql_query("SELECT DISTINCT Nom FROM personne");
								$nblignes = mysql_numrows($result);

							?>

									Nom
									<select name="nom">
									<?php for ($i=0;$i<$nblignes;$i=$i+1){ $nom =  mysql_result($result,$i,"Nom");?>
										<option value="<?php echo "$nom"; ?>">
											<?php echo "$nom";?>
										</option>
									<?php } ?>
									</select><br><br>
					
								<?php 
							mysql_close();
							?>
cela m'affiche tous les nom de ma base et je veux pas tous les afficher
je sais pas si j'ai etais assez clair ?
merci d'avance

Re: rechercher un mot dans une liste déroulante

Posté : 08 déc. 2012, 18:23
par benv8nam
Si tu utilises déjà jquery dans ton site tu peux utiliser l'autocomplete : http://jqueryui.com/autocomplete/

Re: rechercher un mot dans une liste déroulante

Posté : 10 déc. 2012, 09:16
par polo73
bonjour,

merci pour ta réponse c'est bien ce que je recherche . mais à la place des valeurs écrite en dur, j'aimerais récupérer mes valeurs dans ma base de données .
comment puis-je faire ?

Re: rechercher un mot dans une liste déroulante

Posté : 10 déc. 2012, 10:05
par polo73
ducou j'ai réussi a le faire comme ceci :
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
		<link type="text/css" rel="stylesheet" href="css/jquery.css" />
		<script type="text/javascript" src="js/jquery.js"></script>
		<script type="text/javascript" src="js/jquery.autocomplete.js"></script>
		<title>visualisé etat civil</title>
	</head>
	<body>
		<center><img src="logo.gif" /></center>
		<div id = "connexion">
			<form name='formulaire' action='insertion2.php' method='post'  >

							<h2>Veuillez choisir la personne</h2>

							 Recherche par Nom : <input type="text" id="langages" name="Nom" ><br><br>
							 
[javascript]<script>
$(document).ready(function() {
$('#langages').autocomplete('fichier.php');
});
</script>[/javascript]

et le fichier.php que j'appelle :
 <?php
// si on reçoit une donnée
if(isset($_GET['q'])) {
    $q = htmlentities($_GET['q']); // protection
     
    // connexion à la base de données
    try {
        $bdd = new PDO('mysql:host=localhost;dbname=entretien', 'root', '');
    } catch(Exception $e) {
        exit('Impossible de se connecter à la base de données.');
    }
    // écriture de la requête
    $requete = "SELECT distinct Nom FROM personne WHERE Nom LIKE '". $q ."%' LIMIT 0, 10";
    // exécution de la requête
    $resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
    // affichage des résultats
    while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
        echo $donnees['Nom'] ."\n";
    }
}
?>

Re: rechercher un mot dans une liste déroulante

Posté : 10 déc. 2012, 12:01
par xTG
$q = htmlentities($_GET['q']); // protection
Ceci ne protège pas grand chose.

Il est préférable d'opérer ainsi :
$requete = "SELECT distinct Nom FROM personne WHERE Nom LIKE '". $bdd->quote($q) ."%' LIMIT 0, 10";