|    
			
				21/12/2004, 11:54
			
			
			  | 
  |   |  |  |  Fecha de Ingreso: junio-2004 
						Mensajes: 101
					 Antigüedad: 21 años, 4 meses Puntos: 0 |  | 
  |  se me acaba de ocurrir lo siguiente, pero no funciona del todo bien  
  para solucionar la busqueda sin saber el tipo de articulo. he pensado buscar la clave primaria en base a lo q se introduzca. y una vez obtenida esta clave ajena, buscar en cada tabla y si se obtiene un resultado, enlazar esa tabla con la principal y mostrar los resultados.
 He probado, y  funciona bien, si solo hay un resultado con los datos especificados, pero si hay informacion de distintas tablas, no funciona, me dice q no hay resultados. Para solucionarlo, pense en q si entra en journal y ha entrado en book buscar en ambas tablas, pero creo q tampoco funciona.
 
 el error creo q lo tengo en el while xq supongo q solo buscara por el primer idref encontrado.
 
 case 'any':
 $sql="select Id_Reference from reference where 1 ";
 if (!empty($title))	$sql.= "AND Title like '%".$title."%'";
 if (!empty($author)) $sql.= "AND Author like '%".$author."%'";
 $result=mysql_query($sql);
 
 while ($row=mysql_fetch_array($result)) {
 $idref=$row['Id_Reference'];
 //una vez he obtenido el id_reference en cuestión, busco en cada una de las tablas, y si obtengo un resultado es xq funciona correctamente.
 
 //buscamos en la tabla book
 $sqlbook="select * from book b where Id_Reference='$idref'";
 
 $resultbook=mysql_query($sqlbook);
 
 if(mysql_num_rows($resultbook)>0)
 {
 //echo "esta en la tabla book";
 //esta en la tabla book, por lo que ejecuto con la sentencia _pagi_sql;
 $_pagi_sql.=",book b where r.Id_Reference=b.Id_Reference ";
 if (!empty($title))	$_pagi_sql.= "AND r.Title like '%".$title."%'";
 if (!empty($author)) $_pagi_sql.= "AND r.Author like '%".$author."%'";
 }
 //buscamos en la tabla journal
 $sqljournal="select * from journal where Id_Reference='$idref'";
 $resultjournal=mysql_query($sqljournal);
 if(mysql_num_rows($resultjournal)>0)
 {
 //si encontro resultados en book, busco en ambas tablas
 if(mysql_num_rows($resultbook)>0) {
 $_pagi_sql.=",book b, journal j where r.Id_Reference=j.Id_Reference and r.Id_Reference=b.Id_Reference ";
 if (!empty($title))	$_pagi_sql.= "AND r.Title like '%".$title."%'";
 if (!empty($author)) $_pagi_sql.= "AND r.Author like '%".$author."%'";
 }
 else {
 $_pagi_sql.=",journal j where r.Id_Reference=j.Id_Reference ";
 if (!empty($title))	$_pagi_sql.= "AND r.Title like '%".$title."%'";
 if (!empty($author)) $_pagi_sql.= "AND r.Author like '%".$author."%'";
 }
 }
 //buscamos en la tabla conference
 $sqlconference="select * from conference where Id_Reference='$idref'";
 $resultconference=mysql_query($sqlconference);
 if(mysql_num_rows($resultconference)>0)
 {
 $_pagi_sql.=",conference c where r.Id_Reference=c.Id_Reference ";
 if (!empty($title))	$_pagi_sql.= "AND r.Title like '%".$title."%'";
 if (!empty($author)) $_pagi_sql.= "AND r.Author like '%".$author."%'";
 }
 //buscamos en la tabla technical_report
 $sqltechnical="select * from technical_report where Id_Reference='$idref'";
 $resulttechnical=mysql_query($sqltechnical);
 if(mysql_num_rows($resulttechnical)>0)
 {
 $_pagi_sql.=",technical_report t where r.Id_Reference=t.Id_Reference ";
 if (!empty($title))	$_pagi_sql.= "AND r.Title like '%".$title."%'";
 if (!empty($author)) $_pagi_sql.= "AND r.Author like '%".$author."%'";
 }
 //buscamos en la tabla thesis
 $sqlthesis="select * from thesis where Id_Reference='$idref'";
 $resultthesis=mysql_query($sqlthesis);
 if(mysql_num_rows($resultthesis)>0)
 {
 $_pagi_sql.=",thesis th where r.Id_Reference=th.Id_Reference ";
 if (!empty($title))	$_pagi_sql.= "AND r.Title like '%".$title."%'";
 if (!empty($author)) $_pagi_sql.= "AND r.Author like '%".$author."%'";
 }
 //buscamos en la tabla miscellaneous
 $sqlmisc="select * from miscellaneous where Id_Reference='$idref'";
 $resultmiscellaneous=mysql_query($sqlmiscellaneous  );
 if(mysql_num_rows($resultmiscellaneous)>0)
 {
 $_pagi_sql.=",miscellaneous m where r.Id_Reference=m.Id_Reference ";
 if (!empty($title))	$_pagi_sql.= "AND r.Title like '%".$title."%'";
 if (!empty($author)) $_pagi_sql.= "AND r.Author like '%".$author."%'";
 }
 
 }//fin del while
 
 break;
 
 
 Creo q voy por buen camino, pero no se como buscar si hay mas de un resultado q pueda coincidir con los datos introducidos. Como podria reescribir esto para que funcione
 
 Gracias
     |