Rechercher : dans
Par :

[javascript][php] recherche liste multiple

Dernière réponse le 22 aoû 2007 à 15:18:49 rachidaaa, le 25 jun 2007 à 16:12:50 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [javascript][php] recherche liste multiple » dans :
[PHP] Lister le contenu d'un répertoire VoirGrâce à PHP, il est possible d'afficher le contenu d'un répertoire et de ses sous-répertoires. Voici ci-dessous une fonction permettant de parcourir récursivement les répertoires et sous-répertoires et d'en afficher les fichiers : function...
Supprimer les accents avec PHP VoirPour un tas de raisons, il est parfois utile de convertir un texte accentué en un texte sans accents. Voici une fonction permettant de transformer très simplement la quasi-totalité des accents en leur équivalent non-accentués : function...
Comment utiliser efficacement les moteurs de recherche ? VoirComment utiliser efficacement les moteurs de recherche ? Si Internet représente une masse d'informations colossale, il peut être fastidieux de trouver le renseignement que vous recherchez. Pourtant, il est possible d’optimiser ses requêtes pour...
PHP - Créer un moteur de recherche VoirIdée générale Le moteur de recherche ci-dessous ne correspond qu'à une idée possible de moteur de recherche simple, ne gérant qu'un seul mot clé. Le concept du fonctionnement de ce moteur est de créer une base de donnée contenant les mots clés de...
Javascript - Les chaînes de caractères VoirQu'est-ce qu'une chaîne de caractère Une chaîne de caractère est, comme son nom l'indique, une suite de caractères. On la représente par la suite de caractères encadrée par des guillemets simples (') ou doubles ("), sachant que les deux types de...
Javascript - Implantation du code VoirA quel emplacement insérer le Javascript dans votre page HTML Il existe plusieurs façons d'inclure du JavaScript dans une page HTML : Grâce à la balise En mettant le code dans un fichier Grâce aux événements Dans la balise...

1

rachidaaa, le 22 aoû 2007 à 11:53:36
  • +1

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)"> <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

Alain42, le 22 aoû 2007 à 12:11:52
  • +1

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

 rachidaaa, le 22 aoû 2007 à 15:18:49
  • +1

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