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

Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
- - Dernière réponse : PetoleTeam
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
- 8 juil. 2010 à 19:29
[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 !
Afficher la suite 

20/50 réponses

Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
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...
Commenter la réponse de loicseg
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
et bien ? je ne vois pas ou tu veux (vous voulez) en venir...
Commenter la réponse de loicseg
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
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
Commenter la réponse de loicseg
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
0
Merci
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)
Commenter la réponse de PetoleTeam
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
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 ?
Commenter la réponse de loicseg
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
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
Commenter la réponse de loicseg
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
:S je ne comprend pas ce qui ne va pas
Commenter la réponse de loicseg
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
0
Merci
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)
Commenter la réponse de PetoleTeam
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
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 :'(
Commenter la réponse de loicseg
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
0
Merci
la fonction searchLinks ORIGINALE est celle que je t'ai repris en fin de page 2 de ce post...

;O)
Commenter la réponse de PetoleTeam
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
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
Commenter la réponse de loicseg
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
d'accord pour la fonction originale mais je ne sais pas dans quelle partie de la fonction integrer le compteur
Commenter la réponse de loicseg
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
0
Merci
à 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)
Commenter la réponse de PetoleTeam
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
d'accord mais je ne vois toujours pas ou le mettre jai un if et plusieurs document write....
Commenter la réponse de loicseg
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
le compteur "autour" du if ?
Commenter la réponse de loicseg
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
0
Merci
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)
Commenter la réponse de PetoleTeam
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
dois je utiliser la variable q qui existe deja ?
Commenter la réponse de loicseg
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
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
Commenter la réponse de loicseg
Messages postés
168
Date d'inscription
dimanche 26 février 2006
Statut
Membre
Dernière intervention
30 septembre 2011
0
Merci
vraiment besoin d'aide
je n'y arrive absolument pas
Commenter la réponse de loicseg
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
0
Merci
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)
Commenter la réponse de PetoleTeam