11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

J'utilise l'Autocomplete jquery ui avec les codes suivants :

Page formulaire_search.php :


<head>
 
<link type="text/css" href="css/ui-lightness/jquery-ui-1.8.16.custom.css" rel="Stylesheet" />	
<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="js/jquery-ui-1.8.16.custom.min.js"></script>
 
<script type="text/javascript">
 
$(function() {
 
            $("#state").autocomplete({
                source: "search_autocomplete.php",
                minLength: 2,
                select: function(event, ui) {
                    $('#state_id').val(ui.item.id);
                }
            });
 
 
        });
 
 
</script>
 
 
</head>
 
<body>
 
<form action="search_autocomplete.php"  method="post">
	<fieldset>
		<legend>Recherche</legend>
		<div class="ui-widget">
			<label for="state">Rechercher un contributeur ou un titre </label>
			<input type="text" id="state"  name="state" /> 
		</div>
		<input type="hidden" id="state_id" name="state_id" />
		<p><input type="submit" name="submitBtn" value="Submit" /></p>
	</fieldset>
</form>
 
 
</body>
</html>


Page search_autocomplete.php :

<?php
 
header('Content-type: text/html; charset=UTF-8');
 
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$dbname = 'db';
 
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname);
 
 
$return_arr = array();
 
if ($conn)
{
 
	$fetch = mysql_query("SELECT * FROM livre where titre like '%" . mysql_real_escape_string($_GET['term']) . "%'"); 
 
	while ($row = mysql_fetch_array($fetch, MYSQL_ASSOC)) {
		$row_array['value'] = $row['titre'];
		$row_array['id_livre'] = $row['id_livre'];
 
        array_push($return_arr,$row_array);
    }
}
 
mysql_close($conn);
 
echo json_encode($return_arr);
 
 
?>


Mais lorsque je tape le début d'un titre dans le champ texte, l'autocompletion ne se déclenche pas. En soumettant le formulaire, la liste de tous mes livres s'affiche en JSON :
Notice: Undefined index: term in...
[{"value":"Ceux qui dorment en ces murs","id_livre":"194"},{"value":"Sang Royal","id_livre":"211"},...]

Selon Firebug les librairies se chargent bien.Par ailleurs l'onglet XHR de firebug montre que la requête se fait avec une réponse. Exemple si je tape "pal", la requête suivante s'effectue : GET search_autocomplete?term=pal. Firebug indique la réponse cohérente suivante :

[{"value":null,"id_livre":"1791"},{"value":null,"id_livre":"5220"},{"value":"La reine dans le palais des courants d'air","id_livre":"5328"},{"value":"Reine de Palmyre","id_livre":"9252"},{"value":"L'homme aux yeux de napalm","id_livre":"11234"},{"value":"Opale","id_livre":"12943"}].

Voyez-vous pourquoi le système ne fonctionne pas ? Merci.
Autocomplete me pose des problèmes à chaque fois que je l'utilise. De mémoire, je n'ai pas réussi à l'utiliser correctement sauf si j'avais systématiquement un id et value dans mes clefs, et tout en format string (clefs et valeurs). Donc les null, par exemple, j'aurais tendance à te conseiller de les dégager (chaîne vide).

(tiens, Millenium <3 )
Merci pour ta réponse. En fait j'ai réussi à faire fonctionner le système en modifiant un peu mon code PHP.
Bonjour,

j'ai le même problème, si tu pouvais expliquer comment tu t'en es sorti, ce serait sympa. Je deviens fou à essayer de comprendre pourquoi ça ne marche pas !

Merci.