Moteur de recherche en javascript

[Résolu]
Signaler
Messages postés
38
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
18 mars 2009
-
Messages postés
38
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
18 mars 2009
-
Bonjour à tous,

J'ai recement trouvé un script sur ce site qui n'est autre qu'un moteur de recherche en javascript. Je l'ai adopté et modifié à ma guise et ça marche.
A présent, je voudrias créer une 2e recherche similaire mais avec des checkbox (voir le code plus bas) C'est à dire, qu'en cochant zero, une ou plusieurs cases j'obtienne un résultat. C'est bien là où ça coince!!! Je ne pense pas que cela soit très difficile à obtenir en ayant déjà la base. J'essaye depuis lundi, j'ai cherché sur le net, etc, mais je n'y arrive pas (mes connaissances en la matière sont très limités, dsl)
Voilà le script:
<html><head>
<meta http-equiv= "Content-Type" content="text/html; charset=windows-1252">
<title>Va chercher!!!</title>
<script language="JavaScript">
<!--
/*là c'est facile: mes variables*/
var item = new Array();c=0; item[c]=new Array("Corine","[mailto:corine@hotemail.com","chatain","bleu","80 corine@hotemail.com","chatain","bleu","80] kg","12","Bruxelles","Très sympa");
c++; item[c]=new Array("Cécile","[mailto:cecile@hotmail.com","blonde","marron","70 cecile@hotmail.com","blonde","marron","70] kg","11","Paris","super gentille et bien avenante");
c++; item[c]=new Array("Jeanne","[mailto:jeanne@hotmail.com","brune","vert","65 jeanne@hotmail.com","brune","vert","65] kg","12","Lille","nous étions au lycée ensemble");



/*Voilà la fonction qui ne marche pas. Je n'ai même pas réussi à la faire marcher avec une seule des trois colonnes de la recherche...*/
function valider(choisir) {
txt = frm.srchval.value.split(" ");
fnd = new Array(); total=0;
document.write("<html><head><title>Résultats de la recherche</title></head><center>Nom, email, Cheveux, Yeux, Poids, Etudes, Ville, Commentaire, \");
for (i = 0; i < item.length; i++) {
fnd[i] = 0; order = new Array(0, 1, 2, 3, 4, 5, 6, 7);
for (j = 0; j < order.length; j++)
for (k = 0; k < txt.length; k++)
if (item[i][order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != \"\")
fnd[i] += (j+1);
}
for (i = 0; i < fnd.length; i++) {
 if (i%2 == 0) couleur=\"#FFFFFF\"; else couleur=\"#CCCCCC\";n 0; w -1;
for (j = 0;j < fnd.length; j++)
if (fnd[j] > n) { n = fnd[j]; w = j; };
if (w > -1) total += show(w, document, n);
fnd[w] = 0;
}
document.write("

Pages trouvé(s): "+total+"
</html>");
document.close();
}



/*La fonction qui marche (c'est à dire la 2e) en tappant kg, on obtient tous les résultats*/
function search(frm) {
txt = frm.srchval.value.split(" ");
fnd = new Array(); total=0;
document.write("<html><head><title>Résultats de la recherche</title></head><center>Nom, email, Cheveux, Yeux, Poids, Etudes, Ville, Commentaire, \");
for (i = 0; i < item.length; i++) {
fnd[i] = 0; order = new Array(0, 1, 2, 3, 4, 5, 6, 7);
for (j = 0; j < order.length; j++)
for (k = 0; k < txt.length; k++)
if (item[i][order[j]].toLowerCase().indexOf(txt[k]) > -1 && txt[k] != \"\")
fnd[i] += (j+1);
}
for (i = 0; i < fnd.length; i++) {
 if (i%2 == 0) couleur=\"#FFFFFF\"; else couleur=\"#CCCCCC\";n 0; w -1;
for (j = 0;j < fnd.length; j++)
if (fnd[j] > n) { n = fnd[j]; w = j; };
if (w > -1) total += show(w, document, n);
fnd[w] = 0;
}
document.write("

Pages trouvé(s): "+total+"
</html>");
document.close();
}



/*que ce soit avec une ou l'autre des fonctions, je crée tjs le même tableau*/
function show(which,document,num) {
link = item[which][1];
line = "<tr><TD VALIGN='top' BGCOLOR='"+couleur+"'> "+item[which][0] + " </td>";
line + = "<TD VALIGN='top' BGCOLOR='"+couleur+"'>" + ""+link+"" + "</td>";
line += "<TD VALIGN='top' BGCOLOR='"+couleur+"'>" + item[which][2] + "</td>";
line += "<TD VALIGN='top' BGCOLOR='"+couleur+"'>" + item[which][3] + "</td>";
line += "<TD VALIGN='top' BGCOLOR='"+couleur+"'>" + item[which][4] + "</td>";
line += "<TD VALIGN='top' align='center' BGCOLOR='"+couleur+"'>" + item[which][5] + "</td>";
line += "<TD VALIGN='top' align='center' BGCOLOR='"+couleur+"'>" + item[which][6] + "</td>";
line += "<TD VALIGN='top' BGCOLOR='"+couleur+"'>" + item[which][7] + "</td></tr>";



document.write(line.replace(/11/gi, 'Elle a le bac').replace(/12/gi,'Elle n\'a pas le bac'));
return 1;
}
//-->
</script>
</head>









<form id='choisir' name='choisir' method=get action="javascript:void(0)" onSubmit="valider(this); return false;">



Cheveux,
Yeux,
Etudes,

----

Brune

Blonde

Châtaigne

Rousse,

Vert

Marron

Bleue,
  Bac +

  Pas le bac

,

</form>



<center>
<form id=frm method=get action="javascript:void(0)" onsubmit="search(this); return false;">

</form>
</center>
</html>

Merci en avance pour votre aide.

2 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Bonjour,
dans ta fonction valider tu passes en paramétre choisir que tu n'utilises pas par la suite et qui plus est tu mets
txt = frm.srchval.value.split(" ");
donc tu vas chercher ce qu'il y a dans le INPUT type text, tout ou presque faux...;0)

Première chose à faire il te faut récupérer les valeurs des checkbox cochés, pour ce faire tu parcours les éléments de la form et si ils sont checked tu stockes les value dans une string
en code cela donne cela dans une fonction par exemple
//--------------------------
function Recup_Choix( this_){
  var szRetour ="";




  //-- parcours les elements






  for( var i = 0; i < this_.elements.length; i++){
    var O_Elem = this_.elements[i];





    //-- stock les values si checked






    if( O_Elem.checked)
      szRetour + = O_Elem.value +" "
  }





  //-- retourne la chaine, cela pourrait etre un tableau






  return( szRetour);
}
au retour il te suffit de spliter la chaîne et de ne rien changé au reste, sauf le début de la fonction...





//-----------------------





function valider( this_r){
  var txt = Recup_Choix( this_);
  txt = txt.split(" ");



le reste ne change pas...
à toi d'adapter




;0)
Messages postés
38
Date d'inscription
mercredi 28 novembre 2007
Statut
Membre
Dernière intervention
18 mars 2009

Merci pour l'aide! Etant debutant, j'ai aussi exploré d'autres possibilités (sans jamais avoir un resultat positif concret, quand même) Je vais tester ce soir ou demain. Merci encore