Ver Mensaje Individual
  #12 (permalink)  
Antiguo 21/12/2004, 11:54
aimar_20
 
Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 19 años, 11 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