|
| |
|
|
| |
| Auteur |
Message |
fouilli

Inscrit le: 18 Mar 2007 Messages: 1
|
Posté le: Dim Mar 18, 2007 16:51
Sujet du message : Autocompletion : 2 champs (ou plus) |
|
|
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 |
|
TiPunK

Inscrit le: 02 Mai 2007 Messages: 12 Localisation: Montpellier
|
Posté le: Mer Mai 02, 2007 18:49
Pas de sujet à ce message |
|
|
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 |
|
j0k3r_n0ir Webmaster

Inscrit le: 13 Oct 2004 Messages: 2438 Localisation: Paris ...
|
Posté le: Jeu Mai 03, 2007 14:17
Pas de sujet à ce message |
|
|
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
 _________________ 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 |
|
TiPunK

Inscrit le: 02 Mai 2007 Messages: 12 Localisation: Montpellier
|
Posté le: Jeu Mai 03, 2007 14:53
Pas de sujet à ce message |
|
|
Ok, merci patron !
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 !  _________________ me is on line |
|
| Revenir en haut |
|
j0k3r_n0ir Webmaster

Inscrit le: 13 Oct 2004 Messages: 2438 Localisation: Paris ...
|
Posté le: Jeu Mai 03, 2007 16:33
Pas de sujet à ce message |
|
|
| 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 !  | C'est de l'informatique orienté
internet mais pas de bio  _________________ 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 |
|
TiPunK

Inscrit le: 02 Mai 2007 Messages: 12 Localisation: Montpellier
|
Posté le: Ven Mai 04, 2007 10:06
Pas de sujet à ce message |
|
|
| 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 |
|
j0k3r_n0ir Webmaster

Inscrit le: 13 Oct 2004 Messages: 2438 Localisation: Paris ...
|
|
| Revenir en haut |
|
TiPunK

Inscrit le: 02 Mai 2007 Messages: 12 Localisation: Montpellier
|
Posté le: Ven Mai 04, 2007 11:21
Pas de sujet à ce message |
|
|
Je suis d'autant plus content, après avoir lu le tutoriel, de savoir que ma
structure est bien conforme.
(à 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 |
|
TiPunK

Inscrit le: 02 Mai 2007 Messages: 12 Localisation: Montpellier
|
Posté le: Lun Mai 07, 2007 18:08
Pas de sujet à ce message |
|
|
| j0k3r_n0ir a
écrit: | Si j'ai pas fait
l'article d'ici ce week end, je vous dirais comment faire  |
Je
t'attends... _________________ me is on line |
|
| Revenir en haut |
|
j0k3r_n0ir Webmaster

Inscrit le: 13 Oct 2004 Messages: 2438 Localisation: Paris ...
|
Posté le: Lun Mai 07, 2007 20:41
Pas de sujet à ce message |
|
|
Il reçoit quelques corrections et il arrive  _________________ 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 |
|
TiPunK

Inscrit le: 02 Mai 2007 Messages: 12 Localisation: Montpellier
|
Posté le: Mer Mai 09, 2007 4:45
Pas de sujet à ce message |
|
|
Oki, pas de soucis, je laisse cette précieuse étape en suspens en attendant
ton message. _________________ me is on line |
|
| Revenir en haut |
|
j0k3r_n0ir Webmaster

Inscrit le: 13 Oct 2004 Messages: 2438 Localisation: Paris ...
|
|
| Revenir en haut |
|
TiPunK

Inscrit le: 02 Mai 2007 Messages: 12 Localisation: Montpellier
|
Posté le: Jeu Mai 10, 2007 20:18
Pas de sujet à ce message |
|
|
Merci beaucoup J0k3R, voila qui me sera bien utile... _________________ me is on line |
|
| Revenir en haut |
|
TiPunK

Inscrit le: 02 Mai 2007 Messages: 12 Localisation: Montpellier
|
Posté le: Ven Mai 11, 2007 20:23
Pas de sujet à ce message |
|
|
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 |
|
j0k3r_n0ir Webmaster

Inscrit le: 13 Oct 2004 Messages: 2438 Localisation: Paris ...
|
Posté le: Sam Mai 12, 2007 1:43
Pas de sujet à ce message |
|
|
T'as fait des erreurs "à la con"
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 |
|
|
|
| |
|
|
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
|
|
|