Autocomplete

Petit nouveau ! | 5 Messages

22 janv. 2017, 02:57

Bonjour je coince depuis plusieurs jours est ce quelqu'un serait comment faire, j'ai fait un autocomplete le problème c'est que j'ai que la ville qui s'affiche pas le code postal je voudrais exemple :

Paris 75006

La actuellement j'ai sa :

Paris

Voici un bout de mon code ou je coince,ma base de donnée est comme ceci : ID - Ville - Code postal

Mon code :
var lastXhr, suggestions, selected_id = null;
jQuery(document).ready(function($){
	$("#searchbox")
		.autocomplete({
			minLength: 1,
			autoFocus: true,
			html: true,
			source: function( request, response ) {
				request.action = 'searchWithImage';
				request.ajax = '1';
				request.region_id = $('#regions').val();

				lastXhr = $.getJSON('citysearch.php', request, function( data, status, xhr ) {

					if ( xhr === lastXhr ) {
						for(d in data){
							var city_info = data[d].label.split('|');
							data[d].label += city_info[0];
							data[d].label += city_info[1];
						}
						suggestions = data;
						response( data );
					}
				});
			},
			select: function(event, ui) {
				selected_id = ui.item.id;
				$('#selected-city').val(selected_id);
				var city_name = $(ui.item.label).find('.city-name').text();
				$('#city-name').val(city_name);
			},
			change: function(event, ui){
				if (selected_id === null){
					var found = false;
					for(i in suggestions){
						if (suggestions[i].value.toLowerCase() == $(this).val().toLowerCase()){
							selected_id = suggestions[i].id;
							$('#selected-city').val(selected_id);
							$(this).val(suggestions[i].value);
							found = true;
						}
					}
					if (!found){
						alert('Votre code postal ou ville ne correspond pas.')
					}
				}
			},
			open: function(){
				selected_id = null;
				$('#selected-city').val(selected_id);
			}
		})
	;
});
Dernière édition par moogli le 23 janv. 2017, 10:35, édité 1 fois.
Raison : BB code js

Avatar de l’utilisateur
Modérateur PHPfrance
Modérateur PHPfrance | 8755 Messages

23 janv. 2017, 10:59

salut

a vu de nez c'est ceci qui ne va pas
var city_info = data[d].label.split('|');
data[d].label += city_info[0];
data[d].label += city_info[1];
en tous cas si tu as du JSON ceci est aberrant. Tu ne devrais pas avoir de données structurées dans du json et encore moins dans une base de données relationnelle (vu la table cela ne semble pas être le cas).

qu'est ce que tu reçois de ton fichier citysearch.php ? (regarde dans l'onglet network des outils de dev ou affiche simplement ce fichier avec le bon paramètre dans une page web tu pourras vérifier ce avec quoi tu dois travailler.

tu peux aussi afficher le contenu de data dans la console (console.log) ou simplement utiliser les outils développeur de ton navigateur pour déboguer la chose ;)

@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 5 Messages

23 janv. 2017, 13:53

Merci d'avoir répondu rapidement,

Mon autocomplete marche bien mais c'est lorque je clique sur un département ;

Image

y'a que la ville qui ce valide mais pas le code postal dedans :

Image

dans mon citisearch j'ai sa :

Code : Tout sélectionner

$config = getConfig(); $action = 'default'; if (isset($_REQUEST['action'])){ $action = $_REQUEST['action']; } switch ($action){ case 'search': if (empty($_REQUEST['region_id'])){ $_REQUEST['region_id'] = 'all'; } $cities = searchCitiesByRegion($_REQUEST['term'], $_REQUEST['region_id']); $cities = convertToAutocompleteResults($cities); echo json_encode($cities);
Dernière édition par joker94 le 23 janv. 2017, 14:03, édité 1 fois.