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 :

Autocomplétion


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 206
    Par défaut Autocomplétion
    Bonjour,


    Voila mon problème : j'ai une première liste déroulante qui prend des valeurs dans ma BDD, et en fonction de la valeur sélectionnée, j'aimerais avoir une autre liste déroulante qui apparait, mais sans devoir recharger la page (vu que c'est un formulaire à remplir).

    J'ai essayé de bidouiller du javascript mais ça ne fonctionne pas

    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
     
    <?php
    	$resultat=mysql_query("select name from habitat_type") or die ("requête non executée");
    	if (! $resultat) { echo "Erreur requete"; exit;} ?>
     
    	<select name="development_stage" style="width:200px" size="1" onchange="document.getElementById('sous_choix').style.display = 'block';" > 
    <?php
    	while ($requete=mysql_fetch_array($resultat)) {
    ?>
    	<option value="<?php echo ''.$requete['id'].'';?>"><?php echo ''.$requete['name'].'';?> </option>
     
    <?php	}?>
    	</select>
    	</td>
     
    	<?php
    	$resultat2=mysql_query('select name from habitat_type_choice WHERE id_ht="'.$requete['id'].'"') or die ("requête non executée");
    	if (! $resultat2) { echo "Erreur requete"; exit;} ?>
     
     
    	<td class="td_autre">
    	<select id="sous_choix" name="development_stage" style="width:200px" size="1"> 
    	<?php
    	while ($requete2=mysql_fetch_array($resultat2)) {
    ?>
    	<option><?php echo ''.$requete2['name'].'';?> </option>
     
    <?php	}?>
    Je vous met le code pour que vous ayez une idée, je sais très bien qu'il y a certains trucs qui sont aberrants dedans

    Merci d'avance!

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    La seule façon de faire sans recharger la page, c'est d'utiliser Ajax.
    http://siddh.developpez.com/articles/ajax/#LIV-A
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 206
    Par défaut
    ah niquel merci. J'aurais une autre question donc je vais la poser ici :

    En fait j'aimerais faire un auto complete, j'en ai récupéré un mais c'était avec un tableau de valeurs prédéfinies et pas rempli grâce à une requête SQL.

    Code d'origine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var mv_recipients = new Array('test', 'toto', 'tornade', 'toupis', 'torrent', 'tête', 'table', 'turbo', 'tordu', 'tissu', 'teinte', 'tennis');
    mv_recipients = mv_recipients.sort();
    Mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var mv_recipients = new Array();
    mv_recipients = mv_recipients.sort();
     
    var j=0;
     
    $resultat=mysql_query("select nom from pays") or die ("requête non executée");
    if (! $resultat) { echo "Erreur requete"; exit;}
     
    while ($requete=mysql_fetch_array($resultat)) {
     
    	mv_recipients[j]=$requete['nom'];
    	j++;
    }

    Je pense pas que le reste du code soit nécessaire. Avec mon code, l'autocomplete ne fonctionne pas.

    Merci d'avance !

  4. #4
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Tu serais pas en train de mélanger le JS et le PHP là ?
    Ca devrait plutôt donner un truc du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    echo 'var mv_recipients = new Array();
    mv_recipients = mv_recipients.sort();
    '
     
    $i = 0; 
    $resultat=mysql_query("select nom from pays") or die ("requête non executée");
     
    while ($requete=mysql_fetch_assoc($resultat)) {
     
    	echo 'mv_recipients['.$i.'] = '.$requete['nom'].';
    ';
    $i++;
    }
    que tu dois pouvoir simplifier en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $resultat=mysql_query("select nom from pays") or die ("requête non executée");
     
    while ($requete=mysql_fetch_assoc($resultat)) {
     	$arr[] = $requete['nom'];
    }
    echo 'var mv_recipients = new Array("'.implode('", "', $arr).'");
    ';
    Ceci est inutile :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if (! $resultat) { echo "Erreur requete"; exit;}
    Car si mysql_query("select nom from pays") == false tu entre dans le die(), donc ça n'est jamais exécuté.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 206
    Par défaut
    Oula en effet j'ai pas du tout fait attention.

    Je test cela demain et je te tiens au courant, merci.

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    206
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 206
    Par défaut
    Je ne comprends pas bien ton code, car dans l'exemple fourni d'origine, il n'y avait pas de echo avant var mv_recipients, et ça fonctionnait.

    Je sais pas si je l'ai précisé, mais ce code est dans un fichier .js

Discussions similaires

  1. [AJAX] Une Autocomplétion multi-forms/champs
    Par Arcaal dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 06/09/2008, 22h37
  2. [AutoComplétion] Drop down list
    Par tintin31000 dans le forum Général JavaScript
    Réponses: 12
    Dernier message: 28/10/2005, 15h37
  3. [AJAX] Autocomplétion + méthode Ajax
    Par seblo_scoqi dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 26/10/2005, 16h24
  4. [Eclipse 3.1] Prob avec l'autocomplétion et la javadoc
    Par agentzaizai dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 23/09/2005, 23h57
  5. [SciTE] Comment faire de l'autocomplétion ?
    Par touff5 dans le forum Autres langages
    Réponses: 1
    Dernier message: 18/01/2005, 10h19

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