Bonsoir bonsoir tout le monde.

Alors voilà mon petit probléme :

J'ai construit un site entièrement Offline, jusqu'à présent, tout baignait pour le mieux sauf que voilà quelques jours que j'essaye de mettre une système de recherche intra site en restant Offline.

Mon but est d'avoir le bouton de recherche sur une page avec les résultats rangés à la suite, le plus pertinent en premier bien sur.

Se serait une recherche qui s’effectuerait dans le contenu de pages différentes.
Ex' : Page "testrecherche.php3" qui cherche dans "test1.php3" et "test2.php3".

Petit détail, je suis en ".php3" sur toutes mes pages.

J'ai testé des dossiers tout prêt comme "blork_engine_023b", "j-web easy search v1.1", "moteured10php", "xsearch-5.2.2000.7.20f" et quelques codes comme :

<script type"text/javascript">
function trouverMots(chaine)
{
document.getElementById('rechDsPg').value = '';
var ouvrirBalise = '<span style="background-color: ';
var frmOvrBalise = ';">';
var fermerBalise = '</span>';
var doc = document.body.innerHTML;
var j = 0;
var arrayClrs = new Array("#FFFF00", "#66FFFF", "#33FF33", "#3333FF", "#FF9900", "#FF33FF", "#CCFF00", "#FF0000");
tablMots = chaine.split(' ');
rchSupp = new RegExp( '(' + ouvrirBalise + '[^><]*>)' , 'gi');
doc = doc.replace(rchSupp, '');
rchSupp = new RegExp( '(' + fermerBalise + ')' , 'gi');
doc = doc.replace(rchSupp, '');
for (i = 0; i < tablMots.length; i++)
{
if (j >= arrayClrs.length) {j = 0;}
if (tablMots[i] != '' && tablMots[i].length > 2)
{
rch = new RegExp( '(' + tablMots[i] + ')' , 'gi');
ouvrBalise = ouvrirBalise + arrayClrs[j] + frmOvrBalise;
doc = doc.replace(rch, ouvrBalise + '$1' + fermerBalise);
j += 1;
}
}
document.body.innerHTML = doc;
}
</script> 

<input id="rechDsPg" type="text" value="" name="rechDsPg" />
<input type="button" onClick="trouverMots(document.getElementById('rechDsPg').value);" value="OK">


Pour ce qui est des dossiers tout préts, j'ai des lignes de codes complétes d'erreurs, je ne comprends pas, est ce le format ".php3" qui pose probléme ? Est ce le Offline ?
Une chose est sur, ce que j'ai trouvé de mieux et c'est malheureux à dire, c'est ce morceau de code.

J'utilise DreamWeaver CS4 en mode "codeur".

Merci d'avance pour votre réponse.

Amicalement

K-gouille[/i][/i][/i]
Modifié par K-gouille (01 Oct 2012 - 18:33)
Le code que tu donnes effectue une recherche exacte sur le/les mot(s) entrés dans le champ de recherche et mes les occurrences de chaque mot recherché et trouvé dans ta page en surbrillance.
Mais ça ne semble pas être le comportement décris que tu recherches.

Le plus simple pour ça serait d'utiliser l'API Web Search de Google restreinte à ton site : https://developers.google.com/web-search/docs/
Mais j'ai beau lire et relire, ce script proposé par Google est pour une utilisation en ligne ?
Hors je souhaite resté complétement hors ligne avec mon site.


Edit' : Oui voilà, merci Jb_gfx Smiley cligne
Modifié par K-gouille (01 Oct 2012 - 18:31)
Je viens d'en trouver un, le voilà :
<html>
<head>

<link rel="stylesheet" type="text/css" href="style-moteur.css">

<? if (isset($search)) {$titre = "Recherche de $search";} else {$titre = "Moteur de recherche du site";} ?>

<TITLE>Jeunes Webmasters :: <? echo("$titre"); ?> ::</TITLE>

</head>
<body>

<table border="0" width="100%" cellspacing="0" cellpadding="2" bgcolor="#CC99FF">
<tr>
<td width="100%" bgcolor="#EFDFFF">
<center>
<form method="POST" name="form" action="moteur-recherche.php">
Rechercher : <input type="text" name="search" value="<? if(isset($search)) {echo("$search");} else {echo("Mots clés");} ?>" onFocus="if (this.value=='Mots clés') {this.value=''}">
<input type="submit" value="Valider" name="submit" onClick="this.value='Patientez...';">
</form>
</center>
</td>
</tr>
</table>
<br>

<?

if (isset($search)) {

$getpages = 0;
if ($search == "") { $search = "........"; }

echo("Résultats pour la requête <b>$search</b> :<br><br>");

$search = str_replace("<", "", $search);
$search = str_replace(">", "", $search);
$search = str_replace("\'", "'", $search);
$search = str_replace("_", " ", $search);
$search = str_replace("&", "et", $search);

$search = str_replace("é", "e", $search);
$search = str_replace("è", "e", $search);
$search = str_replace("ë", "e", $search);
$search = str_replace("ê", "e", $search);
$search = str_replace("à", "a", $search);
$search = str_replace("ä", "a", $search);
$search = str_replace("â", "a", $search);
$search = str_replace("ü", "u", $search);
$search = str_replace("ù", "u", $search);
$search = str_replace("û", "u", $search);
$search = str_replace("ô", "o", $search);
$search = str_replace("ö", "o", $search);
$search = str_replace("î", "i", $search);
$search = str_replace("ï", "i", $search);
$search = strtolower($search);

$rep = opendir(".");

while ($file = readdir($rep))
{
if ($file != '..' && $file !='.' && $file !='' && $file !='moteur-recherche.php' && (substr_count($file, ".htm") || substr_count($file, ".html") || substr_count($file, ".php3")))
{

$lecture = fopen("$file", "r");
$fichier_a_lire = fread($lecture, filesize("$file"));
$tagged = $fichier_a_lire;
fclose($lecture);

$fichier_a_lire = strip_tags($fichier_a_lire);
$fichier_a_lire = str_replace("é", "e", $fichier_a_lire);
$fichier_a_lire = str_replace("è", "e", $fichier_a_lire);
$fichier_a_lire = str_replace("ë", "e", $fichier_a_lire);
$fichier_a_lire = str_replace("ê", "e", $fichier_a_lire);
$fichier_a_lire = str_replace("à", "a", $fichier_a_lire);
$fichier_a_lire = str_replace("ä", "a", $fichier_a_lire);
$fichier_a_lire = str_replace("â", "a", $fichier_a_lire);
$fichier_a_lire = str_replace("ü", "u", $fichier_a_lire);
$fichier_a_lire = str_replace("ù", "u", $fichier_a_lire);
$fichier_a_lire = str_replace("û", "u", $fichier_a_lire);
$fichier_a_lire = str_replace("ô", "o", $fichier_a_lire);
$fichier_a_lire = str_replace("ö", "o", $fichier_a_lire);
$fichier_a_lire = str_replace("î", "i", $fichier_a_lire);
$fichier_a_lire = str_replace("ï", "i", $fichier_a_lire);
$fichier_a_lire = strtolower($fichier_a_lire);

if (eregi($search,$fichier_a_lire)) {
$getpages++;

$titre_page = str_replace(".htm", "", $file);
$titre_page = str_replace(".html", "", $titre_page);
$titre_page = str_replace(".php3", "", $titre_page);
$titre_page = strtolower($titre_page);
$titre_page = ucwords($titre_page);

$lataille = strlen($search);
$passage = strpos($fichier_a_lire, $search);
$nb_affich = substr_count($fichier_a_lire, $search);
$passage = substr($fichier_a_lire, $passage, 150);
$passage = wordwrap($passage, 80, "<br>");
$passage = str_replace($search, "<b>$search</b>", $passage);

echo("<img border=\"0\" src=\"puce.gif\"> <a href=\"$file\">$titre_page</a></b> - [$nb_affich fois]</a><br><font color=\"#666666\"><i>$passage</i></font><br><a href=\"$file\">$file</a> - <a class=\"menu\" href=\"moteur-recherche.php?search=$titre_page\"><font size=\"1\">Pages similaires</font></a><br><br>");

}

}

}
closedir($rep);
clearstatcache();
}

if (($getpages == 0) && isset($search)) {
echo("Pas de résultats...");
}
?>

</body>
</html>


Et voilà le résultat sur ma page :

http://img15.hostingpics.net/thumbs/mini_415741AlsaCreation.jpg

Je suis à bout d'idée là.
Je m'attendais vraiment à quelque chose d'aussi simple que le bon vieu controle find.

Help me !!!! Smiley lol
Par défaut, si tu restes en offline, tu ne pourras pas utiliser PHP à moins d'utiliser un programme qui émule le comportement d'un serveur avec PHP installé (EasyPHP, WAMP, etc...).

Là, si je regarde l'adresse de ta page, tu as juste fait 'aperçu dans le navigateur' avec dream donc forcément tout ton code PHP ne sera pas pris en compte.
Ce que je comprends pas, c'est pourquoi c'est le seul code qui m’embête.

Tout les autres, même php, je peux les faire marcher...

Mais celui là fait le rebelle Smiley langue

Donc si quelqu'un avait une super solution à me donner pour intégrer cette petite barre de recherche qui recherche sur la page en question, se serait troooooooop beau Smiley lol

Et non, je n'ai pas fait juste apperçu avec Dream'. Je modifie avec Dream', sauvergarde puis ensuite j'ouvre ma page d'Accueil et me balade sur mon site offline.
D'accord, ça revient presque au même.
Mais c'est le but, lire ce site avec un navigateur comme n'importe quel site mais même sans internet ^^
Bonjouuuuuur tout le monde Smiley smile

Voilà déjà quelques jours de passés, je ne trouve pas de réponses à mon probléme.

Mais en revanche j'ai étudié une autre solution :
faire un raccourci vers le "CTRL F".

Donc voici ce que j'ai trouvé :

<button onClick="find()">Rechercher</button>

<a href="#" onClick="find()">Rechercher</a>


Les deux marchent trés bien, mais seulement sur Firefox, j'aimerai que se soit aussi le cas sous Chrome.

Ou alors un truc de ce style là avec une barre de recherche, se serait même mieux.
Mais je n'arrive pas à l'adapter à mon site, ça ne marche pas, rien ne se passe.

http://www.dynamicdrive.com/dynamicindex11/findpage.htm
<script>
<!-- Hide from old browsers

/******************************************
* Find In Page Script -- Submitted/revised by Alan Koontz (alankoontz@REMOVETHISyahoo.com)
* Visit Dynamic Drive (http://www.dynamicdrive.com/) for full source code
* This notice must stay intact for use
******************************************/

//  revised by Alan Koontz -- May 2003

var TRange = null;
var dupeRange = null;
var TestRange = null;
var win = null;


//  SELECTED BROWSER SNIFFER COMPONENTS DOCUMENTED AT
//   http://www.mozilla.org/docs/web-developer/sniffer/browser_type.html
 

var nom = navigator.appName.toLowerCase();
var agt = navigator.userAgent.toLowerCase();
var is_major   = parseInt(navigator.appVersion);
var is_minor   = parseFloat(navigator.appVersion);
var is_ie      = (agt.indexOf("msie") != -1);
var is_ie4up   = (is_ie && (is_major >= 4));
var is_not_moz = (agt.indexOf('netscape')!=-1)
var is_nav     = (nom.indexOf('netscape')!=-1);
var is_nav4    = (is_nav && (is_major == 4));
var is_mac     = (agt.indexOf("mac")!=-1);
var is_gecko   = (agt.indexOf('gecko') != -1);
var is_opera   = (agt.indexOf("opera") != -1);


//  GECKO REVISION

var is_rev=0
if (is_gecko) {
temp = agt.split("rv:")
is_rev = parseFloat(temp[1])
}


//  USE THE FOLLOWING VARIABLE TO CONFIGURE FRAMES TO SEARCH
//  (SELF OR CHILD FRAME)

//  If you want to search another frame, change from "self" to
//  the name of the target frame:
//  e.g., var frametosearch = 'main'

//var frametosearch = 'main';
var frametosearch = self;


function search(whichform, whichframe) {

//  TEST FOR IE5 FOR MAC (NO DOCUMENTATION)

if (is_ie4up && is_mac) return;

//  TEST FOR NAV 6 (NO DOCUMENTATION)

if (is_gecko && (is_rev <1)) return;

//  TEST FOR Opera (NO DOCUMENTATION)

if (is_opera) return;

//  INITIALIZATIONS FOR FIND-IN-PAGE SEARCHES

if(whichform.findthis.value!=null && whichform.findthis.value!='') {

       str = whichform.findthis.value;
       win = whichframe;
       var frameval=false;
       if(win!=self)
{

       frameval=true;  // this will enable Nav7 to search child frame
       win = parent.frames[whichframe];

}

    
}

else return;  //  i.e., no search string was entered

var strFound;

//  NAVIGATOR 4 SPECIFIC CODE

if(is_nav4 && (is_minor < 5)) {
   
  strFound=win.find(str); // case insensitive, forward search by default

//  There are 3 arguments available:
//  searchString: type string and it's the item to be searched
//  caseSensitive: boolean -- is search case sensitive?
//  backwards: boolean --should we also search backwards?
//  strFound=win.find(str, false, false) is the explicit
//  version of the above
//  The Mac version of Nav4 has wrapAround, but
//  cannot be specified in JS

 
        }

//  NAVIGATOR 7 and Mozilla rev 1+ SPECIFIC CODE (WILL NOT WORK WITH NAVIGATOR 6)

if (is_gecko && (is_rev >= 1)) {
   
    if(frameval!=false) win.focus(); // force search in specified child frame
    strFound=win.find(str, false, false, true, false, frameval, false);

//  The following statement enables reversion of focus 
//  back to the search box after each search event 
//  allowing the user to press the ENTER key instead
//  of clicking the search button to continue search.
//  Note: tends to be buggy in Mozilla as of 1.3.1
//  (see  www.mozilla.org)  so is excluded from users 
//  of that browser.

    if (is_not_moz)  whichform.findthis.focus();

//  There are 7 arguments available:
//  searchString: type string and it's the item to be searched
//  caseSensitive: boolean -- is search case sensitive?
//  backwards: boolean --should we also search backwards?
//  wrapAround: boolean -- should we wrap the search?
//  wholeWord: boolean: should we search only for whole words
//  searchInFrames: boolean -- should we search in frames?
//  showDialog: boolean -- should we show the Find Dialog?


}

 if (is_ie4up) {

  // EXPLORER-SPECIFIC CODE revised 5/21/03

  if (TRange!=null) {
	  
   TestRange=win.document.body.createTextRange();
 
	  

   if (dupeRange.inRange(TestRange)) {

   TRange.collapse(false);
   strFound=TRange.findText(str);
    if (strFound) {
        //the following line added by Mike and Susan Keenan, 7 June 2003
        win.document.body.scrollTop = win.document.body.scrollTop + TRange.offsetTop;
        TRange.select();
        }


   }
   
   else {

     TRange=win.document.body.createTextRange();
     TRange.collapse(false);
     strFound=TRange.findText(str);
     if (strFound) {
        //the following line added by Mike and Susan Keenan, 7 June 2003
        win.document.body.scrollTop = TRange.offsetTop;
        TRange.select();
        }



   }
  }
  
   if (TRange==null || strFound==0) {
   TRange=win.document.body.createTextRange();
   dupeRange = TRange.duplicate();
   strFound=TRange.findText(str);
    if (strFound) {
        //the following line added by Mike and Susan Keenan, 7 June 2003
        win.document.body.scrollTop = TRange.offsetTop;
        TRange.select();
        }

   
   }

 }

  if (!strFound) alert ("String '"+str+"' not found!") // string not found

        
}
// -->
</script>

<!--  EXAMPLE FORM OF FIND-IN-PAGE SEARCH USING SUBMIT (ALLOWING 'ENTER/RETURN' KEY PRESS EVENT) -->
<form name="form1" onSubmit="search(document.form1, frametosearch); return false"><input type="text" name="findthis" size="15" title="Press 'ALT s' after clicking submit to repeatedly search page"> <input type="submit" value="Find in Page" ACCESSKEY="s"></form>


Merci d'avance pour votre aide.

:)
Modifié par K-gouille (12 Nov 2012 - 12:23)
Hello,

J'ai déjà testé CECI en local et ça fonctionne Smiley smile .
Tu peux naturellement adapter la source à ta sauce ..., car ce n'est pas du PHP3.

Cordialement,

lddsoft

Désolé, je crois que j'ai lu ta demande un peu trop rapidement. Le script dont je parle vise une recherche sur tout un site.
Modifié par lddsoft (12 Nov 2012 - 17:05)