rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

[javascript][php] recherche liste multiple

Posté par rachidaaa, le lundi 25 juin 2007 à 16:12:50
Bonjour à tous,

j'aimerais savoir si quelqu'un pourrait m'aider à réaliser un code en javascript ou php qui permettrait de saisir les premières lettres d'un mot et que le curseur se positionne correctement sur une liste multiple.

Merci d'avance
Configuration: Windows XP
Internet Explorer 7.0
Répondre à rachidaaa  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
rachidaaa, le mercredi 22 août 2007 à 11:53:36
voici un code qui pourrait t'aider.
mais mon problème c'est qu'il sélectionne automatiquement le mot commençant par les lettres que tu saisis et ce à chaque fois que tu saisies une lettre supplémentaire du mot que tu recherches.

Moi j'ai besoin d'un code de ce genre mais sans la sélection. Pour être plus claire, j'ai besoin de saisir les premières lettres d'un mot et la liste multiple doit se positionner sur le premier mot qui commence par les lettres saisies mais sans le sélectionner.

Si qq1 peut m'aider à améliorer mon code pour qu'il réponde à mes besoins ça m'arrangerait.

Merci

Voici le code source :


<html>
<head> <title> recherche rapide en tapant qq lettre d'une chaine se trouvant dans une liste multiple sans recharger la page</title> </head>
<script language="javascript">
/*
* fonction qui cherche un texte dans un tableau
* @return true si le texte est trouvé
* @return false sinon
* @param texte : le texte a chercher
* @param tab1 : le tableau dans lequel on recherche le texte
*
*/
function searchTexteDansTab(tab1,texte)
{
maListe = (document.getElementsByName('candidat[]'))[0]; //le champ select qui nous interesse
trouve = 0; i = 0;
while (i<tab1.length && !trouve) //tant qu'on a pas trouvé et que le parcours du tableau n'est pas fini
{
if(texte!="")
{
var aux=new RegExp ("^"+texte,"i");
if(tab1[i].match(aux))
{
//alert(tab1[i].match(aux)+"___"+texte);
//il faut mettre en subrillance cette entrée dans le champ select du formulaire
var aux2 = i; //alert(aux2);
maListe.options[aux2].selected=true;
trouve=1;
}
}
i++;
}
}


</script>
<body>

<?php
require('../configuration.php');
$link=connexion();
?>
<form name="form1" action="searchListeMultipleSansRecharger.php" method="POST">

<h2><u> Rattachement du candidat sélectionné pour cette mission </u> </h2>
<input type="text" onKeyUp="searchTexteDansTab(nomCandidat,this.value)&quo­t;> <br>
<?php
$chaine = "select c.nom,c.prenom,c.id,f.intitule from candidat as c,formation as f where c.idformation=f.id order by nom asc ";
$req = requeteConsultation($chaine,$link); $nb = mysql_num_rows($req);

echo "<select name='candidat[]' size = '15' multiple> </option>";
for($i=0;$i<$nb;$i++)
{
$nom = mysql_result($req,$i,0); $prenom = mysql_result($req,$i,1); $idCandidat = mysql_result($req,$i,2);$formation = mysql_result($req,$i,3);
$nomCandiat[]=$nom; // on remplit le tableau pour faire une rechercher rapide à l'aide des qq 1ères lettres du nom
echo "<option value='".$idCandidat."' ";
if( !empty($_POST['candidat']) && ($_POST["candidat"] == $idCandidat) ) {echo "SELECTED";}

echo ">".$nom."_".$prenom."__".$­formation."</option>";
}// boucle sur tous les candidats de la base
echo "</select> ";

//transformation variable php en Javascript
$nomCandidat_js = isset($nomCandiat)? php2js($nomCandiat):"''";

?>

<script language="JavaScript">
var nomCandidat = <?php echo $nomCandidat_js; ?>;
</script>

</form>
</body>
</html>
Répondre à rachidaaa

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Alain42, le mercredi 22 août 2007 à 12:11:52
Une solution sans recharger la page.

Ajax/javascript

Sur le onKeyUp de ton champ texte tu appelles une fct Ajax qui lance une requette en arrière plan vers un script PHP qui lira dans la BD les noms commençant par les lettres tapées.
La réponse sous forme d'une liste <select serra chargée dans ta page dans un div avec seulement les noms concernés.
Tu as peut être vu ça lorsque tu recherches sur Google dans la petite fenêtre en haut de ton navigateur.

Pour la solution Ajax vas voir sur Google.

Sinon j'ai un exemple.
Répondre à Alain42

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 rachidaaa, le mercredi 22 août 2007 à 15:18:49
Merci pour ta réponse, ça donne des idées.

J'ai entre temps trouvé ma réponse.

J'ai juste ajouté la ligne qui suit dans mon code pour que ça réponde exactement à ce que je veux:

maListe.options[aux2].selected=false;

juste après la ligne : maListe.options[aux2].selected=true;


de cette façon, je suis à la bonne position dans la liste multiple mais l'entrée n'est pas sélectionnée
Répondre à rachidaaa
Logiciels pertinents trouvés dans les téléchargements
Télécharger PSPad 4.5.2PSPad - PSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS,...Catégorie: Développement
Licence: Freeware/gratuit
Télécharger PeerGuardian 2.0 Beta 6bPeerGuardian - PeerGuardian est un pare-feu (IP blocker) pour Windows. PeerGuardian 2 intègre le support de listes multiples, de mises à...Catégorie: Firewall
Licence: Open Source
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger Firstpage 2006Firstpage - First Page 2006 est un éditeur html gratuit et excellent. Il permet de travailler un code HTML en couleur, ainsi que de...Catégorie: Editeurs HTML
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [javascript][php] recherche liste multiple »