Moteur de recherche interne

Fermé
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 - 6 mars 2008 à 08:56
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 7 mars 2008 à 11:53
Bonjour,

je fais un moteur de recherche sur js mais j'ai un petit problème quant je fai ma recherche une nouvel page s'ouvre mais je veu pas qu'une nouvel page s'ouvre je veu que ce soit sur la page comme une frame plus bas
voici mon code.

var item = new Array();

// "La page","Son adresse","","Titre de la page","Mot clés","Description de la page"
 
c=0; item[c]=new Array("","index.html","Index EvasionTotale","web, news","index, evasion, totale, home, premiere, page, sommaire","Première page de ce site");
c++; item[c]=new Array("","musique.html","De la musique sur votre site !","web, news","musique, mp3","Voilà une belle page pour mettre de la musique sur votre site !");
c++; item[c]=new Array("","web.html","NEWS DU WEB ?","web, news","Ici vous trouverez toutes l'actualité sur le web .......");

page="<html><head><title>Résultats de la recherche</title></head><body bgcolor='white'><center><table border=0 cellspacing=10 width=80%>";

function search(frm) {
win=window.open("","");
win.document.write(page);
txt = frm.srchval.value.split(" ");
fnd = new Array(); total=0;
for (i = 0; i < item.length; i++) {
fnd[i] = 0; order = new Array(0, 4, 2, 3);
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++) {
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, win, n);
fnd[w] = 0;
}
win.document.write("</table><br>Pages trouvé(s): "+total+"<br></body></html>");
win.document.close();
}
function show(which,wind,num) {
link = item[which][1] + item[which][0]; 
line = "<tr><td><a href='"+link+"'>"+item[which][2]+"</a> <br>";
line += item[which][4] + "<br></td></tr>";
wind.document.write(line);
return 1;
}
 


merci
A voir également:

4 réponses

Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
6 mars 2008 à 10:33
Salut,

c'est normal que cela ouvre une autre page, tu as mis window.open

une piste:

dans ta page html, à l'endroit ou tu veux que s'écrive le résultat tu mets:

<div id="resultat">
</div>

dans ta fonction javascript, tu enleve de ta variable page les balises <html><head><body>

tu t'arranges pour mettre ton titre dans une ligne de la <table>

en fin de fonction JS, tu mets:

document.getElementById('resultat").innerHTML=page;

@lain
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
6 mars 2008 à 10:55
merci je vais testé tous sa :)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
6 mars 2008 à 17:06
un truc dans ce gout là:

var item = new Array();

// "La page","Son adresse","","Titre de la page","Mot clés","Description de la page"
 
c=0; item[c]=new Array("","index.html","Index EvasionTotale","web, news","index, evasion, totale, home, premiere, page, sommaire","Première page de ce site");
c++; item[c]=new Array("","musique.html","De la musique sur votre site !","web, news","musique, mp3","Voilà une belle page pour mettre de la musique sur votre site !");
c++; item[c]=new Array("","web.html","NEWS DU WEB ?","web, news","Ici vous trouverez toutes l'actualité sur le web .......");

page="Résultats de la recherche:<table border=0 cellspacing=10 width=80%>\n";

function search(frm,id_ecrire) {
txt = frm.srchval.value.split(" ");
fnd = new Array(); total=0;
for (i = 0; i < item.length; i++) {
	fnd[i] = 0;
		order = new Array(0, 4, 2, 3);
		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++) {
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, win, n);
fnd[w] = 0;
}
page+="</table><br>Pages trouvé(s): "+total+"<br>\n";
//ecriture du result dans la page
document.getElementbyId[id_ecrire].innerHTML=page;
}
function show(which,wind,num) {
link = item[which][1] + item[which][0]; 
page+= "<tr><td><a href='"+link+"'>"+item[which][2]+"</a> <br>";
page+= item[which][4] + "<br></td></tr>\n";

return 1;
}

<body>

l'appel de la fct JS:  search(....,'resultat')

a l'endroit ou tu veux ecrire le resultat:

<div id="resultat">

</div>

</body>
</html>
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
7 mars 2008 à 11:10
salut j'ai fai comme tu ma dit mai là j'ai un petit problème je te onte mon code html

là c'est mon appel
 
<SCRIPT LANGUAGE="JavaScript" SRC="moteur.txt">
</SCRIPT>


et là mon body
 
<body>

<p align="center">Votre moteur de recherche &agrave; inserer : </p>
<TABLE WIDTH="141" BORDER=0 align="center" CELLPADDING=0 CELLSPACING=0>
<TR>

<TD 

<center>
<form method=get action="javascript:void(0)" onsubmit="search(moteur.txt,'resultat'); return false;">

<table width="143">
<tr><td valign="middle" align="center" width="151">

    <p align="center">
    <input type=text name=srchval value="" size="18">
    <input type=submit value="Votre recherche">
    </p>
  <td>
  </td>
  <center>
</form>
</center>
</table>
<div align="center">
<div id="resultat">
</div>
</body>


je tien a te signalé que je débute donc soit indulgent stp car je sui sur que c'est une erreure bidon merci déjà pour tou ce que tu a fait
0
sinifer Messages postés 312 Date d'inscription mardi 12 février 2008 Statut Membre Dernière intervention 12 mars 2013 11
7 mars 2008 à 11:20
enffette quant je met

search(....,'resultat')
^
||
ce qui va là c'est la première partie de mon frame??
et resultat sera la deuxième ???

ou je mélange tous?
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
7 mars 2008 à 11:53
Par cette methode, on ne travaille pas avec des frames.

Tu as des erreurs dans ton HTML


et dans tes tables c'est pas bon.

Essayes comme ça, je n'ai pas testé.
<body>

<p align="center">Votre moteur de recherche &agrave; inserer : </p>




<form method="get" action="javascript:void(0)" onsubmit="search(moteur.txt,'resultat'); return false;">
<table WIDTH="141" BORDER="0" align="center" CELLPADDING="0" CELLSPACING="0">
<tr>
    <td>Saisie:</td><td  width="151"><input type="text" name="srchval" value="" size="18"></td>
</tr>
<tr>	
   <td colspan="2" align="center"><input type="submit" name="recherche" value="Votre recherche"></td>
</tr>
</table>
</form>
<br>
<div align="center" id="resultat">
</div>

</body>



si ton script JS est le link du début, ton appel de fct JS n'est pas bon

search(moteur.txt,'resultat');
Le premier parametre moteur.tx ne doit pas être le nom du fichier qui contient la fonction mais la valeur à rechercher.

et mis entre '
0