IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

[AJAX] autocomplétion ajax : donnée non envoyée


Sujet :

AJAX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut [AJAX] autocomplétion ajax : donnée non envoyée
    Bonjour,

    j'ai utilisé le script donné par Xavier ZOLEZZI dans son tutorial ici

    http://x-zolezzi.developpez.com/tuto...utocompletion/

    ça marche bien mais la valeur récupéré par l'autocompletion pour le champ code postal n'est pas envoyé , alors que pour la ville ça fonctionne

    j'ai un formulaire avec divers champs et les deux champs "autocompletion" pris sur le script ( champ "ville destination" et "code postal" )
    je récupère bien toutes les valeurs des champs mais pas celle du code postal récupéré par l'autocompletion

    le fichier ou est le formulaire , index.html

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.1.min.js"></script>
    		<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.ui/1.8.10/jquery-ui.js"></script>
    		<script type="text/javascript">
    			var cache = {};
    			$(function ()
    			{
    				$("#cp, #ville").autocomplete({
    					source: function (request, response)
    					{
    						//Si la réponse est dans le cache
    						if (('FR' + '-' + request.term) in cache)
    						{
    							response($.map(cache['FR' + '-' + request.term], function (item)
    							{
     
    								return {
    									label: item.CodePostal + " / " + item.Ville,
    									value: function ()
    									{
    										if ($(this).attr('id') == 'cp')
    										{
    											$('#ville').val(item.Ville);
    											return item.CodePostal;
    										}
    										else
    										{
    											$('#cp').val(item.CodePostal);
    											return item.Ville;
    										}
    									}
    								}
    							}));
    						}
    						//Sinon -> Requete Ajax
    						else
    						{
    							var objData = {};
    							if ($(this.element).attr('id') == 'cp')
    							{
    								objData = { codePostal: request.term, pays: 'FR', maxRows: 10 };
    							}
    							else
    							{
    								objData = { ville: request.term, pays: 'FR', maxRows: 10 };
    							}
    							$.ajax({
    								url: "./AutoCompletion.php",
    								dataType: "json",
    								data: objData,
    								type: 'POST',
    								success: function (data)
    								{
    									//Ajout de reponse dans le cache
    									cache[('FR' + '-' + request.term)] = data;
    									response($.map(data, function (item)
    									{
     
    										return {
    											label:item.Ville + " / " +item.CodePostal ,
    											value: function ()
    											{
    												if ($(this).attr('id') == 'cp')
    												{
    													$('#ville').val(item.Ville);
    													return item.CodePostal;
    												}
    												else
    												{
    													$('#cp').val(item.CodePostal);
    													return item.Ville;
    												}
    											}
    										}
    									}));
    								}
    							});
    						}
    					},
    					minLength: 3,
    					delay: 600
    				});
    			});
    		</script>
    <link rel="Stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css" />
     
     
     
    <form action="index.html" method="get">
      <table width="700" border="0" cellspacing="0" cellpadding="0">
        <tr>
          <td width="149">Votre ville :</td>
          <td width="551"><input type="text" name="nomville" value="" id="ville1"></td>
        </tr>
        <tr>
          <td>Votre nom :</td>
          <td><input type="text" name="nomuser" id="nom"></td>
        </tr>
        <tr>
          <td>Ville destination :</td>
          <td><input type="text" id="ville" name="villedestination" size="30" /> </td>
        </tr>
        <tr>
          <td>Code Postal :</td>
          <td><input type="text" name "codepostal" id="cp" size="10"/></td>
        </tr>
        <tr>
          <td>votre email :</td>
          <td><input type="text" name="mailuser" id="textfield4"></td>
        </tr>
        <tr>
          <td>&nbsp;</td>
          <td><input type="submit" name="button" id="button" value="Envoyer"></td>
        </tr>
      </table>
    </form>
    la class, AutoCompletionCPVille.class.php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    class AutoCompletionCPVille {
    	public $CodePostal;
    	public $Ville;
    }
    ?>

    et le fichier AutoCompletion.php
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    <?php
    require_once('./AutoCompletionCPVille.class.php');
     
    //Initialisation de la liste
    $list = array();
     
    //Connexion MySQL
    try
    {
        $db = new PDO('mysql:host=localhost;dbname=base', 'root', '');
    }
    catch (Exception $ex)
    {
        echo $ex->getMessage();
    }
     
    //Construction de la requete
    $strQuery = "SELECT CP CodePostal, VILLE Ville FROM table WHERE ";
    if (isset($_POST["codePostal"]))
    {
        $strQuery .= "CP LIKE :codePostal ";
    }
    else
    {
        $strQuery .= "VILLE LIKE :ville ";
    }
    $strQuery .= "AND CODEPAYS = 'FR' ";
    //Limite
    if (isset($_POST["maxRows"]))
    {
        $strQuery .= "LIMIT 0, :maxRows";
    }
    $query = $db->prepare($strQuery);
    if (isset($_POST["codePostal"]))
    {
        $value = $_POST["codePostal"]."%";
        $query->bindParam(":codePostal", $value, PDO::PARAM_STR);
    }
    else
    {
    $value = utf8_decode($_POST["ville"])."%";
    $query->bindParam(":ville", $value, PDO::PARAM_STR);
    } 
    //Limite
    if (isset($_POST["maxRows"]))
    {
        $valueRows = intval($_POST["maxRows"]);
        $query->bindParam(":maxRows", $valueRows, PDO::PARAM_INT);
    }
     
    $query->execute();
     
    $list = $query->fetchAll(PDO::FETCH_CLASS, "AutoCompletionCPVille");;
     
    foreach ($list as $row){
    mb_detect_encoding($row->Ville, "UTF-8") != "UTF-8" ? : $row->Ville = utf8_encode($row->Ville); // encodage des champs texte en utf8 si il ne le sont pas.
    }
     
    echo json_encode($list); 
    ?>

    la base est celle qui est fourni dans le tutorial ( petite base )

    merci pour votre aide

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 412
    Par défaut
    quelle truffe je suis

    j'avais oublié le égal dans le formulaire pour le name du code postal

    problème résolu

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 20/09/2011, 09h31
  2. [AJAX] Autocomplétation Ajax mysql
    Par fazpedro dans le forum AJAX
    Réponses: 1
    Dernier message: 26/07/2011, 23h19
  3. Réponses: 3
    Dernier message: 22/11/2010, 09h18
  4. Réponses: 4
    Dernier message: 07/09/2009, 16h33
  5. [AJAX] Autocomplétion ajax
    Par amarcil dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/03/2008, 14h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo