Accedi per seguire   
Seguaci 0
spiug

Motore Di Ricerca Interno

16 messaggi in questa discussione

Ho realizzato, modificando qualche script da cui ho preso qualche leggero spunto un motore interno al sito (senza alcun bisogno di un database).

Funziona magnificamente (molte migliorie possono starci solo che bene, ma se non altro fa il suo dovere)...però c'è un piccolo problema di ripetizione nei risultati quando vado a ricercare più parole

In pratica basterebbe che io riesca ad eliminare i doppioni dall'array di array che ho come risultato...

Vi posto tutto il codice così capite meglio (ma vi metto in evidenza dove stà il problema):

 <?php 

function RicercaMetaFile ($dd) {
global $PHP_SELF;
global $SERVER_NAME;
$extensions=array("HTM","HTML","ASP","PHP","PHP3","PHP4","htm","html","asp","php","php3","php4");
$file_esclusi=array("index.php","index.htm");
if(isset($_GET["parola"])){
  $parole_cercate=explode(" ",$_GET["parola"]);
 $n_parole=count($parole_cercate);}
else $n_parole=0;
 $n_risultati=0;  // inizializzo il numero dei risultati
 $risultati=array();
for($i=0;$i<$n_parole;$i++) {
 $dir = opendir($dd);  // apro la directory
 while($file = readdir($dir)) {   // leggo tutti i file contenuti nella directory specificata
  if ($file!="."){	// controllo che il file 
if(!is_dir($file)) {  // controllo che il file non sia una cartella
  /*echo $file."<br>";*/
  $ss=explode(".",$file);  // l'array ss prende il nome del file in ss[0] e l'estensione in ss[1]
  $tr=(count($ss)-1);   // la variabile tr prende il numero di campi di ss -1   
  $ext=$ss[$tr];	// mi trovo l'estensione del file
  $n=explode(".$ext", $file); // tolgo all'intero nome del file (nome.ext) l'estensione
  $n=$n[0];	 // mi trovo il nome (senza estensione) del file
  if (in_array($ext,$extensions) && !in_array($file,$file_esclusi)) { // controllo che l'estensione del file sia tra le estensioni ammesse e  escludo i file contenuti nella directory che non sono guide
   // da quà mi ricreo il link al file
   $aa=explode("/",$PHP_SELF);  
   $a1=$aa[(count($aa)-1)];  // nome del file aperto (la pagina visualizzata)
   $a2=explode($a1,$PHP_SELF);  // mi trovo il percorso fino alla pagina visualizzata
   $file2=str_replace(" ","%20",$file); // sostituisco tutti gli spazi vuoti con %20 (spazio) del nome del file
   $linkFile="[url="http://%22.$server_name.$a2[0].$dd.$file2/"]http://".$SERVER_NAME.$a2[0].$dd.$file2[/url];
   $ff=join('',file($linkFile)); // unisco '' con il file in [url="http://nome_host.ext($server_name)/percorso($a2[0])/nome_file_mod.ext($file2"]http://nome_host.ext($SERVER_NAME)/percorso($a2[0])/nome_file_mod.ext($file2[/url]). In pratica faccio una copia del testo contenuto nel file X e la salvo su ff
   // da quà cerco il Titolo della pagina trovata
   $t=explode("<TITLE>",$ff); // prendo il titolo della pagina e lo salvo su t
   $t1=explode("</TITLE>",$t[1]); // continuato di sopra
   if ($t1[0]==''){ // controllo che il titolo ci sia, se non c'è probabilmente il tag de titolo è stato scritto in minuscolo e quindi rifaccio l'operazione di prelevamento del titolo
	$t=explode("<title>",$ff); // continuato di sopra
	$t1=explode("</title>",$t[1]);// continuato di sopra
   }
   $inizio_titolo_da_togliere="Le GUIDE di Symbian FREE: ";
   if (substr($t1[0],0,strlen($inizio_titolo_da_togliere))==$inizio_titolo_da_togliere) $t1[0]=substr($t1[0],strlen($inizio_titolo_da_togliere));
   // da quà cerco il DC.title della pagina trovata
   $dct=explode("<META NAME='DC.Title' CONTENT='",$ff); // prendo il titolo della pagina e lo salvo su t
   $dct1=explode("'>",$dct[1]); // continuato di sopra
   if ($dct1[0]==''){
	$dct=explode("<META NAME=\"DC.Title\" CONTENT=\"",$ff); // prendo il titolo della pagina e lo salvo su t
	$dct1=explode("\">",$dct[1]); // continuato di sopra // controllo che il titolo ci sia, se non c'è probabilmente il tag de titolo è stato scritto in minuscolo e quindi rifaccio l'operazione di prelevamento del titolo
   }
   // da quà cerco il Description della pagina trovata
   $des=explode("<META NAME='description' CONTENT='",$ff); // prendo il titolo della pagina e lo salvo su t
   $des1=explode("'>",$des[1]); // continuato di sopra
   if ($des1[0]==''){ // controllo che il titolo ci sia, se non c'è probabilmente il tag de titolo è stato scritto in minuscolo e quindi rifaccio l'operazione di prelevamento del titolo
	$des=explode("<META NAME=\"description\" CONTENT=\"",$ff); // prendo il titolo della pagina e lo salvo su t
	$des1=explode("\">",$des[1]); // continuato di sopra
   }
   // da quà prendo le KeyWords della pagina trovata
   $kw=explode("<META NAME='keywords' CONTENT='",$ff); // prendo il titolo della pagina e lo salvo su t
   $kw1=explode("'>",$kw[1]); // continuato di sopra
   if ($kw1[0]=='') {
	$kw=explode("<META NAME=\"keywords\" CONTENT=\"",$ff); // prendo il titolo della pagina e lo salvo su t
	$kw1=explode("\">",$kw[1]); // continuato di sopra
   }		
   $KWords=split('[ ,]',$kw1[0]);
   $KWords1=array_filter($KWords);

   if(substr_count($t1[0],$parole_cercate[$i]) || substr_count($dct1[0],$parole_cercate[$i]) || substr_count($des1[0],$parole_cercate[$i]) || in_array($parole_cercate[$i],$KWords1)) {
	//nuovo_risultato=array(title,dc,descr,tag_keywords,nome_file,link_al_file)
	$buffer=array("n"=>1,"title"=>$t1[0],"dctitle"=>$dct1[0],"description"=>$des1[0],"keywords"=>$KWords1,"name_file"=>$file2,"link_file"=>$linkFile);
	array_push($risultati, $buffer);
	$n_risultati++;	// aumento il numero di risultati trovati
   } 
  }
}
  }
 }
 closedir($dir);
}

------------------------------------------------------------- DA QUA' -----------------------------------------------------
if ($n_parole>1) { 
// elimino i doppioni e incremento il numero delle parole a cui fanno da risultato
$ris_eliminare=array();
for($i=0; $i<$n_risultati-1; $i++)
 for($j=$i+1; $j<$n_risultati-1; $j++) {
if(!strcmp($risultati[$j]["name_file"], $risultati[$i]["name_file"])) {
 $risultati[$j]["n"] += $risultati[$i]["n"];
 array_push($ris_eliminare,$i);
}
break 1;
 }

// elimino gli array da eliminare perchè doppioni  
for($j=0; $j<(count($ris_eliminare)); $j++)
 unset($risultati[$ris_eliminare[$j]]);	 
}

------------------------------------------------------------- A QUA' -----------------------------------------------------

if ($n_parole>1) {
// OPZIONALE: ordino gli array il base al N di parole soddisfatte
 for($i=0; $i<$n_risultati-1; $i++) {
  $i_max=$i;
  for($j=0; $j<$n_risultati; $j++)
if($risultati[$j]["n"] < $risultati[$i]["n"])
 $i_max=$j;
  if($i_max!=$i)
$tmp=$risultati[$j];
$risultati[$j]=$risultati[$i];
$risultati[$i]=$tmp;
 }
}

return $risultati;
}
?>


Mi sono scervellato a lungo...provandolo a mente a me sembrerebbe funzionare...eppure...boh

eccovi la pagina in cui ho inserito questo script:

http://www.symbianfree.it/ricerca.php?paro...risultati_guide

:sigh: :sigh: ...ci sono tutti i doppioni e il Numero di parole soddisfatte rimane sempre a 1 <_<

Se qualcuno ha gentilemente un attimo (forse anche 2) gliene sarei riconoscentissimo!!

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ciao,

ho dato un'occhiata al tuo codice...ti scrivo cosa secondo me non va...

------------------------------------------------------------- DA QUA' -----------------------------------------------------
if ($n_parole>1) { 
// elimino i doppioni e incremento il numero delle parole a cui fanno da risultato
$ris_eliminare=array();
for($i=0; $i<$n_risultati-1; $i++)

Fino a qui mi sembra tutto ok

 for($j=$i+1; $j<$n_risultati; $j++) {

devi togliere il -1 altrimenti non scorre all'array fino alla fine (oppure lascia così, ma metti come condizione $j<=$n_risultati)

if(!strcmp($risultati[$j]["name_file"], $risultati[$i]["name_file"])) {
 $risultati[$j]["n"] += $risultati[$i]["n"];
 array_push($ris_eliminare,$i);
}
 }

togli il break perchè altrimenti non scansioni tutti gli elementi

// elimino gli array da eliminare perchè doppioni  
for($j=0; $j<(count($ris_eliminare)); $j++)
 unset($risultati[$ris_eliminare[$j]]);	 
}

------------------------------------------------------------- A QUA' -----------------------------------------------------

Tutto OK.

Spero di esserti stato chiaro ed utile, cmq se hai ancora problemi cercherò di analizzare meglio il codice...

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

devi togliere il -1 altrimenti non scorre all'array fino alla fine (oppure lascia così, ma metti come condizione $j<=$n_risultati)

Forse hai ragione...il codice era come dicevi te (senza il -1) ma l'avevo aggiunto per qualche motivo che non ricordo + :P

.

.

.

ah, si! Perchè sicuramente nel primo for l'ultimo dopo di se non avrà sicuramente doppioni (perchè l'array è finito)! :P

Però in effetti non ha senso nel secondo for...devo rimodificare come hai detto te :wub:

Comunque non è quello il problema...non funzionava anche prima.

togli il break perchè altrimenti non scansioni tutti gli elementi

Eh no!

Non posso toglierlo!

Se le ripetizioni sono più di 2 mi combina un pasticcio perchè somma anche quella volta il n della 3 occorrenza dell'elemento preso in considerazione. Potrei utilizzare un flag da inserire nell'IF...ma tanto è inutile che vada avanti una volta che ha trovato una sua copia!

Tanto poi più avanti la stessa copia cercherà se c'è un'altra copia nel restante array da scorrere.

Potevo fare in modo di utilizzare un ciclo while al posto del secondo for che avesse la stessa funzione del break (mettendo quindi la condizione d'uscita nella parte controllo e non nel corpo del ciclo)...ma è uguale!

Spero di esserti stato chiaro ed utile, cmq se hai ancora problemi cercherò di analizzare meglio il codice...

:)

Per ora il problema rimane...ma ti ringrazio lo stesso perchè sei stato gentilissimo!

Sei hai un'attimo e riesci a capire l'inghippo te ne sarò riconoscente!

Io è da qualche settimana (quando ho una attimo libero...e sono pochi!) che ci penso...ma non riesco a cavare il ragno dal buco...eppure logicamente a me sembrerebbe funzionare!

Prendo ogni elemento (i) partendo dal primo elemento (un sottoarray) e controllo se quelli dopo di lui (j) sono una sua copia.

Appena trovo la copia sommo il numero di presenze di questo elemento nel N della copia ed elimino l'elemento che avevo preso in considerazione (i) e vado a rifare lo stesso procedimento con il prossimo elemento (i+1) fino al penultimo (l'ultimo ovviamente non avrà sicuramente dopo di sè copie di sè stesso).

Quindi dovrebbero rimanermi tutti elementi diversi aventi nel campo N il numero di occorrenze di se stessi nel vettore di origine.

Spero che abbiate capito come stò tentando di struttuare la funzione e spero che abbiate capito la logica (io mi sono spiegato meglio che avessi potuto).

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ciao,

purtroppo non ho ancora "inquadrato" il problema...

ho provato a costruire un codice di esempio ricreando una struttura dati simile alla tua...

ecco il codice:

  $risultati=array();
  $risultati[0]=array("nome_file"=>"1.php","n"=>1);
  $risultati[1]=array("nome_file"=>"1.php","n"=>1);
  $risultati[2]=array("nome_file"=>"2.php","n"=>1);
  $risultati[3]=array("nome_file"=>"1.php","n"=>1);
  $risultati[4]=array("nome_file"=>"3.php","n"=>1);
  $risultati[5]=array("nome_file"=>"2.php","n"=>2);
  $risultati[6]=array("nome_file"=>"3.php","n"=>1);
  $n_risultati=7;
  $ris_eliminare=array();
  echo "prima ordinamento<br>";
  for($j=0; $j<(count($risultati)); $j++)
	if (isset($risultati[$j]))
	  echo "$j - ".$risultati[$j]["nome_file"]." - Occorrenze:".$risultati[$j]["n"]."<br>";
  echo "dopo ordinamento<br>";
  sort($risultati);
  for($j=0; $j<(count($risultati)); $j++)
	if (isset($risultati[$j]))
	  echo "$j - ".$risultati[$j]["nome_file"]." - Occorrenze:".$risultati[$j]["n"]."<br>";
  for($i=0; $i<$n_risultati-1; $i++)
	{
	  if(!strcmp($risultati[$i]["nome_file"], $risultati[$i+1]["nome_file"] )) {
		 $risultati[$i+1]["n"]+=$risultati[$i]["n"];
		 unset($risultati[$i]);
		 echo "eliminare $i<br>";
	  }
	}
  echo "dopo eliminazione rimangono: ".count($risultati)."<br>";
  for($j=0; $j<($n_risultati); $j++)
	if (isset($risultati[$j]))
	  echo "$j - ".$risultati[$j]["nome_file"]." - Occorrenze:".$risultati[$j]["n"]."<br>";

come puoi vedere se tu metti il break, allora è inutile utilizzare due for annidati...basta uno solo e considerare l'elemento successivo...per fare questo però l'array deve essere ordinato...per questo ho pensato alla operazione più semplice la sort...

In più faccio l'unset degli elementi dell'array direttamente nell'if della strcmp, se non hai esigenze particolari ti conviene fare così: meno variabili allocate e una scasione in meno di un array...

Prova questo codice....vedi se può essere utile...

:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

come puoi vedere se tu metti il break, allora è inutile utilizzare due for annidati...basta uno solo e considerare l'elemento successivo...per fare questo però l'array deve essere ordinato...per questo ho pensato alla operazione più semplice la sort...

Non è detto che sia esattamente quello dopo, perciò non posso controllare solo il successivo!

Però se fosse ordinato...

...mi sà che seguirò il tuo consiglio, ovvero prima ordino e poi elimino (adesso è il contrario).

Ti saprò dire se funziona.

In più faccio l'unset degli elementi dell'array direttamente nell'if della strcmp, se non hai esigenze particolari ti conviene fare così: meno variabili allocate e una scasione in meno di un array...

:)

Inizialmente avevo fatto come dici te, ma poi l'ho separato per vedere se effettivamente trovava qualcosa da eliminare...ma l'array $ris_eliminare mi rimane sempre vuoto! :P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ma essendo un array di array il sort và comunque bene??

In che modo me li ordina?? Per che campo (o chiave)??

Non sarebbe meglio usare un array_multisort??

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ti consiglio di utilizzare usort in questo modo:

dichiara una funzione dove specifichi il campo da ordinare:

function cmp($a, $b) 
{
return strcmp($a["nome_file"], $b["nome_file"]);
}

Ora utilizza la usort specificando il campo di ordinamento:

  usort($risultati, "cmp");

Prova così perchè l'array_multisort vuole in ingresso un array che tu non hai...

Fammi sapere...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Non mi funziona l'usort... :)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

mmm..mi sembra strano...fammi vedere il codice della pagina...magari mettilo in un file di testo come allegato...

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
mmm..mi sembra strano...fammi vedere il codice della pagina...magari mettilo in un file di testo come allegato...

:wub: ...sistemato, ora l'ordinamento funziona!! :)

...però ci sono ancora problemi (degli spazi vuoti) :P

Appena ho un attimo vedrò di sistemare. :P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
:wub: ...sistemato, ora l'ordinamento funziona!! :)

Sono felicissimo che l'ordinamento sia OK...

...però ci sono ancora problemi (degli spazi vuoti) :P

Ho dato un occhiata alla pagina ed ho cercato di analizzare gli errori ed i risultati...

Da quanto ho potuto capire l'errore si verifica perchè provi a stampare una riga della matrice che ormai non esiste più...

Questo problema nasce perchè unset dealloca la memoria, ma dato che si tratta di un array gli altri elementi non vengono "ricompattati"...lo puoi vedere perchè se esegui count($risultati) dopo aver deallocato alcuni elementi il risultato non cambia...

Ti consiglio quindi di controllare ogni elemento dell'array, prima della stampa, con la funzione isset cioè...

for($j=0; $j<(count($risultati));$j++)
  {
	if (isset($risultati[$j]))
	foreach ($risultati[$j] as $key => $value) {
	   echo "$j - $key - $value<br>";
	  }
  }

L'importante è che controlli tutti gli elementi $j<(count($risultati)) e non il numero di quelli eventualmente rimasti...

Spero di essere stato chiaro e di aver azzeccato il problema...comunque non esistare a chiedere ancora...

:P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Ecco il codice, ora perfettamente funzionante e migliorato (ho aggiunto alla fine un ordinamento per il numero delle parole soddisfatte).

Come input ($dd) avrà bisogno solo del percorso relativo dal php_self (ovvero dallo script che incormpora questo script). Per vedere il risultato di questo script potete andare quà:

http://www.symbianfree.it/ricerca.php?paro...tuito+nokia+sis

Il codice lo metto a vostra completa disposizione per chi volesse utilizzarlo. Se intendete farlo e ritenete sia giusto fare qualche miglioramento non esitate a condividere le vostre migliori capacità con tutti gli altri programmatori di PHP.

 <?php 

function cmp_link($a, $b){
return strcmp($a["link_file"], $b["link_file"]);
}

function cmp_n($a, $b){
if ($a["n"] < $b["n"]) return 1;
if ($a["n"] > $b["n"]) return -1;
return 0;
}

function RicercaMetaFile ($dd) {
global $PHP_SELF;
global $SERVER_NAME;
$extensions=array("HTM","HTML","ASP","PHP","PHP3","PHP4","htm","html","asp","php","php3","php4");
$file_esclusi=array("index.php","index.htm");
if(isset($_GET["parola"])){
  $parole_cercate=explode(" ",$_GET["parola"]);
 $n_parole=count($parole_cercate);}
else $n_parole=0;
 $n_risultati=0;  // inizializzo il numero dei risultati
 $risultati=array();
for($i=0;$i<$n_parole;$i++) {
 $dir = opendir($dd);  // apro la directory
 while($file = readdir($dir)) {   // leggo tutti i file contenuti nella directory specificata
  if ($file!="."){	// controllo che il file 
if(!is_dir($file)) {  // controllo che il file non sia una cartella
  /*echo $file."<br>";*/
  $ss=explode(".",$file);  // l'array ss prende il nome del file in ss[0] e l'estensione in ss[1]
  $tr=(count($ss)-1);   // la variabile tr prende il numero di campi di ss -1   
  $ext=$ss[$tr];	// mi trovo l'estensione del file
  $n=explode(".$ext", $file); // tolgo all'intero nome del file (nome.ext) l'estensione
  $n=$n[0];	 // mi trovo il nome (senza estensione) del file
  if (in_array($ext,$extensions) && !in_array($file,$file_esclusi)) { // controllo che l'estensione del file sia tra le estensioni ammesse e  escludo i file contenuti nella directory che non sono guide
   // da quà mi ricreo il link al file
   $aa=explode("/",$PHP_SELF);  
   $a1=$aa[(count($aa)-1)];  // nome del file aperto (la pagina visualizzata)
   $a2=explode($a1,$PHP_SELF);  // mi trovo il percorso fino alla pagina visualizzata
   $file2=str_replace(" ","%20",$file); // sostituisco tutti gli spazi vuoti con %20 (spazio) del nome del file
   $linkFile="[url="http://%22.$server_name.$a2[0].$dd.$file2/"]http://".$SERVER_NAME.$a2[0].$dd.$file2[/url];
   $ff=join('',file($linkFile)); // unisco '' con il file in [url="http://nome_host.ext($server_name)/percorso($a2[0])/nome_file_mod.ext($file2"]http://nome_host.ext($SERVER_NAME)/percorso($a2[0])/nome_file_mod.ext($file2[/url]). In pratica faccio una copia del testo contenuto nel file X e la salvo su ff
   // da quà cerco il Titolo della pagina trovata
   $t=explode("<TITLE>",$ff); // prendo il titolo della pagina e lo salvo su t
   $t1=explode("</TITLE>",$t[1]); // continuato di sopra
   if ($t1[0]==''){ // controllo che il titolo ci sia, se non c'è probabilmente il tag de titolo è stato scritto in minuscolo e quindi rifaccio l'operazione di prelevamento del titolo
	$t=explode("<title>",$ff); // continuato di sopra
	$t1=explode("</title>",$t[1]);// continuato di sopra
   }
   $inizio_titolo_da_togliere="Le GUIDE di Symbian FREE: ";
   if (substr($t1[0],0,strlen($inizio_titolo_da_togliere))==$inizio_titolo_da_togliere) $t1[0]=substr($t1[0],strlen($inizio_titolo_da_togliere));
   // da quà cerco il DC.title della pagina trovata
   $dct=explode("<META NAME='DC.Title' CONTENT='",$ff); // prendo il titolo della pagina e lo salvo su t
   $dct1=explode("'>",$dct[1]); // continuato di sopra
   if ($dct1[0]==''){
	$dct=explode("<META NAME=\"DC.Title\" CONTENT=\"",$ff); // prendo il titolo della pagina e lo salvo su t
	$dct1=explode("\">",$dct[1]); // continuato di sopra // controllo che il titolo ci sia, se non c'è probabilmente il tag de titolo è stato scritto in minuscolo e quindi rifaccio l'operazione di prelevamento del titolo
   }
   // da quà cerco il Description della pagina trovata
   $des=explode("<META NAME='description' CONTENT='",$ff); // prendo il titolo della pagina e lo salvo su t
   $des1=explode("'>",$des[1]); // continuato di sopra
   if ($des1[0]==''){ // controllo che il titolo ci sia, se non c'è probabilmente il tag de titolo è stato scritto in minuscolo e quindi rifaccio l'operazione di prelevamento del titolo
	$des=explode("<META NAME=\"description\" CONTENT=\"",$ff); // prendo il titolo della pagina e lo salvo su t
	$des1=explode("\">",$des[1]); // continuato di sopra
   }
   // da quà prendo le KeyWords della pagina trovata
   $kw=explode("<META NAME='keywords' CONTENT='",$ff); // prendo il titolo della pagina e lo salvo su t
   $kw1=explode("'>",$kw[1]); // continuato di sopra
   if ($kw1[0]=='') {
	$kw=explode("<META NAME=\"keywords\" CONTENT=\"",$ff); // prendo il titolo della pagina e lo salvo su t
	$kw1=explode("\">",$kw[1]); // continuato di sopra
   }		
   $KWords=split('[ ,]',$kw1[0]);
   $KWords1=array_filter($KWords);

   if(substr_count($t1[0],$parole_cercate[$i]) || substr_count($dct1[0],$parole_cercate[$i]) || substr_count($des1[0],$parole_cercate[$i]) || in_array($parole_cercate[$i],$KWords1)) {
	//nuovo_risultato=array(title,dc,descr,tag_keywords,nome_file,link_al_file)
	$buffer=array("n"=>1,"title"=>$t1[0],"dctitle"=>$dct1[0],"description"=>$des1[0],"keywords"=>$KWords1,"name_file"=>$file2,"link_file"=>$linkFile);
	array_push($risultati, $buffer);
	$n_risultati++;	// aumento il numero di risultati trovati
   } 
  }
}
  }
 }
 closedir($dir);
}

if ($n_parole>1) { 
 usort($risultati, "cmp_link"); // ORDINO I RISULTATI

 // elimino i doppioni e incremento il numero delle parole a cui fanno da risultato
 $ris_eliminare=array(); 
 for($i=0; $i<$n_risultati-1; $i++) {
	   if(!strcmp($risultati[$i]["link_file"], $risultati[$i+1]["link_file"] )) {
		  $risultati[$i+1]["n"]+=$risultati[$i]["n"];
		  unset($risultati[$i]);
	   }
 }	   

 $risultati2=array();
 foreach ($risultati as $ris_valido)
  if (isset($ris_valido)) array_push($risultati2,$ris_valido);

 // OPZIONALE, ordina i risultati per il numero di parole soddisfatte 
 usort($risultati2, "cmp_n"); // ORDINO I RISULTATI
}

return $risultati2;
}
?>

Per ora non funziona SE non gli si passa alcuna parola da cercare...presto sistemerò pure questo piccolo inconveniente :wub:

PS: LILLO85 FOR PRESIDENT!! :P

Finalmente grazie a te funziona tutto come volevo!!! :P:)

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Per ora non funziona SE non gli si passa alcuna parola da cercare...presto sistemerò pure questo piccolo inconveniente ;)

Si tratta di mettere qualche piccolo controllo...niente di particolare!

PS: LILLO85 FOR PRESIDENT!! :P

Finalmente grazie a te funziona tutto come volevo!!! :P:)

Sono felice di essere stato utile :wub: ....

Comunque se hai ancora problemi non esistare a chiedere.... :P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Si tratta di mettere qualche piccolo controllo...niente di particolare!

Si si, lo sò...è che non ho ancora avuto il tempo di ottimizzare il codice...

Comunque se hai ancora problemi non esistare a chiedere.... :wub:

CONTACI!! ;)

:):P:P

Già ho scassato Yuri (aka Bug) con le mie domande...ora ho trovato un altro valido bersaglio! ;-)

.

.

.

.

.

Scherzo ovviamente...di problemi ne ho sempre...ma evito di stare a chiedere agli altri la soluzione...di solito pensandoci un po' di più riesco a trovare da me la soluzione! :P

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un utente registrato per partecipare

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!


Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.


Accedi Ora
Accedi per seguire   
Seguaci 0