Visualizzazione risultati 1 fino 20 di 20

Discussione: semplice modifica ad un modulo di ricerca

  1. #1
    Guest

    Predefinito semplice modifica ad un modulo di ricerca

    Salve, ho messo le mani su un programmino in php che mi permette di fare delle ricerche sul mio sito web in base alla Cartella in cui desidero fare la ricerca, ossia non posso fare una ricerca complessiva su tutte le cartelle... il codice cruciale dovrebbe essere questo:

    Codice PHP:
    #subfolder search options setup starts here

    if($where=="index"){
    $dirtest="true";
    $linkdir="";
    $handle=opendir('.');

    } elseif(
    $where=="abbigliamento"){
    $linkdir="abbigliamento/";
    chdir('./abbigliamento');
    $handle=opendir('.');

    }elseif(
    $where=="alimentazione"){
    $linkdir="alimentazione/";
    chdir('./alimentazione');
    $handle=opendir('.');

    } else {
    $dirtest="true";
    $linkdir="";
    $handle=opendir('.');
    }

    dovrei fare in modo tale da poter dare la possibilità di fare una ricerca su tutte le cartelle... come posso fare? grazie!

  2. #2
    Guest

    Predefinito

    Dovrebbe già fare quello che chiedi, infatti è la prima condizione (il primo if) a indicare di cercare nella root (o cmq la radice dove si trova lo script).

    Forse il problema è nel form di ricerca?
    Prova a postare tutto il materiale che hai.


    Ciaoooo!!!!

  3. #3
    Guest

    Predefinito

    ok vi posto il codice completo... questo è il file col modulo di ricerca utente:

    Codice PHP:
    <form method="POST" action="NEWSEARCH.php">
    <
    TABLE align="center">
    <
    TR>
    <
    TD width="381"><strong>Cerca nella categoria:</strong><br> <br>


    <
    INPUT TYPE=radio name=where value=abbigliamento>
    Abbigliamento<br> <INPUT TYPE=radio name=where value=alimentazione>
    Alimentazione<br> <INPUT TYPE=radio name=where value=arredamento>
    Arredamento<br>

    </
    TD>
    <
    TD width="90" rowspan=3>&nbsp;</TD>
    </
    TR>
    <
    TR>
    <
    TD><strong>Parola chiave: </strong>
    <
    input type="text" name="whatdoreplace" size="25">
    <
    input type="submit" value="Cerca" name="B1"> </TD>
    </
    TR>
    <
    TR>
    <
    TD>&nbsp; </TD>
    </
    TR>
    </
    TABLE>
    </
    FORM>
    questo invece è il file che "lavora" per fare la ricerca:

    Codice PHP:
    <b>Risultati della ricerca</b>
    <hr width="70%">

    <TABLE BORDER="1px" bordercolor="#000000" width=70% CELLPADDING=2 CELLSPACING=0>
    <TR>
    <TD bgcolor="#FFFFCC"><font face=Verdana size=1><b>La ricerca ha prodotto
    i seguenti risultati:</b></font></TD>
    </TR>

    <?Php
    error_reporting
    (0);
    $timex=time();
    $timey=0;
    $bgchange="FFFFFF";
    $fchek=0;
    $command[0]="0";
    $dirtest="false";


    #subfolder search options setup starts here

    if($where=="index"){
    $dirtest="true";
    $linkdir="";
    $handle=opendir('.');

    } elseif(
    $where=="abbigliamento"){
    $linkdir="abbigliamento/";
    chdir('./abbigliamento');
    $handle=opendir('.');

    }elseif(
    $where=="alimentazione"){
    $linkdir="alimentazione/";
    chdir('./alimentazione');
    $handle=opendir('.');

    }elseif(
    $where=="arredamento"){
    $linkdir="arredamento/";
    chdir('./arredamento');
    $handle=opendir('.');



    } else {
    $dirtest="true";
    $linkdir="";
    $handle=opendir('.');
    }


    #thats it, nothing else should be changed do not edit below this line.




    while (($file = readdir($handle))!==false){
    if (
    eregi("[a-zA-Z0-p_-]*.html",$file) or eregi("[a-zA-Z0-p_-]*.htm",$file)or eregi("[a-zA-Z0-p_-]*.php",$file)or eregi("[a-zA-Z0-p_-]*.txt",$file)){
    $fchek=$fchek+1;
    $sizer=filesize($file);
    $sizer=($sizer/1000);
    $sizer=round($sizer,1);
    $file=trim($file);
    $file=chop($file);
    $filed=file($file);
    $fileold=$file;
    $count = count($filed);
    $i = $count;
    $zt = 0;
    $clt=0;
    $found=0;
    $stringer=0;
    for(
    $j=$zt;$j<$i;$j++){
    $string=$filed[$j];
    $stringer=$filed[$j];
    $num = "regPLACE hold";
    $string=strtolower($string);
    $stringer=strtolower($stringer);
    $whatdoreplace=strtolower($whatdoreplace);
    $string = ereg_replace($whatdoreplace, $num, $string);
    if(
    $string!=$stringer){
    $found=$found+1;
    $abby=$found;
    $show[$found]=$stringer;
    }
    }
    $dircount=count($file);
    echo
    "<FONT SIZE=-1>";
    if(
    $found>0){
    $command[0]=($command[0]+10);
    if(
    eregi("[a-zA-Z0-p_-]*.txt",$file)){
    $fileold=$file;
    $file="index.php";
    if(
    $dirtest=="true"){
    $file=$fileold;
    }

    }
    if(
    $file=="index.html"){
    if(
    $bgchange=="EEEEEE"){
    $bgchange="FFFFFF";
    echo
    "</TD></TR><TR><TD BGCOLOR=$bgchange><BR><A HREF=\"$linkdir$file\" >file</A><BR>$data <font face=Verdana size=1>Size: $sizer Kb</font><BR><BR><font face=Verdana size=2>Questa pagina contiene <FONT COLOR=RED><B>$found</B></FONT> volte la parola <FONT COLOR=RED><B>$whatdoreplace</B></FONT>:</font> <UL>";
    } else {
    $bgchange="EEEEEE";
    echo
    "</TD></TR><TR><TD BGCOLOR=$bgchange><BR><A HREF=\"$linkdir$file\" class=cont>$fileold</A> <font face=Verdana size=1>Size: $sizer Kb</font><BR><BR><font size=2 class=testo>Questa pagina contiene <FONT COLOR=RED><B>$found</B></FONT> volte la parola <FONT COLOR=RED><B>$whatdoreplace</B></FONT>:</font> <UL>";
    }
    } elseif(
    $bgchange=="EEEEEE"){
    $bgchange="FFFFFF";
    echo
    "</TD></TR><TR><TD BGCOLOR=$bgchange><BR><A HREF=\"$linkdir$file\">$fileold</A> <font face=Verdana size=1>Size: $sizer Kb</font><BR><BR><font size=2>Questa pagina contiene <FONT COLOR=RED><B>$found</B></FONT> volte la parola <FONT COLOR=RED><B>$whatdoreplace</B></FONT>:</font> <UL>";
    } else {
    $bgchange="EEEEEE";
    echo
    "</TD></TR><TR><TD BGCOLOR=$bgchange><BR><A HREF=\"$linkdir$file\">$fileold</A> <font face=Verdana size=1>Size: $sizer Kb</font><BR><BR><font size=2>Questa pagina contiene <B><FONT COLOR=RED>$found</FONT></B> volte la parola <FONT COLOR=RED><B>$whatdoreplace</B></FONT>:</font> <UL>";
    }
    $file=$fileold;
    for(
    $new=1;$new<=$found;$new++){
    $show[$new]=strip_tags($show[$new]);
    $show[$new] = ereg_replace($whatdoreplace,"<FONT COLOR=RED><B>$whatdoreplace</FONT></B>",$show[$new]);
    echo
    "<FONT SIZE=-1>";
    print
    "<LI>$show[$new]";
    }
    echo
    "</UL></FONT></TD></TR>";
    }

    }
    }

    if(
    $command[0]==0){
    echo
    "<BR></TD></TR><TR><TD bgcolor=000000><CENTER><FONT FACE=VERDANA SIZE=5 color=red><b>Nessuna parola trovata!</b></font></center>";
    }

    echo
    "<BR></TD></TR><TR><TD BGCOLOR=3399ff><LEFT><font face=Veradna size=1><b>Ricerca effettuata su $fchek pagine e in circa ";
    $timey=time();
    $timea=($timey-$timex);
    echo
    " $timea secondi.</b></font></left>";


    ?>
    </TD></TR></TABLE>

    grazie 1000!

  4. #4
    Guest

    Predefinito

    Aggiungi nel form di ricerca quest'altro radiobutton:

    <INPUT TYPE="radio" name="where" value="index">Tutte le cartelle

    Ovviamente puoi personalizzare la voce.


    Ciaooooo!!!!

  5. #5
    Guest

    Predefinito

    il problema è che cosi facendo mi fa la ricerca solo nella ROOT, e non nelle cartelle interne :(
    Io invece dovrei fare la ricerca contemporaneamente su tutte le cartelle interne, esclusa la ROOT

  6. #6
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

    Predefinito

    allora potrai fare così:
    Codice HTML:
    <INPUT TYPE="hidden" name="where" value="index">
    <INPUT TYPE="hidden" name="where" value="cartella1">
    <INPUT TYPE="hidden" name="where" value="cartella2">
    etc...
    in questo modo cerca in tutte le cartelle.

  7. #7
    Guest

    Predefinito

    credo di aver capito... pero' il modulo di ricerca funziona cosi:
    l'utente seleziona la cartella in cui vuole effettuare la ricerca, e qui tutto ok.
    all' utente devo dare anche la possibilità di poter scegliere tramite radio button, di effettuare la ricerca su tutte le cartelle contemporaneamente.

    come posso integrare quello che mi hai scritto nl mio modulo, facendo comparire il radio button?

    grazie 1000

  8. #8
    L'avatar di silverseraph
    silverseraph non è connesso AlterGuru
    Data registrazione
    27-04-2005
    Residenza
    Localhost
    Messaggi
    1,104

    Predefinito

    invece di utilizzare gli input radio, utilizza i checkbox, in modo che l'utente potrà decidere di effettuare la ricerca su più cartelle, quindi anche su tutte.

  9. #9
    Guest

    Predefinito

    ho provato a mettere il CHECKBOX, pero' cè un problema, ossia se cerco in 2 categorie una parola chiave che cè solo in una delle due, mi dice che non ha trovato nessuna parola chiave.

    come si puo' risolvere?

  10. #10
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Prova a modifica l'if in questo modo:
    Codice PHP:
    if($where=="abbigliamento"){
    $linkdir="abbigliamento/";
    chdir('./abbigliamento');
    $handle=opendir('.');

    }elseif(
    $where=="alimentazione"){
    $linkdir="alimentazione/";
    chdir('./alimentazione');
    $handle=opendir('.');

    }elseif(
    $where=="arredamento"){
    $linkdir="arredamento/";
    chdir('./arredamento');
    $handle=opendir('.');



    } else{
    $dirtest="true";
    $linkdir="";
    $handle=opendir('.');

    }
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  11. #11
    Guest

    Predefinito

    ho provato, pero' mi da lo stesso errore di prima, se cerco in 2 categorie una parola chiave che cè solo in una delle due, mi dice che non ha trovato nessuna parola chiave.

  12. #12
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Ho modificato tutto lo script:
    Codice PHP:
    <b>Risultati della ricerca</b>
    <hr width="70%">

    <TABLE BORDER="1px" bordercolor="#000000" width=70% CELLPADDING=2 CELLSPACING=0>
    <TR>
    <TD bgcolor="#FFFFCC"><font face=Verdana size=1><b>La ricerca ha prodotto
    i seguenti risultati:</b></font></TD>
    </TR>

    <?php

    error_reporting
    (0);
    $timex=time();
    $timey=0;
    $bgchange="FFFFFF";
    $fchek=0;
    $command[0]="0";


    #subfolder search options setup starts here

    $dirtest=array();
    $handle=array();
    $linkdir=array();
    if (
    in_array("index",$where)) {
    $dirtest[]="true";
    $linkdir[]="";
    $handle[]=opendir('.');
    }
    if (
    in_array("abbigliamento",$where)) {
    $dirtest[]="false";
    $linkdir[]="abbigliamento/";
    $handle[]=opendir('./abbigliamento');
    }
    if (
    in_array("alimentazione",$where)) {
    $dirtest[]="false";
    $linkdir[]="alimentazione/";
    $handle[]=opendir('./alimentazione');
    }
    if (
    in_array("arredamento",$where)) {
    $dirtest[]="false";
    $linkdir[]="arredamento/";
    $handle[]=opendir('./arredamento');
    }
    if (
    count($dirtest)==0) {
    $dirtest[]="true";
    $linkdir[]="";
    $handle[]=opendir('.');
    }


    #thats it, nothing else should be changed do not edit below this line.


    for($x=0;$x<count($dirtest);$x++) {
    while ((
    $file=readdir($handle[$x]))!==false) {
    if (
    eregi("[a-zA-Z0-p_-]*.html",$file) || eregi("[a-zA-Z0-p_-]*.htm",$file) || eregi("[a-zA-Z0-p_-]*.php",$file) || eregi("[a-zA-Z0-p_-]*.txt",$file)) {
    $fchek=$fchek+1;
    $sizer=filesize($file);
    $sizer=($sizer/1000);
    $sizer=round($sizer,1);
    $file=trim($file);
    $file=chop($file);
    $filed=file($file);
    $fileold=$file;
    $count=count($filed);
    $i=$count;
    $zt=0;
    $clt=0;
    $found=0;
    $stringer=0;
    for(
    $j=$zt;$j<$i;$j++) {
    $string=$filed[$j];
    $stringer=$filed[$j];
    $num="regPLACE hold";
    $string=strtolower($string);
    $stringer=strtolower($stringer);
    $whatdoreplace=strtolower($whatdoreplace);
    $string=ereg_replace($whatdoreplace,$num,$string);
    if (
    $string!=$stringer) {
    $found=$found+1;
    $abby=$found;
    $show[$found]=$stringer;
    }
    }
    $dircount=count($file);
    echo
    "<FONT SIZE=\"-1\">";
    if (
    $found>0) {
    $command[0]=($command[0]+10);
    if (
    eregi("[a-zA-Z0-p_-]*.txt",$file)) {
    $fileold=$file;
    $file="index.php";
    if (
    $dirtest[$x]=="true")
    $file=$fileold;

    }
    if (
    $file=="index.html") {
    if (
    $bgchange=="EEEEEE") {
    $bgchange="FFFFFF";
    echo
    "</TD></TR><TR><TD BGCOLOR=\"{$bgchange}\"><BR><A HREF=\"{$linkdir[$x]}{$file}\">file</A><BR>{$data} <font face=Verdana size=1>Size: {$sizer} Kb</font><BR><BR><font face=Verdana size=2>Questa pagina contiene <FONT COLOR=RED><B>{$found}</B></FONT> volte la parola <FONT COLOR=RED><B>{$whatdoreplace}</B></FONT>:</font> <UL>";
    }
    else {
    $bgchange="EEEEEE";
    echo
    "</TD></TR><TR><TD BGCOLOR=\"{$bgchange}\"><BR><A HREF=\"{$linkdir[$x]}{$file}\" class=cont>{$fileold}</A> <font face=Verdana size=1>Size: {$sizer} Kb</font><BR><BR><font size=2 class=testo>Questa pagina contiene <FONT COLOR=RED><B>{$found}</B></FONT> volte la parola <FONT COLOR=RED><B>{$whatdoreplace}</B></FONT>:</font> <UL>";
    }
    }
    elseif (
    $bgchange=="EEEEEE") {
    $bgchange="FFFFFF";
    echo
    "</TD></TR><TR><TD BGCOLOR=\"{$bgchange}\"><BR><A HREF=\"{$linkdir[$x]}{$file}\">{$fileold}</A> <font face=Verdana size=1>Size: {$sizer} Kb</font><BR><BR><font size=2>Questa pagina contiene <FONT COLOR=RED><B>{$found}</B></FONT> volte la parola <FONT COLOR=RED><B>{$whatdoreplace}</B></FONT>:</font> <UL>";
    }
    else {
    $bgchange="EEEEEE";
    echo
    "</TD></TR><TR><TD BGCOLOR=\"{$bgchange}\"><BR><A HREF=\"{$linkdir[$x]}{$file}\">{$fileold}</A> <font face=Verdana size=1>Size: {$sizer} Kb</font><BR><BR><font size=2>Questa pagina contiene <FONT COLOR=RED><B>{$found}</B></FONT> volte la parola <FONT COLOR=RED><B>{$whatdoreplace}</B></FONT>:</font> <UL>";
    }
    $file=$fileold;
    for(
    $new=1;$new<=$found;$new++) {
    $show[$new]=strip_tags($show[$new]);
    $show[$new]=ereg_replace($whatdoreplace,"<FONT COLOR=RED><B>$whatdoreplace</FONT></B>",$show[$new]);
    echo
    "<FONT SIZE=-1>";
    print
    "<LI>$show[$new]";
    }
    echo
    "</UL></FONT></TD></TR>";
    }
    }
    }

    if(
    $command[0]==0)
    echo
    "<BR></TD></TR><TR><TD bgcolor=000000><CENTER><FONT FACE=VERDANA SIZE=5 color=red><b>Nessuna parola trovata!</b></font></center>";

    echo
    "<BR></TD></TR><TR><TD BGCOLOR=3399ff><LEFT><font face=Veradna size=1><b>Ricerca effettuata su $fchek pagine e in circa ";
    $timey=time();
    $timea=($timey-$timex);
    echo
    " $timea secondi.</b></font></left>";


    ?>
    </TD></TR></TABLE>
    $where deve essere formato da un array che contiene tutte le voci selezionate nelle check box.
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  13. #13
    Guest

    Predefinito

    ho provato, ma quando faccio la ricerca, mi esce fuori un messaggio d'errore:

    Parse error: syntax error, unexpected $end in NEWSEARCH.php
    on line 219 (sarebbe l'ultima riga)

  14. #14
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Ho dimenticato di chiudere una parentesi. Aggiungi una parentesi graffa chiusa prima di:
    Codice PHP:
    if($command[0]==0)
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  15. #15
    Guest

    Predefinito

    ok ora và, pero' mi da dei risultati strani :-/

    praticamente se ne infischia delle categorie che seleziono, e mi fa le ricerche solo sui file della ROOT :-(

  16. #16
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Come assegni a $where i valori delle check box?
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  17. #17
    Guest

    Predefinito

    ehm... non ho assegnato nessun valore... cioè non so come e cosa dovrei fare...

  18. #18
    L'avatar di funcool
    funcool non è connesso Utente storico
    Data registrazione
    05-02-2004
    Residenza
    Qui... Non lì, qui!
    Messaggi
    15,433

    Predefinito

    Nel form devi modificare i primi "input":
    Codice HTML:
    <input type="checkbox" name="abbigliamento" /> Abbigliamento
    <br /><input type="checkbox" name="alimentazione" /> Alimentazione
    <br /><input type="checkbox" name="arredamento" /> Arredamento
    <br /><input type="checkbox" name="index" /> Root
    L'if della pagina in PHP modificalo così:
    Codice PHP:
    if ($_POST['index']==true) {
    $dirtest[]="true";
    $linkdir[]="";
    $handle[]=opendir('.');
    }
    if (
    $_POST['abbigliamento']==true) {
    $dirtest[]="false";
    $linkdir[]="abbigliamento/";
    $handle[]=opendir('./abbigliamento');
    }
    if (
    $_POST['alimentazione']==true) {
    $dirtest[]="false";
    $linkdir[]="alimentazione/";
    $handle[]=opendir('./alimentazione');
    }
    if (
    $_POST['arredamento']==true) {
    $dirtest[]="false";
    $linkdir[]="arredamento/";
    $handle[]=opendir('./arredamento');
    }
    if (
    count($dirtest)==0) {
    $dirtest[]="true";
    $linkdir[]="";
    $handle[]=opendir('.');
    }
    Mattia vi manda a FunCool - Matriz - Directory Gogol - Sfondo rosso per la Birmania
    «Tu mi dai fastidio perché ti credi tanto un Dio!» «Bè, dovrò pur prendere un modello a cui ispirarmi, no?» Woody Allen

  19. #19
    Guest

    Predefinito

    fatto, pero' cè un problema... qualsiasi ricerca che faccio, mi dice "nessuna parola trovata" :-/

  20. #20
    Guest

    Predefinito

    non sono ancora riuscito a far funzionare la modifica.

    qualcuno ha qualche suggerimento? grazie!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •