Foros del Web » Programando para Internet » PHP »

Busqueda de datos entre barias tablas en php

Estas en el tema de Busqueda de datos entre barias tablas en php en el foro de PHP en Foros del Web. tengo el siguiente formulario: buscador.html Código HTML: <body> <h1> Catalogo de busqueda </h1> <form action= "resultados.php" method= "post" > elige tipo de busqueda: <br> <select ...
  #1 (permalink)  
Antiguo 15/04/2009, 23:15
 
Fecha de Ingreso: abril-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Pregunta Busqueda de datos entre barias tablas en php

tengo el siguiente formulario:
buscador.html
Código HTML:
<body>

<h1>Catalogo de busqueda </h1>
<form action="resultados.php" method="post">
elige tipo de busqueda:<br>
<select name="tipobusqueda">
<option value="serial">Serial</option>
<option value="autor">Autor</option>
<option value="titulo">Titulo</option>
<option value="isbn">ISBN</option>
</select>
<br>
escribe termino de busqueda:<br>
<input name="terminobusqueda" type="text">
<br>
<input type="submit" value="Buscar">
</form>
</body>
</html> 
en php: resultados.php
Código PHP:
<body>
<h1>Reultado de la busqueda </h1>
<?php
trim
($terminobusqueda);
if (!
$tipobusqueda || !$terminobusqueda)
{
    echo 
"no has introduciodo los detalles de la busqueda. por favor vuelve e intentalo de nuevo.";
    exit;
}
$tipobusqueda addslashes($tipobusqueda);
$terminobusqueda addslashes($terminobusqueda);

 
$dbmysql_pconnect("localhost","usuario","contraseña");

    if (!
$db)
    {
    echo 
"Error: no se ha podido conectar a la base de datos. por favor, prueba de nuevo mas tarde.";
    exit;
    }

mysql_select_db("libreria");
//-----------------------------------------------------------------
$consulta="select * from libros where ".$tipobusqueda." like '%".$terminobusqueda."%'";
//--------------------------------------------------------------

$resultado=mysql_query($consulta);
$num_resultados=mysql_num_rows($resultado);

?>
<div align="center">
     <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
        <TR><TD>&nbsp;Serial</TD>
            <TD>&nbsp;Titulo</TD>
            <TD>&nbsp;Autor&nbsp;</TD>
            <TD>&nbsp;ISBN&nbsp;</TD>            
            <TD>&nbsp;&nbsp;</TD>
            <TD>&nbsp;&nbsp;</TD>
  </TR>
<?php

echo "<p>Numeros de libros encontrados: ".$num_resultados."</p>";

while(
$row mysql_fetch_array($resultado)) {
 
printf("<tr>
 <td>&nbsp;%s</td>
 <td>&nbsp;%s&nbsp;</td>
 <td>&nbsp;%s&nbsp;</td>
 <td>&nbsp;%s&nbsp;</td>
 <td><a href=\"Modificar.php?id=%d\">Modificar</a></td>
 <td><a href=\"borrar.php?id=%d\">Borrar</a></td>
 </tr>"
$row["serial"],$row["titulo"],$row["autor"],$row["isbn"],$row["serial"],$row["serial"]);

}
mysql_free_result($resultado);
mysql_close();
?>
</TABLE>
</div>
</body>

El codigo esta diseñado solo para consultar en una sola tabla que es libros. Mi pregunta es:

Como hago para que me busque de esta manera en varias tablas?


Gracias de antemano

Última edición por joseac; 15/04/2009 a las 23:30
  #2 (permalink)  
Antiguo 15/04/2009, 23:52
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Busqueda de datos entre barias tablas en php

Hola joseac, cómo vas??

Bueno para hacer lo que necesitas, lo mas fácil es crear una array con las tablas a buscar y recorrerlo:

Código php:
Ver original
  1. $tablas = array("libros", "tablaa", "tablab", "tablac");
  2. foreach($tablas as $tabla)
  3. {
  4. $consulta="select * from $tabla where ".$tipobusqueda." like '%".$terminobusqueda."%'";
  5. $resultado=mysql_query($consulta);
  6. $num_resultados=mysql_num_rows($resultado);
  7. //bla bla bla xD
  8. }

Tienes que tener presente que este tipo de operaciones puede (cuando tu DB sea muy grande) presentar problemas. Ya es una cuestión de optmización de consultas ;)

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
  #3 (permalink)  
Antiguo 17/04/2009, 01:22
 
Fecha de Ingreso: abril-2009
Mensajes: 4
Antigüedad: 15 años
Puntos: 0
Respuesta: Busqueda de datos entre barias tablas en php

Cita:
Iniciado por Carxl Ver Mensaje
Hola joseac, cómo vas??

Bueno para hacer lo que necesitas, lo mas fácil es crear una array con las tablas a buscar y recorrerlo:

Código php:
Ver original
  1. $tablas = array("libros", "tablaa", "tablab", "tablac");
  2. foreach($tablas as $tabla)
  3. {
  4. $consulta="select * from $tabla where ".$tipobusqueda." like '%".$terminobusqueda."%'";
  5. $resultado=mysql_query($consulta);
  6. $num_resultados=mysql_num_rows($resultado);
  7. //bla bla bla xD
  8. }

Tienes que tener presente que este tipo de operaciones puede (cuando tu DB sea muy grande) presentar problemas. Ya es una cuestión de optmización de consultas ;)

Saludos
Hola Carxl!,

jojojo en verdad gracias por tu el codigo, fue interesante analizarlo y ver como corre de esta manera.

Noté que para que el codigo funcionara, las tablas en si tenian que ser iguales, es decir, los mismos números y nombres de los campos. Es como una copia de la tabla1 con que se crea la tabla2 por ejemplo.

teniendo en cuenta la ejemplo de la busqueda anterior
Cita:
$consulta="select * from libros where ".$tipobusqueda." like '%".$terminobusqueda."%'";
¿Como se puede hacer para que me consulte por ejemplo la tabla1 y la tabla2 teniendo los campos diferentes entre ellos.??

Ejemplo

tabla1
campos: serial, direccion, cod postal.

Tabla2
campos: pais, ciudad

gracias.

Última edición por joseac; 17/04/2009 a las 01:48
  #4 (permalink)  
Antiguo 17/04/2009, 08:02
Avatar de Carxl
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: Bogotá
Mensajes: 2.993
Antigüedad: 17 años, 8 meses
Puntos: 70
Respuesta: Busqueda de datos entre barias tablas en php

Hola Joseac, cómo vas?

Pues bueno, para lo que necesitas, formas hay muchas, las mas sencilla y simple:

Código php:
Ver original
  1. $tipobusqueda = NULL;
  2.     $tablas = array("libros", "tablaa", "tablab", "tablac");
  3.     foreach($tablas as $tabla)
  4.     {
  5.         if($tabla == "libros")
  6.         $tipobusqueda = "algo...";
  7.         else if($tabla == "tablaa")
  8.         $tipobusqueda = "algo mas";
  9.         else if($tabla == "tablab")
  10.         $tipobusqueda = "algo mas mas";
  11.         //bla bla bla...
  12.         $consulta="select * from $tabla where ".$tipobusqueda." like '%".$terminobusqueda."%'";
  13.         $resultado=mysql_query($consulta);
  14.         $num_resultados=mysql_num_rows($resultado);
  15.         //bla bla bla xD
  16.     }

Cómo te digo, formas hay muchas, y esta es la mas sencilla

Saludos
__________________
Hay 10 tipos de personas, los que entienden binario y los que no. (Anónimo)
www.programandoweb.com
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:46.