Moteur de recherche : afficher le nombre de résultats [Résolu]

Signaler
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
[b]Bonjour,
j'ai récupéré le code source d'un moteur de recherche sur un site, que j'ai ensuite adapté pour qu'il soit plus beau, etc...
Cependant, je n'arrive pas à afficher le nombre de résultats trouvés lorsqu'une recherche est effectué. :s
Voici ma source (fichier "bdd.js") :/b


// appel de la fonction principal et formatage de l'apres reponse
function validate_form() {
text = document.form.search.value;
jsi = new makeLinks(linksize);
searchLinks(jsi, text);
document.write("<hr>");
document.write("[ + links[q].URL + " + links[q].Name + "]
");
document.write( links[q].Desc + "
");
document.write("
"+links[q].URL +"

");
document.write("
");
continue;
}
if (links[q].Desc.toLowerCase().indexOf(keyword) != -1) {
document.write("
");
document.write("
[ + links[q].URL + " + links[q].Name + "]
");
document.write( links[q].Desc + "
");
document.write("
"+links[q].URL +"

");
document.write("
");
continue;
}
if (links[q].Name.toLowerCase().indexOf(keyword) != -1) {
document.write("
");
document.write("
[ + links[q].URL + " + links[q].Name + "]
");
document.write( links[q].Desc + "
");
document.write("
"+links[q].URL +"

");
document.write("
");
continue;
}
if (links[q].URL.toLowerCase().indexOf(keyword) != -1){
document.write("
");
document.write("
[ + links[q].URL + " + links[q].Name + "]
");
document.write( links[q].Desc + "
");
document.write("
"+links[q].URL +"

");
document.write("
");
continue;
}
}
}


Merci d'avance pour votre aide qui me sera fort utile !

50 réponses

Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

comment ca je change le contenu de ma fonction ?
searchLinks(jsi, text);

>>>>

searchLinks(links, keyword){


c'est ca ?
c'est pour interagir avec la base de donnée...
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

et bien ? je ne vois pas ou tu veux (vous voulez) en venir...
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Autant j'ai compris pour la fonction validate form (en mm tps ce netait pas compliqué de configurer la variable finalement) autant là... je bloque completement
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
si l'on reprend ton soucis
Cependant, je n'arrive pas à afficher le nombre de résultats trouvés lorsqu'une recherche est effectué.
donc on peut en conclure que ton script, celui que tu as posté en premier, marche correctement.

Le soucis est donc de rajouter le fait de récupérer le nombre d'occurrences trouvées lors de ta recherche, c'est ce que nous avons appelé Total.

Ta fonction de recherche, donc searchLinks, doit pouvoir renvoyer le nombre trouvé, c'est donc dans celle ci qu'il faut que tu incrémente un compteur pour pouvoir le retourner à la fonction appelante, dans ton cas c'est la fonction validate_form.

La fonction appelante, donc validate_form, récupérera donc le fameux Total pour être affiché. Cette fonction est opérationnelle.

Voila...

;O)
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

je pense avoir compris une bonne partie mais maintenant j'ai une erreur alors qu'elle n'etait pas la avant :

function searchLinks(links, keyword){
//-- compteur a zero
var count = 0;
//-- Parcours du tableau
for( var i =0, Max = T_Nombre.length; i < Max; i++){
if( num_ == T_Nombre[i]) // occurrence trouve
count++; // Increment compteur
}
//-- return le compteur
return( count);
}


que dois je faire ?
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

Pardon j'ai copié le mauvais code :

function searchLinks(links, keyword){
//-- compteur a zero
var count = 0;
//-- Parcours du tableau
for( var i =0, Max = Total.length; i < Max; i++){
if( links == Total[i]) // occurrence trouve
count++; // Increment compteur
}
//-- return le compteur
return( count);
}

mais meme comme cela une erreur :s
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

:S je ne comprend pas ce qui ne va pas
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
je ne comprend pas ce qui ne va pas
ce qui ne va pas c'est que tu persistes à utiliser une fonction qui ne correspond à rien, oubli la
...et reprends la fonction du DEBUT comme je te l'ai déjà indiqué.

Mets toi en tête que ce que tu cherches reviens à compter le nombre de lignes que tu écris sur ta page.

Je le répètes cela se passe dans ta fonction ORIGINALE


;O)
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

heu... mais j'utilise la fonction originale...

?? désolé je suis débutant et je ne comprend pas là :s
ca fait un moment que je réfléchis au probléme :'(
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
la fonction searchLinks ORIGINALE est celle que je t'ai repris en fin de page 2 de ce post...

;O)
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

est ce que tu peux etre un petit peu plus explicite ?
sans faire un cour mais expliquer un tout petit peu plus parce que là je nage
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

d'accord pour la fonction originale mais je ne sais pas dans quelle partie de la fonction integrer le compteur
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
à chaque fois qu'une condition IF est remplie, tu fais un document.write, ce qui veut dire que tu as trouvé une occurrence, donc ton compteur doit être incrémenté, c'était l'objet de l'exemple que je t'ai pour la prise en compte de l'incrémentation...

;O)
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

d'accord mais je ne vois toujours pas ou le mettre jai un if et plusieurs document write....
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

le compteur "autour" du if ?
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
le compteur "autour" du if ?
NON dans le if, reprends l'exemple que je t'ai donné et regarde ou il est placé dans la condition...

;O)
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

dois je utiliser la variable q qui existe deja ?
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

si je suis ton exemple je dois avoir ca :

function searchLinks(links, keyword){
var count = 0;

// la ligne d'en-tete de la reponse a la base de donnees
document.write("Tous les résultats de la recherche avec " + keyword + " sur " +

arraycount +" sites répertoriés :

");
for (var q =1; q<=links.length; q++) {
if( links == Total[i])
count++;
}
return( count);
}

mais je dois encore me trompe
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011

vraiment besoin d'aide
je n'y arrive absolument pas
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
13
Bonjour,
Décidément, tu te focalises sur la condition
if( links == Total[i])
qui plus est, ne veut rien dire dans ton contexte
REPRENDS les conditions initiales de ta fonction à savoir
if (links[q].Category.toLowerCase().indexOf(keyword) != -1) {
if (links[q].Desc.toLowerCase().indexOf(keyword) != -1) {
if (links[q].Name.toLowerCase().indexOf(keyword) != -1) {
et
if (links[q].URL.toLowerCase().indexOf(keyword) != -1) {

;O)