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

PHP & Base de données Discussion :

champ qui crée liste de mots (champ dynamique) [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut champ qui crée liste de mots (champ dynamique)
    bonjour, je voudrai que à partir de la saisie de quelques lettres dans un champ, une liste de noms appaisse et permette à l'uitlisateur de sélectionné un nom. Mais j'ai fais plusieurs tests, cela ne réagit pas. Commen faire? Merci.

    Voici le champ:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <tr> 
                <td>Déclarant</td>
                <td> <input type="text" onKeyDown="RempliChamp()"  id="declarant"  name="declarant" value=""></td>
              </tr>
    Voici la fonction RempliChamp dans javascript:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function RempliChamp() {
    document.form1.declarant.value= <?php
    									do {  
    				     					echo $row_rsdecl['Nom']; 
    									   } 
    									while ($row_rsdecl = mysql_fetch_assoc($rsdecl));
     			     				?>
    		alert("Ma valeur". $row_rsdecl['Nom']);
     
    }
    VOici la requete dand php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query_rsdecl = "SELECT * FROM declarants where Nom like '%".$declarant."%' ORDER BY Nom ASC";

  2. #2
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Ca sent plus le AJAX. Voila la fonction javascript qui va envoyer en direct le traitement de la requête PHP:

    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
    function RempliChamp() {
       /* Création de l'instance XMLHTTP (ne pas modifier)  */
       if (window.XMLHttpRequest) 
          http_request = new XMLHttpRequest();   
       else if (window.ActiveXObject)
          http_request = new ActiveXObject("Microsoft.XMLHTTP");   
       else {
          alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");   
          return false;   
       }  
     
       if (!http_request) {
           alert('Abandon :( Impossible de créer une instance XMLHTTP');
           return false;
       }
     
       /* Récupération de la valeur du champ */
       data = "lettre=" + document.getElementById("declarant").value;    
       /* Fichier de requête */
       http_request.open("POST", "requete.php", true);
       /* Traitement des résultats */
       http_request.onreadystatechange = function() { 
          if (http_request.readyState == 4) {
             tmp = http_request.responseText;
             alert(tmp);
          }
       }
     
       /* Lancement de la requête (ne pas modifier)  */
       http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");  
       http_request.send(data);
    }
    C'est plutot simple: je récupère la contenance du champ, je l'envois au fichier requête.php pour executer la requête MySQL. Le fichier requete.php ne doit contenir que le code suivant, puisque par la suite je fais un alert de ce que affiche la page (la liste des noms):

    <?php

    &#160;&#160;&#160;
    // Connection à la base de donnée
    &#160;&#160;&#160;// Requête
    &#160;&#160;&#160;// le_nom est à remplacer selon ta table
    &#160;&#160;&#160;
    $query_rsdecl = "SELECT le_nom FROM declarants WHERE Nom LIKE '%".$_POST&#91;'lettre']."%' ORDER BY Nom ASC";
    &#160;&#160;&#160;while(list(
    $nom) = mysql_fetch_array($query_rsdec1)) {
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    $nom."\n";
    &#160;&#160;&#160;}
    &#160;&#160;&#160;
    &#160;&#160;&#160;
    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com

    Par contre je n'ai pas testé.

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    cela me renvoit le résultat dans une alerte, mais j'aimerai que ce soit dans le champ même.

  4. #4
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    j'aimerai avoir la possibilité de selectionné les éléménts

  5. #5
    Membre éprouvé
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Par défaut
    Si c'est dans le champ même, au lieu de mettre un alert tu mets par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    document.getElementById("Ton_Champ").value = tmp;
    Après, ça dépend le type de ton champ.

  6. #6
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    c'est à dire que il ya une liste avec des valeurs qui apparait et la personne peut sélectinner une valeur à l'intérieur

  7. #7
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    je n'arrive pas à faire l'affichage dans le div.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    102
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 102
    Par défaut
    Salut, si j'ai bien saisi votre demarche, il me semble que c'est la propriété innerHTML du div qu'il faut affecter du responseText de la requete HTTP.

    Il faudrait tenter :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    document.getElementById("Le_div").style.visibility="visible";
    document.getElementById("Le_div").innerHTML = tmp;
    document.getElementById("Le_div").style.display = "block";

  9. #9
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    j'ai pu afficher, seulement l'erreur ci-contre persiste:
    ma requete renvoit une erreur quand le champ declarant est vide ou on a rien saisit dans ce dernier. Ce champ declarant, c'est le champ dynamique. Je pensais qu'en le rendant dynamique, lorsqu'on valide le formulaire, sans le remplir au préalable, la requete ne me renverrait plus:
    Array ( [jour] => [heure] => [NumNat] => [NumClient] => [declarant] => [iddeclarant] => [description] => [envoi] => Valider [MM_insert] => form1 ) Erreur de syntaxe près de 'LIMIT 0, 2' à la ligne 1



  10. #10
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361
    Par défaut
    Ca pourra peut être servir à un autre membre en recherche

    j'ai plutot utilisé ce lien:


    qui marche bien d'ailleurs chez moi . (avec accès à la bd)

  11. #11
    Membre éclairé
    Inscrit en
    Mai 2003
    Messages
    361
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 361

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 13/08/2014, 18h14
  2. Champs alphanumériques et liste de mots
    Par sasmedit dans le forum SAS Base
    Réponses: 1
    Dernier message: 31/10/2013, 15h24
  3. Réponses: 5
    Dernier message: 07/05/2007, 08h16
  4. Réponses: 2
    Dernier message: 11/08/2006, 11h11
  5. Champs de texte qui affiche liste choix ?
    Par chakib.jlijel dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 25/03/2006, 08h39

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