motore di ricerca avanzato (particolare problematica)

  • Creatore Discussione Creatore Discussione Sargon
  • Data di inizio Data di inizio

Sargon

Utente Attivo
22 Mar 2012
45
0
0
Ciao a tutti!
Scusate se vi disturbo ma ho un quesito da porvi, allora ho un database che fa una ricerca avanzata.

Questo database comprende dei seguenti campi

Autore
Titolo
Anno

Vorrei che il campo autore mi cercasse sia sul campo autore (classico) sia su un altro campo che non dovrò far vedere all'utente (authorprinted) , la stringa di ricerca in sintesi... può essere questa?

$w_author="";
if($author != ""){$w_author=" AND author AND authorprinted LIKE '%".$author."%','%".$authorprinted."%' ";}



Vi ringrazio mooooolto!!!:elvis:
 
Ciao
credo serva mettere OR
Codice:
 AND (authorprinted LIKE '%".$author."%' OR authorprinted LIKE '%".$authorprinted."%')
 
Ciao
credo serva mettere OR
Codice:
 AND (authorprinted LIKE '%".$author."%' OR authorprinted LIKE '%".$authorprinted."%')

niente ..... sono un tordo... quindi ho cercato di tirar fuori un'altro soluzione, ed ho pensato di concatenare due campi. il database è composto
il database e composto da
autore
autore pubblicato
titolo
anno.

realizzato il motore di ricerca ho deciso di inserire un terzo campo fantasma che mi concatena autore ed autore pubblicato, il problema sta che da my sql (php my admin) riesco a creare la funzione, mentre da php no.... vi posto il codice... se potete aiutarmi ve ne sarei grato.

$query="UPDATE bibliografia1 SET autore2='".$author2."', author='".$author."', authorprinted='".$authorprinted."', CONCAT($author, ',' ,$authorprinted)";
 
se il CONCAT lo vuoi salvare in authorprinted la sintassi corretta è

Codice:
 authorprinted =  CONCAT('$author', ' ', '$authorprinted')
 
se il CONCAT lo vuoi salvare in authorprinted la sintassi corretta è

Codice:
 authorprinted =  CONCAT('$author', ' ', '$authorprinted')

Sono blocccato mi affido a voi...:-(
non ne vengo fuori..... in pratica author deve cercare i valori sia sul campo author sia in un campo author printed che non ho messo e non si deve vedere..... Grazie!




PHP:
      <?php 
if(isset($_POST['submit'])){//
    // 
    // 
    $db_host = "";  
    $db_user = "";  
    $db_password = "";  
    $db_name = ""; 
    //
    $db = mysql_connect($db_host, $db_user, $db_password) or die ('Errore durante la connessione');  
    mysql_select_db($db_name, $db) or die ('Errore durante la selezione del db');  
	// 
mysql_set_charset('utf8'); // 
//


    //
    $author = addslashes(trim($_POST['author']));              
	$year = addslashes(trim($_POST['year'])); ; 
	$title = addslashes(trim($_POST['title']));  

 

    //
    $query = "SELECT * FROM bibliografia1 WHERE 1=1 ";//
	
    //
      $w_author=""; 
    if($author!= ""){$w_author=" author LIKE '%".$author."%'";} 
	$w_year=""; 
    if($year != ""){$w_year=" AND year LIKE '%".$year."%' ";} 
	$w_title=""; 
    if($title!=""){$w_title=" AND title LIKE '%".$title."%' ";} 

	
    //
     $query .=$w_author.$w_year.$w_title. " ORDER BY author"; 
 
    // 
    $ris=mysql_query($query) or die ('errore: qualcosa è andato storto'); 
    //
    $esiste=mysql_num_rows($ris); 
   
    if($esiste > 0){ 
        //
        while($riga=mysql_fetch_array($ris)){ 
           $author=stripslashes($riga['author']); 
            $year=stripslashes($riga['year']); 
			$title=stripslashes($riga['title']); 

			
            echo "<table border=\"0\" align=\" justify\" bgcolor=\"#FFFFCC\" width=\"650px\">";
			echo "<b>Author:</b> $author<p>"; 
			echo "<b>Year:</b> $year<p>"; 
			echo "<b>Title:</b> $title<p><br></td><hr>"; 
			
	  echo "</table>";
	
        } 
    }else{ 
        //
        echo "<b><p><p>Sorry, but your query didn't produce any results!</b><hr>"; 
    } 
    echo "<p><a href=\"http://virgo.unive.it/trab/advanced_search1.php\">BACK</a><hr>"; 
}else{ 
//
?>
 
ciao
se non ho caito male quello che vuoi fare, prova in questo nodo

PHP:
<?php 
if(isset($_POST['submit'])){//
//...................
	$author = addslashes(trim($_POST['author']));              
	$year = addslashes(trim($_POST['year'])); ; 
	$title = addslashes(trim($_POST['title']));  
	$w_author="";
	if($author!= ""){$w_author .=" AND author LIKE '%".$author."%'";}
	if($year != ""){$w_year .=" AND year LIKE '%".$year."%'";}
	if($title!=""){$w_title=" AND title LIKE '%".$title."%' ";} 
	$query = "SELECT * FROM bibliografia1 WHERE 1=1 $w_author ORDER BY author";
	$ris=mysql_query($query) or die ('errore: qualcosa è andato storto'); 
	if(mysql_num_rows($ris) > 0){ 
		while($riga=mysql_fetch_array($ris)){ 
			$author=stripslashes($riga['author']); 
			$year=stripslashes($riga['year']); 
			$title=stripslashes($riga['title']); 
			echo "<table border=\"0\" align=\" justify\" bgcolor=\"#FFFFCC\" width=\"650px\">";
			echo "<b>Author:</b> $author<p>"; 
			echo "<b>Year:</b> $year<p>"; 
			echo "<b>Title:</b> $title<p><br></td><hr>"; 
			echo "</table>";
		} 
	}else{ 
		echo "<b><p><p>Sorry, but your query didn't produce any results!</b><hr>"; 
	} 
		echo "<p><a href=\"http://virgo.unive.it/trab/advanced_search1.php\">BACK</a><hr>"; 
}else{ 
	//..........
?>
 
ciao
se non ho caito male quello che vuoi fare, prova in questo nodo

PHP:
<?php 
if(isset($_POST['submit'])){//
//...................
	$author = addslashes(trim($_POST['author']));              
	$year = addslashes(trim($_POST['year'])); ; 
	$title = addslashes(trim($_POST['title']));  
	$w_author="";
	if($author!= ""){$w_author .=" AND author LIKE '%".$author."%'";}
	if($year != ""){$w_year .=" AND year LIKE '%".$year."%'";}
	if($title!=""){$w_title=" AND title LIKE '%".$title."%' ";} 
	$query = "SELECT * FROM bibliografia1 WHERE 1=1 $w_author ORDER BY author";
	$ris=mysql_query($query) or die ('errore: qualcosa è andato storto'); 
	if(mysql_num_rows($ris) > 0){ 
		while($riga=mysql_fetch_array($ris)){ 
			$author=stripslashes($riga['author']); 
			$year=stripslashes($riga['year']); 
			$title=stripslashes($riga['title']); 
			echo "<table border=\"0\" align=\" justify\" bgcolor=\"#FFFFCC\" width=\"650px\">";
			echo "<b>Author:</b> $author<p>"; 
			echo "<b>Year:</b> $year<p>"; 
			echo "<b>Title:</b> $title<p><br></td><hr>"; 
			echo "</table>";
		} 
	}else{ 
		echo "<b><p><p>Sorry, but your query didn't produce any results!</b><hr>"; 
	} 
		echo "<p><a href=\"http://virgo.unive.it/trab/advanced_search1.php\">BACK</a><hr>"; 
}else{ 
	//..........
?>
Niente:-S

Quando nel mio Form scrivo Carlo come autore vorrei che questo interrogasse il campo Autore ed Autore pubblicato, Anno e titolo sono due campi separati.
 
ciao
PHP:
 if($author!= ""){$w_author .=" AND (author LIKE '%".$author."%' OR autore_pubblicato LIKE '%".$author."%')";}

questo se vuoi selectare anche per i campi anno e titolo se imputati

edit
un dubbio author e autore_pubblicato sono nella stessa tabella?
 
Ultima modifica:
ciao
PHP:
 if($author!= ""){$w_author .=" AND (author LIKE '%".$author."%' OR autore_pubblicato LIKE '%".$author."%')";}

questo se vuoi selectare anche per i campi anno e titolo se imputati

edit
un dubbio author e autore_pubblicato sono nella stessa tabella?

FUNZIONAAAAA!!!!!!!!!! GRAZIE MILLLLLEEEE!!!! :cool:
 

Discussioni simili