8791 sujets

Développement web côté serveur, CMS

Bonjour à tous,

Je cherche à créer un formulaire de recherche utilisant le plugin jQuery autocomplete.
Pour cela, je veux que l'autocomplete recherche dans ma bdd mysql les noms dans la table (ce qui marche) et récupérer l'id quand j'envoie le formulaire (ce qui ne marche pas).

A savoir que mon formulaire doit être en get, et non en post.

	<form id="recherche" action="fiche-client.php?id=1" method="post">
		<input id="autocomplete" name="nom" placeholder="Rechercher...">
		<input type="submit" value="">
	</form>


En précisant l'id en "dur" ça marche, mais je cherche à récupérer l'id en relation avec le nom saisi. J'ai pensé à un champ en hidden, mais je bloque un peu... Voici ma requete sql :

    $requete = "SELECT id, nom_societe FROM clients WHERE nom_societe 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)) {
        $nom = $donnees['nom_societe'];
        echo $nom ."\n";
    }


Quelqu'un a une idée ?
Merci d'avance Smiley cligne
Modifié par exootia (06 Feb 2013 - 11:49)
Hum, déjà t'es embêté car ton PHP ne retourne que le nom, jamais de lien avec son id, donc déjà il faudrait que tu retournes un tableau [{label:"xyz1",value:id1},{label:"xyz2",value:id2}, ...].

http://api.jqueryui.com/autocomplete/

Multiple types supported:
Array: An array can be used for local data. There are two supported formats:
An array of strings: [ "Choice1", "Choice2" ]
An array of objects with label and value properties: [ { label: "Choice1", value: "value1" }, ... ]
The label property is displayed in the suggestion menu. The value will be inserted into the input element when a user selects an item. If just one property is specified, it will be used for both, e.g., if you provide only value properties, the value will also be used as the label.

Tchô
C'est bien le soucis, j'sais pas trop comment retourner un tableau comme ça Smiley decu
Si quelqu'un avait un lien ou autre je suis preneur ...
Dans ce que j'en sais, il y a trois possibilités de transfert de php vers javascript pour un retour AJAX :
- echo qui transmet une chaîne
- XML
- JSON

Personnellement, j'utilise le JSON et ça donne ça :

coté php :
Tu crées un tableau avec ce que tu veux transmettre. Puis tu echo ton tableau en format JSON, en te servant de ça : http://php.net/manual/fr/function.json-encode.php


coté javascript :

//dans la fonction qui traite le retour du php
var jayson=new Array();
	$.each(retour,function(attribut,valeur){
	jayson[attribut]=valeur;
})


//dans l'appel ajax
Tu spécifies que la communication se fait en JSON grâce à data_type : http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests



Fait juste gaffe aux accents, le json aime moyennement. Smiley rolleyes
Modifié par Lothindil (06 Feb 2013 - 16:10)