
21/12/2004, 11:54
|
| | Fecha de Ingreso: junio-2004
Mensajes: 101
Antigüedad: 20 años, 9 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 |