Visualizzazione dei risultati da 1 a 7 su 7

Discussione: ricerca più parole

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    5

    ricerca più parole

    Salve,
    ho creato un modulo per la ricerca in banca dati di un documento.
    Però attualmente posso ricercare solo una parola. La mia idea era
    quella che tramite un explode scomponevo la stringa e poi
    nella select facevo un ciclo for però mi da qualche problemino..


    codice:
    $parole = explode(" ", $ricerca);
    $numParole = count($parole);
    
    for($i=0; $i< $numParole; $i++){
    	  	$strA = " or doc_descrizione LIKE '%".$parole[$i]."%' ";
    		$strF .= $strA;
    }
    	$strSQL = "select DOCUMENTI.*, IMM_NOME from DOCUMENTI, IMMAGINI ".
    		  " where doc_imm_id = imm_id ".$strF.
    		  " order by ".$ordina;
    Qualche idea? ragguagli?
    grazie ciao

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    quale problemino? ce lo inventiamo noi o ce lo dici tu?

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    5
    il problema è che la select prende tutti i documenti.

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    potrebbe essere che la tua ricerca soddisfi tutti i documenti?
    hai provato a cercare 2 parole che si trovano solo in un 2 documenti diversi?

    ciao

  5. #5
    Così dovrebbe trovarti tutte le parole richieste:

    codice:
    $parole = explode(" ", $ricerca);
    
    foreach ($parole AS $parola)
       $strA .= " AND doc_descrizione LIKE '%$parola%'";
    
    $strSQL = "select DOCUMENTI.*, IMM_NOME from DOCUMENTI, IMMAGINI ".
      " where doc_imm_id = imm_id ".$strF.
      " order by ".$ordina;

  6. #6
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    vabbè cosi trova solo il documento che contiene tutte le parole.

    ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    5
    non è la più pulita delle select ma ora funziona.

    codice:
    foreach ($parole AS $parola)
       $strA .= " OR doc_descrizione LIKE '%$parola%'";
    
    $strSQL = "select DOCUMENTI.*, IMM_NOME from DOCUMENTI, IMMAGINI ".
    			  " where doc_imm_id = imm_id ".
    			  " and DOC_ID = ANY".
    				  " (select DOC_ID from DOCUMENTI ".
    				  " where DOC_DESCRIZIONE LIKE '' ".$strA." )".
    			  			  
    			  " order by ".$ordina;
    Salute e grazie.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.