www.j0k3r.net Index du Forum

     
 
  RechercherRechercher    MembresMembres     S'enregistrerS'enregistrer    ProfilProfil    Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés    ConnexionConnexion 
 
     
Autocompletion : 2 champs (ou plus)
Aller à la page 1, 2  Suivante
 
Poster un nouveau sujet   Répondre au sujet    www.j0k3r.net Index du Forum -> JavaScript / AJAX
     
 
Auteur Message
fouilli

User avatar

Inscrit le: 18 Mar 2007
Messages: 1

Posté le: Dim Mar 18, 2007 16:51 
MessageSujet du message : Autocompletion : 2 champs (ou plus)
Répondre en citant

Bonjour,

j'ai suivi le tuto de cette page :
http://www.j0k3r.net/ajax-une-autocompletion-avancee-en-ajax-6 .html
et ça marche parfaitement, j'ai donc voulu l'adapter à mes besoins c'est à dire à un formulaire avec plusieurs champs. Mais là c'est le casse tête je n'ai pas réussi à faire ce que je voulais.

Je m'explique, imaginons un formulaire de recherche avec une liste de lieux et on a donc :
Pays
Département
Ville

Si je me met sur ville, et que je commence à taper des lettres, pas de problème : je met PA , ça me propose PARIS, PALERME, par exemple.
(Il en va de même pour les départements et les pays, il marche bien séparément)

Par contre, imaginons, que dans le pays je choisisse ITALIE, et bien je ne souhaite pas avoir PARIS comme choix quand je vais commencer à taper mon PA dans la ville. D'où ma question, comment peut-on lier plusieurs champs avec la librairie script.aculo.us ??
Quelqu'un aurait un petit exemple à me montrer ?
Merci d'avance et bonne continuation
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
[ IP : Enregistré ]
TiPunK

User avatar

Inscrit le: 02 Mai 2007
Messages: 12
Localisation: Montpellier

Posté le: Mer Mai 02, 2007 18:49 
MessagePas de sujet à ce message
Répondre en citant

Bonjour,

Je me permets de faire un petit up sur ce message, étant donné que me voilà confronté à un problème identique...

Je suis en stage et établis un classement d'espèces végétales Famille->Genre->Espece...
Lorsque je choisis une famille, j'aimerais que l'autosuggestion proposée dans le genre soit limitée uniquement aux valeurs correspondant à la famille choisie avant.

Pour le moment, l'individualisation des recherches est possible par la parametrage "afterUpdateElement: null" dans l'appel de la fonction "Ajax.Autocompleter()" et un if par champ à remplir, mais il faudrait que le $autoCompletion_famille['Famille'] puisse être transmis au second champ. Et c'est là que ça bloque... Je vous glisse un bout le code, la page autocompletion.php :

Code :
<?php
   if(isset($_POST['famille'])){
      header('Content-type: text/html; charset=iso-8859-1');
      // on inclut la connexion
      mysql_connect('localhost', 'root', '');
      mysql_select_db('pollen_nextgen');
      
      // on fait la requête
      $sql_famille = "SELECT distinct `Famille` FROM `taxons` WHERE `Famille` LIKE CONVERT( _utf8 '%".$_POST['famille']."%' USING latin1 ) COLLATE latin1_swedish_ci ORDER BY `Famille`";
      $req_famille = mysql_query($sql_famille);
      
      $i = 0;
      echo '<ul class="contacts">';
      // on boucle sur tous les éléments
      while($autoCompletion_famille = mysql_fetch_assoc($req_famille)){
         echo '
         <li class="contact"><div class="nom">'.$autoCompletion_famille['Famille'].'</div>
         </li>';
         // on s'arrête s’il y en a trop
         if (++$i >= 10)
            die('<li>...</li></ul>');
      }
      echo '</ul>';
      die();
   }
   
   if(isset($_POST['genre'])){
      header('Content-type: text/html; charset=iso-8859-1');
      // on inclut la connexion
      mysql_connect('localhost', 'root', '');
      mysql_select_db('pollen_nextgen');
      
      // on fait la requête
      $sql_genre = "SELECT distinct `Genre` FROM `taxons` WHERE `Famille` = ".$autoCompletion_famille['Famille']." AND `Genre` LIKE CONVERT( _utf8 '%".$_POST['genre']."%' USING latin1 ) COLLATE latin1_swedish_ci ORDER BY `Genre`";
      //$sql_genre = "SELECT distinct Genre FROM taxons WHERE Genre LIKE '%".$_POST['genre']."%' ORDER BY Genre";
      // Celle fonctionne bien !!!!
      $req_genre = mysql_query($sql_genre);
      
      $i = 0;
      echo '<ul class="contacts">';
      // on boucle sur tous les éléments
      while($autoCompletion = mysql_fetch_assoc($req_genre)){
         echo '
         <li class="contact"><div class="nom">'.$autoCompletion['Genre'].'</div>
         </li>';
         // on s'arrête s’il y en a trop
         if (++$i >= 10)
            die('<li>...</li></ul>');
      }
      echo '</ul>';
      die();
   }
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Une autocompletion avancée en AJAX</title>
<script type="text/javascript" src="lib/prototype.js"></script>
<script type="text/javascript" src="lib/scriptaculous.js"></script>
<script type="text/javascript" src="lib/autocompletion.js"></script>
<style type="text/css">
body{
   font-family: Verdana, Arial, Helvetica, sans-serif;
   text-align: justify;
   font-size: 12px;
   color: #565656;
}

img {
    border: none;
}

ul {
   list-style: none;
   margin: 0;
   padding: 0;
}
/* Autocompletion */
.update{
   position:absolute;
   width:250px;
   background-color:white;
   border:1px solid #888;
   margin:0px;
   padding:0px;
}

ul.contacts  {
   list-style-type: none;
   margin:0px;
   padding:0px;
   text-align: left;
}
ul.contacts li.selected { background-color: #ffb; cursor: pointer; }
li.contact {
   list-style-type: none;
   display:block;
   margin:0;
   padding:2px;
   height:32px;
}
li.contact div.image {
   float:left;
   width:32px;
   height:32px;
   margin-right:8px;
}
li.contact div.nom {
   font-weight:bold;
   font-size:12px;
   line-height:1.2em;
}
</style>
</head>
<body>
<br/>
<form action="?" method="post" onsubmit="return false;">
   <label for="famille">Yeah tape ta famille : </label>
   <input type="input" name="famille" id="famille" value="" />
   <div class="update" id="famille_update"></div>
   
   <br />
   <label for="genre">Yeah tape ton genre : </label>
   <input type="input" name="genre" id="genre" value="" />
   <div class="update" id="genre_update"></div>
</form>
<br/>

<script type="text/javascript">
new Ajax.Autocompleter ('famille',
                  'famille_update',
                  'autocompletion.php',
                  {
                     method: 'post',
                     paramName: 'famille',
                     afterUpdateElement: null
                  });

new Ajax.Autocompleter ('genre',
                  'genre_update',
                  'autocompletion.php',
                  {
                     method: 'post',
                     paramName: 'genre',
                     afterUpdateElement: null
                  });

</script>            

</body>
</html>


Merci d'avance pour vos précieuses réponses...
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
[ IP : Enregistré ]
j0k3r_n0ir
Webmaster


Inscrit le: 13 Oct 2004
Messages: 2438
Localisation: Paris ...

Posté le: Jeu Mai 03, 2007 14:17 
MessagePas de sujet à ce message
Répondre en citant

Salut tous les deux,

Je pense avoir la réponse à vos questions. Ou du moins pour lier deux champs en autocompletion. C'un ami qui m'avait posé le problème et en fait j'attendais d'avoir le temps pour faire une article directement dessus (étant donné qu'il n'est pas le seul à se poser la question !).

Si j'ai pas fait l'article d'ici ce week end, je vous dirais comment faire Wink
_________________
La vie au fond, ce n'est qu'un court passage sur Terre.
Alors ne soit pas con, profites de tout ... fini ta bière !
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
[ IP : Enregistré ]
TiPunK

User avatar

Inscrit le: 02 Mai 2007
Messages: 12
Localisation: Montpellier

Posté le: Jeu Mai 03, 2007 14:53 
MessagePas de sujet à ce message
Répondre en citant

Ok, merci patron ! Wink

J'aurai ensuite une autre petite question sur le sujet, est-ce que l'intégration dans des pseudo-frames d'un site ne pose pas de problème ? Je te demande ça par rapport aux inclusions : je navigue sur l'index de mon site en permanence, donc l'intégration du DOCTYPE est assez délicate je pense, vu qu'elle doit se trouver en dehors de la balise <ashteumeuleu>. Dois-je alors faire une intégration pré-document une bonne fois pour toutes, dans l'index ?

H.S. total (désolé) : Je viens de voir que tu as suivi la formation de M.I.W. à Gap.
Je suis de Gap à la base, bien que je sois parti depuis 8 ans déjà...
Actuellement je suis en Master de Bioinformatique sur Montpellier, et je trouve ta formation super intéressante. Ca peut être un sacré complément en plus de mon Master. Pis un petit retour au pays ça serait cool ! razz
_________________
me is on line
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
[ IP : Enregistré ]
j0k3r_n0ir
Webmaster


Inscrit le: 13 Oct 2004
Messages: 2438
Localisation: Paris ...

Posté le: Jeu Mai 03, 2007 16:33 
MessagePas de sujet à ce message
Répondre en citant

TiPunK a écrit:
est-ce que l'intégration dans des pseudo-frames d'un site ne pose pas de problème ?
Détailles un peu.
Déjà un site en frame ... hum c'un peu has been !!

TiPunK a écrit:
H.S. total (désolé) : Je viens de voir que tu as suivi la formation de M.I.W. à Gap.
Je suis de Gap à la base, bien que je sois parti depuis 8 ans déjà...
Actuellement je suis en Master de Bioinformatique sur Montpellier, et je trouve ta formation super intéressante. Ca peut être un sacré complément en plus de mon Master. Pis un petit retour au pays ça serait cool ! razz
C'est de l'informatique orienté internet mais pas de bio Smile
_________________
La vie au fond, ce n'est qu'un court passage sur Terre.
Alors ne soit pas con, profites de tout ... fini ta bière !
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
[ IP : Enregistré ]
TiPunK

User avatar

Inscrit le: 02 Mai 2007
Messages: 12
Localisation: Montpellier

Posté le: Ven Mai 04, 2007 10:06 
MessagePas de sujet à ce message
Répondre en citant

j0k3r_n0ir a écrit:
Détailles un peu.
Déjà un site en frame ... hum c'un peu has been !!!


En fait c'est toujours l'index qui est rafraichi, en fonction du contenu d'une variable passée en GET, il n'y a pas de cadre réel. Il est totalement valide XHTML 1.0 strict d'ailleurs.

Ca donne ça :

Code :
<?php

echo("<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n");

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">

   <head>
      <!-- Titre de la page -->
      <title>PDB</title>
   </head>
  <!-- Fin Haut de page -->
 
 
 
  <!-- Corps de page -->
  <body>
     
      <!------------------------------------>
      <!-- Premier "Bloc": Entête et Menu -->
      <!------------------------------------>
     
          <?php
                  // Préparation de la connexion a phpMyAdmin
                  include('./config/config_access.inc.php'); 
         
                  include('entete.html');  // Nous appelons l'entete du site
          ?>   
     
      <!-- Fin du premier Bloc -->
     
      <!------------------------------------------>
      <!-- Deuxième "Bloc": Affichage Dynamique -->
      <!------------------------------------------>

      <table style="border: 1px solid #000; width: 100%; background-color: #FFF;">      
         <tr>               
            <td>
               <?php         
                  /*********************************************************************** **********/
                  /* Le bloc de code php ci-dessous est utilisé ici afin de sécuriser le site web: */
                  /* Seul un nombre limité de page peut ainsi être affiché.                        */
                  /* Une URL incorrecte renvoit à l'accueil du site                                */
                  /*********************************************************************** **********/
         
                  // Liste des pages autorisées
                   $valid_page = array( 'menu_ajout' => './menu_ajout.html',
                                  'menu_MAJ' => './menu_MAJ.html',
                                  'taxon' => './Insertion/Nouveau_taxon.html',
                                  'ajout_taxon' => './Insertion/Ajout_table_taxon.php',
                                  'MAJ_taxon' => './MAJ/MAJ_taxon.php',
                                  'MAJ_table_taxon' => './MAJ/MAJ_table_taxon.php'
                                 );
            
         
                    // La page appartient t'elle à la liste des pages autorisées ?
          
                  if ( (isset($_GET['page'])) && (isset($valid_page[$_GET['page']])) ) {
                     include($valid_page[$_GET['page']]);   // Pages principales
                  }else{
                     include('test.html');  // Page par défaut ( Se charge à la place d'une page non autorisée )
                  }
               ?>
            </td>
         </tr>
      </table>
      
      <!-- Fin du deuxième Bloc -->
      
      <!-- Pied de page  -->
      
      <div class="pied_page"><p class="ppp"><a href="http://www.php.net/" target="_blank"><img border="0" src="./img/icone_php.png" title="Built with PHP!"></a><a href="" target="_blank"><img border="0" src="./img/css.gif" title="Valid CSS"></a></p></div>      
       
      
      </body>
   <!-- Fin du Corps de page -->   
</html>
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
[ IP : Enregistré ]
j0k3r_n0ir
Webmaster


Inscrit le: 13 Oct 2004
Messages: 2438
Localisation: Paris ...

Posté le: Ven Mai 04, 2007 11:06 
MessagePas de sujet à ce message
Répondre en citant

Ok j'ai compris.
Lis bien le tutoriel tout récemment mis à jour sur AlscreationS :
> http://css.alsacreations.com/Tutoriels-PHP/Inclure-un-fichier- dans-un-autre-grace-a-PHP

Wink
_________________
La vie au fond, ce n'est qu'un court passage sur Terre.
Alors ne soit pas con, profites de tout ... fini ta bière !
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
[ IP : Enregistré ]
TiPunK

User avatar

Inscrit le: 02 Mai 2007
Messages: 12
Localisation: Montpellier

Posté le: Ven Mai 04, 2007 11:21 
MessagePas de sujet à ce message
Répondre en citant

Je suis d'autant plus content, après avoir lu le tutoriel, de savoir que ma structure est bien conforme. Wink
(à la différence près que le global est dans un tableau, non mea culpa, mon binôme veut pas changer)


Dernière édition par TiPunK le Dim Mai 20, 2007 17:12; édité 1 fois
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
[ IP : Enregistré ]
TiPunK

User avatar

Inscrit le: 02 Mai 2007
Messages: 12
Localisation: Montpellier

Posté le: Lun Mai 07, 2007 18:08 
MessagePas de sujet à ce message
Répondre en citant

j0k3r_n0ir a écrit:
Si j'ai pas fait l'article d'ici ce week end, je vous dirais comment faire Wink

Razz Je t'attends...
_________________
me is on line
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
[ IP : Enregistré ]
j0k3r_n0ir
Webmaster


Inscrit le: 13 Oct 2004
Messages: 2438
Localisation: Paris ...

Posté le: Lun Mai 07, 2007 20:41 
MessagePas de sujet à ce message
Répondre en citant

Il reçoit quelques corrections et il arrive Wink
_________________
La vie au fond, ce n'est qu'un court passage sur Terre.
Alors ne soit pas con, profites de tout ... fini ta bière !
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
[ IP : Enregistré ]
TiPunK

User avatar

Inscrit le: 02 Mai 2007
Messages: 12
Localisation: Montpellier

Posté le: Mer Mai 09, 2007 4:45 
MessagePas de sujet à ce message
Répondre en citant

Oki, pas de soucis, je laisse cette précieuse étape en suspens en attendant ton message.
_________________
me is on line
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
[ IP : Enregistré ]
j0k3r_n0ir
Webmaster


Inscrit le: 13 Oct 2004
Messages: 2438
Localisation: Paris ...

Posté le: Jeu Mai 10, 2007 10:27 
MessagePas de sujet à ce message
Répondre en citant

C'est publié Wink
http://www.j0k3r.net/ajax-lier-deux-champs-en-autocompletion-7 .html
_________________
La vie au fond, ce n'est qu'un court passage sur Terre.
Alors ne soit pas con, profites de tout ... fini ta bière !
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
[ IP : Enregistré ]
TiPunK

User avatar

Inscrit le: 02 Mai 2007
Messages: 12
Localisation: Montpellier

Posté le: Jeu Mai 10, 2007 20:18 
MessagePas de sujet à ce message
Répondre en citant

Merci beaucoup J0k3R, voila qui me sera bien utile...
_________________
me is on line
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
[ IP : Enregistré ]
TiPunK

User avatar

Inscrit le: 02 Mai 2007
Messages: 12
Localisation: Montpellier

Posté le: Ven Mai 11, 2007 20:23 
MessagePas de sujet à ce message
Répondre en citant

J'ai vraiment un gros souci. Pourtant, la logique est là. Ca fait deux jours, depuis ton article hier matin, que je travaille à transférer ces paramètres. Le souci est que la base de données n'est pas modifiable. Je ne peux diviser les tables et attribuer des identifiants. Je me suis battu avec le code, mais pour l'instant c'est lui qui gagne. Par exemple, tel qu'il est, dès que je saisis quelquechose dans la case du genre, la variable POST de la famille se vide sous Firefox 2.0 (pas sous IE7). Pourquoi ? J'en sais strictement rien. Je pense pourtant n'avoir utilisé que du DOM dans la fonction...

Peux-tu jeter un oeil sur ce que j'ai tenté (lien externe) si tu en as le temps s'il te plait ?

Merki beaucoup !
_________________
me is on line
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
[ IP : Enregistré ]
j0k3r_n0ir
Webmaster


Inscrit le: 13 Oct 2004
Messages: 2438
Localisation: Paris ...

Posté le: Sam Mai 12, 2007 1:43 
MessagePas de sujet à ce message
Répondre en citant

T'as fait des erreurs "à la con" Smile

Dans ton elseif, tu testes un _POST mais c'est pas le bon, teste plutôt id_famille. Pareil dans la requete SQL qui suit, mets id_famille plutôt que famille, pour la variable en _POST
_________________
La vie au fond, ce n'est qu'un court passage sur Terre.
Alors ne soit pas con, profites de tout ... fini ta bière !
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
[ IP : Enregistré ]
 
     
Poster un nouveau sujet   Répondre au sujet    www.j0k3r.net Index du Forum -> JavaScript / AJAX Toutes les heures sont au format GMT + 2 Heures
Aller à la page 1, 2  Suivante
Page 1 sur 2


Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum




 
Powered by phpBB © 2007 phpBB Group
Thème d'origine, modifié par j0k3r_n0ir
Traduction par : phpBB-fr.com