Ajax+Php+MySql pour AutoComplétion - Page 2
Répondre à la discussion
Page 2 sur 2 PremièrePremière 2
Affichage des résultats 31 à 38 sur 38

Ajax+Php+MySql pour AutoComplétion



  1. #31
    invitea0ecda6e

    Re : Ajax+Php+MySql pour AutoComplétion


    ------

    Pourquoi as-tu créé les fichiers suivants:
    - completion-recherche.class.php
    - completion-recherche.php
    D'après ce que je comprend, ce sont des duplications.

    D'autant que maintenant que tu as renommé inutilement tes variables, celles que tu utilises dans le js (item.Ville et item.CodePostal) ne marchent plus. Tu les as changé en item.Ville2 et item.CodePostal2.

    -----

  2. #32
    invitea1400dd5

    Re : Ajax+Php+MySql pour AutoComplétion

    Effectivement, avec ta réponse, je viens de comprendre que je peux réutiliser apparemment le même js que pour le début du post (remplir mon 1er formulaire d'enregistrement des checkpoints).
    Mais comment ... ? Je bute un peu ...

  3. #33
    invitea0ecda6e

    Re : Ajax+Php+MySql pour AutoComplétion

    Non je n'ai pas sit ça: tu ne peux pas réutiliser le même js (enfin si, mais ça fait pas mal de modifs) parce que tu n'utilises pas les mêmes champs.
    J'ai dit par contre que tu pouvais utiliser les mêmes php, pas besoin de duplication, les variables php ne sont pas liées à celles de ton js ou de ton code html...
    Comme le dit Dlzlogic, j'ai l'impression que tu t'embarques dans quelque chose que tu ne maitrise pas. Peut-être qu'un petit retour aux bases te ferais du bien ?

  4. #34
    invitea0ecda6e

    Re : Ajax+Php+MySql pour AutoComplétion

    Non je n'ai pas sit ça: tu ne peux pas réutiliser le même js (enfin si, mais ça fait pas mal de modifs) parce que tu n'utilises pas les mêmes champs.
    J'ai dit par contre que tu pouvais utiliser les mêmes php, pas besoin de duplication, les variables php ne sont pas liées à celles de ton js ou de ton code html...
    Comme le dit Dlzlogic, j'ai l'impression que tu t'embarques dans quelque chose que tu ne maitrise pas. Peut-être qu'un petit retour aux bases te ferais du bien ?

    EDIT: oups, le message est parti 2 fois...

  5. #35
    invitea1400dd5

    Re : Ajax+Php+MySql pour AutoComplétion

    Effectivement en utilisant le même .php et .class, j'ai juste dupliqué le .js et modifier le renvoi des 2 variables dans l'id.
    Ca fonctionne nikel.
    Merci à vous pour l'aide et m'avoir mis sur la voie.

  6. #36
    invite4dfb21a4

    Re : Ajax+Php+MySql pour AutoComplétion

    bonjour

    Merci pour ce code
    je l'ai essayé mais ça ne marche pas, il y a une erreur au niveau de la ligne:
    $value = utf8_decode($_POST["ville"])."%";
    $query->bindParam(":ville", $value, PDO::PARAM_STR);
    l'erreur est la suivante: Notice: Undefined index: ville in C:\wamp\www\auto1\autocompleti on.php on line 41
    Est ce que vous pouvez m'aider svp à le résoudre, c'est très urgent
    Merci à l'avance

  7. #37
    invite081cfe1f

    Re : Ajax+Php+MySql pour AutoComplétion

    est ce que tu lance bien le fichier ou est contenu le formulaire ?
    il ne faut pas lancer le fichier autocompletion.php , mais ( dans le cas de la source , le fichier index.html )

  8. #38
    invite081cfe1f

    Re : Ajax+Php+MySql pour AutoComplétion

    le script fonctionne bien chez moi , mais j'ai un problème , dans le champ du formulaire pour le code postal , ça n'envoie pas la valeur récupérée par l'autocompletion ( alors que ça l'envoie pour la ville )



    voila la page test.html ( pour la base sql c'est la meme que celle de la source )

    Code:
    <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="css/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>

    le fichier AutoCompletion.php

    Code:
    <?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); 
    ?>
    et la classe

    Code:
    <?php
    class AutoCompletionCPVille {
    	public $CodePostal;
    	public $Ville;
    }
    ?>
    merci pour le coup de main !

Page 2 sur 2 PremièrePremière 2

Discussions similaires

  1. Gros PB mysql/php
    Par invite5c84ffad dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 02/05/2008, 09h12
  2. test avec PHP MySQL
    Par SunnySky dans le forum Internet - Réseau - Sécurité générale
    Réponses: 2
    Dernier message: 18/02/2007, 03h18
  3. [PHP/MySQL] Pb création agenda
    Par invitebfe3532c dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 03/11/2006, 08h15
  4. Php/MySQL - Ordonner des résultats
    Par invite17c77fd5 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 1
    Dernier message: 22/03/2006, 09h34