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

Langage PHP Discussion :

soucis d'autocomplétion ou de boucle


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 73
    Points : 41
    Points
    41
    Par défaut soucis d'autocomplétion ou de boucle
    Bonjour,

    J'aimerai faire une zone de recherche en autocomplétion. Pour cela, j'ai placé un script ainsi qu'un formulaire dans la page index.php


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <script type="text/javascript">
                   $(document).ready(function(){
                       $("#term").autocomplete({
                           source:'search.php',
                           minLength:1
                       });
                   });
           </script>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <form method="post" action="index.php">
      <p>
     <label for="nom">Nom: </label>
     <input name="nom" id="nom" type="text" />
       <?php $ om= $_POST['nom'];?>
     
     
    <input type="submit" value="Valider" /> </form>


    j'ai le formulaire de connexion (page 'search.php') que voici ci dessous
    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
     
    <?php
     
    try
    {
        $bdd = new PDO('mysql:host=localhost;dbname=test', 'root', 'test');
    }
     
    catch(Exception $e)
    {
            die('Erreur : '.$e->getMessage());
    }
    $searchTerm = $_GET['term'];
    $reponse = $bdd->query("SELECT nom, id FROM personne WHERE nomLIKE '%".$searchTerm."%' ORDER BY nomASC");<br>
    while ($donnees = $reponse->fetch())
    {
     
        echo $donnees['nom'] . '<br />';<br>}
     
    $reponse->closeCursor();
     
     
    ?>
    et ça ne tourne pas. Je ne vois pas pourquoi.

  2. #2
    Invité
    Invité(e)
    Par défaut
    http://www.developpez.net/forums/d16...d/#post8820238

    N.B. c'est quoi ces <br> dans le code PHP ?
    Dernière modification par Invité ; 10/12/2016 à 22h31.

  3. #3
    Membre du Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2016
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Avril 2016
    Messages : 73
    Points : 41
    Points
    41
    Par défaut
    merci pour votre aide.

    il n' y a pas de br (il doit etre là car j'ai fait des modif après le copier coller peut être).



    j'ai essayé d'adapter votre code à un cas de figure que j'ai et il y a quelque chose de pas juste... à mon avis dans le premier code ci-dessous (je connais pas du tout ajax). J'ai retiré la partie 'CodePays', il est possible que ça vienne de là. Donc j'ai fait ça avec une table "city" et des champs City_Id et City_Name

    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
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    	<head >
    		<title>AutoCompletion</title>
    		<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 ()
    			{
    				$("#City_Id, #City_Name").autocomplete({
    					source: function (request, response)
    					{
    						//Si la réponse est dans le cache
    						if ((request.term) in cache)
    						{
    							response($.map(cache[request.term], function (item)
    							{
     
    								return {
    									label: item.City_Id + ", " + item.City_Name,
    									value: function ()
    									{
    										if ($(this).attr('id') == 'City_Id')
    										{
    											$('#City_Name').val(item.City_Name);
    											return item.City_Id;
    										}
    										else
    										{
    											$('#City_Id').val(item.City_Id);
    											return item.City_Name;
    										}
    									}
    								}
    							}));
    						}
    						//Sinon -> Requete Ajax
    						else
    						{
    							var objData = {};
    							if ($(this.element).attr('id') == 'City_Id')
    							{
    								objData = { City_Id: request.term, maxRows: 10 };
    							}
    							else
    							{
    								objData = { City_Name: request.term, maxRows: 10 };
    							}
    							$.ajax({
    								url: "./AutoCompletion.php",
    								dataType: "json",
    								data: objData,
    								type: 'POST',
    								success: function (data)
    								{
    									//Ajout de reponse dans le cache
    									cache[(request.term)] = data;
    									response($.map(data, function (item)
    									{
     
    										return {
    											label: item.City_Id + ", " + item.City_Name,
    											value: function ()
    											{
    												if ($(this).attr('id') == 'City_Id')
    												{
    													$('#City_Name').val(item.City_Name);
    													return item.City_Id;
    												}
    												else
    												{
    													$('#City_Id').val(item.City_Id);
    													return item.City_Name;
    												}
    											}
    										}
    									}));
    								}
    							});
    						}
    					},
    					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" />
    	</head>
    	<body>
    		<form action="index.html">
    			City_Id :<input type="text" id="City_Id" size="6"/>
    			City_Name : <input type="text" id="City_Name" />
    		</form>
    	</body>
    </html>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?php
    class AutoCompletionCPVille {
    	public $City_Id;
    	public $City_Name;
    }
    ?>
    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
    <?php
    require_once('./AutoCompletionCPVille.class.php');
     
    //Initialisation de la liste
    $list = array();
     
    //Connexion MySQL
    try
    {
        $db = new PDO('mysql:host=localhost;dbname=tut', 'root', 'test');
    }
    catch (Exception $ex)
    {
        echo $ex->getMessage();
    }
     
    //Construction de la requete
    $strQuery = "SELECT City_Id, City_Name FROM city where";
    if (isset($_POST["City_Id"]))
    {
        $strQuery .= "City_Id LIKE :City_Id ";
    }
    else
    {
        $strQuery .= "City_Name LIKE :City_Name ";
    }
    //$strQuery .= "AND CODEPAYS = 'FR' ";
    //Limite
    if (isset($_POST["maxRows"]))
    {
        $strQuery .= "LIMIT 0, :maxRows";
    }
    $query = $db->prepare($strQuery);
    if (isset($_POST["City_Id"]))
    {
        $value = $_POST["City_Id"]."%";
        $query->bindParam(":City_Id", $value, PDO::PARAM_STR);
    }
    else
    {
        $value = $_POST["City_Name"]."%";
        $query->bindParam(":City_Name", $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");;
     
    echo json_encode($list);
    ?>

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,



    source
    Multiple types supported:

    Array: An array can be used for local data.
    [.........]
    String: When a string is used, the Autocomplete plugin expects that string to point to a URL resource that will return JSON data.
    [.........]
    Function: The third variation, a callback, provides the most flexibility and can be used to connect any data source to Autocomplete.
    [.........]
    Si je reprends ton 1er code, à priori, il ne manque pas grand'chose :
    dans search.php, il faut créer (et renvoyer) les données voulues au format json

Discussions similaires

  1. Réponses: 16
    Dernier message: 25/05/2007, 15h51
  2. [VBA-E]Petit souci avec une boucle
    Par Mou dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 17/04/2007, 15h15
  3. Réponses: 2
    Dernier message: 29/03/2007, 13h28
  4. [Debutant/WinAPI] Souci avec boucle While et GetMessage()
    Par SnowStyle dans le forum Windows
    Réponses: 11
    Dernier message: 15/10/2005, 19h19

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