Bonjour,
J'utilise l'Autocomplete jquery ui avec les codes suivants :
Page formulaire_search.php :
Page search_autocomplete.php :
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.
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.