Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Busqueda y paginacion de resultados en php y mysql

Estas en el tema de Busqueda y paginacion de resultados en php y mysql en el foro de PHP en Foros del Web. Hola amigos del foro! podrian ayudarme con lo siguiente: Tengo una pagina de busqueda en la base de datos cuyo codigo es: Código HTML: <form ...
  #1 (permalink)  
Antiguo 16/03/2013, 09:15
 
Fecha de Ingreso: febrero-2013
Ubicación: Margarita
Mensajes: 72
Antigüedad: 11 años, 2 meses
Puntos: 0
Busqueda y paginacion de resultados en php y mysql

Hola amigos del foro! podrian ayudarme con lo siguiente:

Tengo una pagina de busqueda en la base de datos cuyo codigo es:

Código HTML:
<form name="form1" method="post" action="resultados2.php">
          <td><select name="tipoi" id="tipoi">
            <option selected>Apartamento</option>
            <option>Casa / Townhouse</option>
          </select></td>
          
          <td><select name="operacion" id="operacion">
            <option selected>Venta</option>
            <option>Alquiler</option>
                              </select></td>
        
          <td><input name="Buscar" type="submit" id="Buscar" value="Buscar Inmueble"></td>
        
      </table>
	
	</form>
	
	
	<?php 
if (!empty($_GET['status']) && ($_GET['status'] == 'error')) {
echo "<h3>No se encontraron resultados para esta busqueda!!</h3>";
}

	
	?> 

Es un box que simplemente recoje los resultados de las variables "tipo" y "operacion" y llama a resultados2.php donde se hace la paginacion que seria asi:


Código PHP:

<?php 
$dbhost 
"localhost";
$dbusername "camienec_claudio";
$dbuserpass "san24irineu";
$dbname "xxxxxxxxxx";

    
$buscar $_POST['Buscar'];
    
$tipo $_POST['tipoi'];
    
$op $_POST['operacion'];

$pagi $_GET['pagi']; 

$contar_pagi = (strlen($pagi));    // Contamos el numero de caracteres 

// Numero de registros por pagina 

$numer_reg 5
    
    
    
 
$conexion mysql_connect($dbhost,$dbusername,$dbuserpass) or die ("Error: Problema al conectar con el Host"); 
        
$db mysql_select_db($dbname,$conexion) or die ("Error: Problema al conectar con la Base de datos");     
        
    
$query0 mysql_query("SELECT * FROM inmuebles WHERE tipo='$tipo' AND operacion='$op' ") or die ("Error en query");

    
$numero_registros0 mysql_num_rows($query0);


// ----------------------------- Pagina anterior 
$prim_reg_an $numer_reg $pagi
$prim_reg_ant abs($prim_reg_an);        // Tomamos el valor absoluto 
if ($pagi <> 0)  
{  
$pag_anterior "<a href='resultados2.php?pagi=$prim_reg_ant'>Pagina anterior</a>"

// ----------------------------- Pagina siguiente 
$prim_reg_sigu $numer_reg $pagi

if (
$pagi $numero_registros0 - ($numer_reg 1))  
{  
$pag_siguiente "<a href='resultados2.php?pagi=$prim_reg_sigu'>Pagina siguiente</a>"

// ----------------------------- Separador 
if ($pagi <> and $pagi $numero_registros0 - ($numer_reg 1))  
{  
$separador "|"

// Creamos la barra de navegacion 

$pagi_navegacion "$pag_anterior $separador $pag_siguiente"

// ----------------------------- 

    
    
if ($contar_pagi 0)  
{  
// Si recibimos un valor por la variable $page ejecutamos esta consulta 

    
$query2 "SELECT * FROM inmuebles  LIMIT $pagi,$numer_reg"
}  
else  
{  
// Si NO recibimos un valor por la variable $page ejecutamos esta consulta 

    
$query2 "SELECT * FROM inmuebles  LIMIT 0,$numer_reg"
}  

    
$result mysql_query($query2);
    
$numero_registros mysql_num_rows($result);  
    
    
    print 
'<table width="470" border="0" cellspacing="0" cellpadding="0" >';
    
    while(
$datos mysql_fetch_array($result))

    {

$id_inmueble $datos['id_inmueble'];
$query3 mysql_query("SELECT * FROM fotos2 INNER JOIN inmuebles_fotos ON fotos2.id_foto = inmuebles_fotos.id_foto WHERE inmuebles_fotos.id_inmueble=$id_inmueble") or die ("Error en query3");
$datos3 mysql_fetch_array($query3);
$image_path $datos3['path']; 

      print 
'<tr>
    <td width="236" rowspan="7"><div align="center" ><a href="Prueba2.php?id='
.$datos['id_inmueble'].'"><img src="http://www.forosdelweb.com/f18/'.$image_path.'" width="200" height="120" alt=""></a></div></td>
    <td width="18" rowspan="8"><div align="center"></div></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><div align="left">'
.$datos['tipo'].' en '.$datos['operacion'].'</div></td>
  </tr>
  <tr>
    <td><div align="left">'
.$datos['ubicacion'].'</div></td>
  </tr>
  <tr>
    <td width="434"><div align="left">'
.$datos['mts2'].' mts2</div></td>
  </tr>
  <tr>
    <td><div align="left" class="Estilo1"> BsF '
.$datos['precio'].'</div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td width="236">&nbsp;</td>
    <td><div align="right"></div></td>
  </tr>'
;    

    }
mysql_close($conexion);      
print 
'</table>';
print 
'Registros: '.$numero_registros.' de un total de '.$numero_registros0.'';
print 
'</div>';
print 
'<br>';    
print 
'<p align="center">'.$pagi_navegacion.'</p>'
print 
'<br>';    



    
    
?>
El codigo se ejecuta bien excepto por el criterio de busqueda condicionado por variables que recojo en la pagina busqueda. Pero como resultados2 se llama asi mismo cuando vuelve a hacer el $_post['tipo'] y el $_post['op'] no encuentra nada en la consulta query0.

Alguna ayuda por favor
  #2 (permalink)  
Antiguo 16/03/2013, 10:51
 
Fecha de Ingreso: septiembre-2010
Mensajes: 51
Antigüedad: 13 años, 7 meses
Puntos: 5
Respuesta: Busqueda y paginacion de resultados en php y mysql

Arriba cuando recibis las variables por el metodo post, tenes mal tipo, aparece "tipoi"
  #3 (permalink)  
Antiguo 16/03/2013, 11:12
 
Fecha de Ingreso: febrero-2013
Ubicación: Margarita
Mensajes: 72
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Busqueda y paginacion de resultados en php y mysql

Gracias por responder Kowa

no entiendo bien, tipoi es el nombre del select en la pagina buscar.php

son 2 paginas una es buscar.php con el codigo
Código HTML:
<form name="form1" method="post" action="resultados2.php">
          <td><select name="tipoi" id="tipoi">
            <option selected>Apartamento</option>
            <option>Casa / Townhouse</option>
          </select></td>
          
          <td><select name="operacion" id="operacion">
            <option selected>Venta</option>
            <option>Alquiler</option>
                              </select></td>
        
          <td><input name="Buscar" type="submit" id="Buscar" value="Buscar Inmueble"></td>
        
      </table>
	
	</form>
	
	
	<?php 
if (!empty($_GET['status']) && ($_GET['status'] == 'error')) {
echo "<h3>No se encontraron resultados para esta busqueda!!</h3>";
}

	
	?> 
y llama a otra pagina resultados2.php que tiene el codigo:

Código PHP:

<?php 
$dbhost 
"localhost";
$dbusername "camienec_claudio";
$dbuserpass "san24irineu";
$dbname "xxxxxxxxxx";

    
$buscar $_POST['Buscar'];
    
$tipo $_POST['tipoi'];
    
$op $_POST['operacion'];

$pagi $_GET['pagi']; 

$contar_pagi = (strlen($pagi));    // Contamos el numero de caracteres 

// Numero de registros por pagina 

$numer_reg 5
    
    
    
 
$conexion mysql_connect($dbhost,$dbusername,$dbuserpass) or die ("Error: Problema al conectar con el Host"); 
        
$db mysql_select_db($dbname,$conexion) or die ("Error: Problema al conectar con la Base de datos");     
        
    
$query0 mysql_query("SELECT * FROM inmuebles WHERE tipo='$tipo' AND operacion='$op' ") or die ("Error en query");

    
$numero_registros0 mysql_num_rows($query0);


// ----------------------------- Pagina anterior 
$prim_reg_an $numer_reg $pagi
$prim_reg_ant abs($prim_reg_an);        // Tomamos el valor absoluto 
if ($pagi <> 0)  
{  
$pag_anterior "<a href='resultados2.php?pagi=$prim_reg_ant'>Pagina anterior</a>"

// ----------------------------- Pagina siguiente 
$prim_reg_sigu $numer_reg $pagi

if (
$pagi $numero_registros0 - ($numer_reg 1))  
{  
$pag_siguiente "<a href='resultados2.php?pagi=$prim_reg_sigu'>Pagina siguiente</a>"

// ----------------------------- Separador 
if ($pagi <> and $pagi $numero_registros0 - ($numer_reg 1))  
{  
$separador "|"

// Creamos la barra de navegacion 

$pagi_navegacion "$pag_anterior $separador $pag_siguiente"

// ----------------------------- 

    
    
if ($contar_pagi 0)  
{  
// Si recibimos un valor por la variable $page ejecutamos esta consulta 

    
$query2 "SELECT * FROM inmuebles  LIMIT $pagi,$numer_reg"
}  
else  
{  
// Si NO recibimos un valor por la variable $page ejecutamos esta consulta 

    
$query2 "SELECT * FROM inmuebles  LIMIT 0,$numer_reg"
}  

    
$result mysql_query($query2);
    
$numero_registros mysql_num_rows($result);  
    
    
    print 
'<table width="470" border="0" cellspacing="0" cellpadding="0" >';
    
    while(
$datos mysql_fetch_array($result))

    {

$id_inmueble $datos['id_inmueble'];
$query3 mysql_query("SELECT * FROM fotos2 INNER JOIN inmuebles_fotos ON fotos2.id_foto = inmuebles_fotos.id_foto WHERE inmuebles_fotos.id_inmueble=$id_inmueble") or die ("Error en query3");
$datos3 mysql_fetch_array($query3);
$image_path $datos3['path']; 

      print 
'<tr>
    <td width="236" rowspan="7"><div align="center" ><a href="Prueba2.php?id='
.$datos['id_inmueble'].'"><img src="http://www.forosdelweb.com/f18/'.$image_path.'" width="200" height="120" alt=""></a></div></td>
    <td width="18" rowspan="8"><div align="center"></div></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><div align="left">'
.$datos['tipo'].' en '.$datos['operacion'].'</div></td>
  </tr>
  <tr>
    <td><div align="left">'
.$datos['ubicacion'].'</div></td>
  </tr>
  <tr>
    <td width="434"><div align="left">'
.$datos['mts2'].' mts2</div></td>
  </tr>
  <tr>
    <td><div align="left" class="Estilo1"> BsF '
.$datos['precio'].'</div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td width="236">&nbsp;</td>
    <td><div align="right"></div></td>
  </tr>'
;    

    }
mysql_close($conexion);      
print 
'</table>';
print 
'Registros: '.$numero_registros.' de un total de '.$numero_registros0.'';
print 
'</div>';
print 
'<br>';    
print 
'<p align="center">'.$pagi_navegacion.'</p>'
print 
'<br>';    



    
    
?>
Esto porque quiero que la pagina de buscar y deresultados sean dos paginas distintas.
Gracias

Última edición por claudinho; 16/03/2013 a las 11:31
  #4 (permalink)  
Antiguo 18/03/2013, 13:59
 
Fecha de Ingreso: febrero-2013
Ubicación: Margarita
Mensajes: 72
Antigüedad: 11 años, 2 meses
Puntos: 0
Respuesta: Busqueda y paginacion de resultados en php y mysql

Hola lo resolvi asi en la parte de arriba de la pagina coloco

Código PHP:
<?php

//inicializo el criterio y recibo cualquier cadena que se desee buscar 
$criterio ""
if (
$_GET["operacion"]!="" && $_GET["tipoi"]!=""){ 
       
//$txt_criterio = $_GET["tipoi"]; 
    
$txt_criterio $_GET["operacion"]; 
    
$txt_criterio2 $_GET["tipoi"]; 
       
$criterio " WHERE operacion='".$txt_criterio."' AND tipo='".$txt_criterio2."'"

}else{

    
$txt_criterio $_GET["criterio"];
    
$txt_criterio2 $_GET["criterio2"];  
       
$criterio " WHERE operacion='".$txt_criterio"' AND tipo='".$txt_criterio2."'";

}
//    echo $criterio;
?>

luego mas abajo coloco

Código PHP:

<?php 
$dbhost 
"localhost";
$dbusername "camienec_claudio";
$dbuserpass "san24irineu";
$dbname "camienec_venus2";

//    $buscar = $_POST['Buscar'];
//    $tipo = $_POST['tipoi'];
//    $op = $_POST['operacion'];
//session_start();
$pagi $_GET['pagi']; 

$contar_pagi = (strlen($pagi));    // Contamos el numero de caracteres 

// Numero de registros por pagina 

$numer_reg 5
    
    
    
 
$conexion mysql_connect($dbhost,$dbusername,$dbuserpass) or die ("Error: Problema al conectar con el Host"); 
        
$db mysql_select_db($dbname,$conexion) or die ("Error: Problema al conectar con la Base de datos");     
        
//if ($tipo=='Todas'){
//    $query = mysql_query("SELECT id_inmueble,tipo,ubicacion,mts2,precio,operacion FROM inmuebles WHERE inmuebles.tipo= '$_POST[tipoi]' AND inmuebles.operacion='$_POST[operacion]'") or die ("Error en query");
//}        
        
    
$query0 "SELECT * FROM inmuebles".$criterio
//    echo $query0;
    
$query0 mysql_query($query0) or die ("Error en query");
//    $cont = mysql_num_rows($query);
    
$numero_registros0 mysql_num_rows($query0);
    
//echo $numero_registros0;
//    $datos = mysql_fetch_assoc($query);
//    $id_inmueble = $datos['id_inmueble'];

// ----------------------------- Pagina anterior 
$prim_reg_an $numer_reg $pagi
$prim_reg_ant abs($prim_reg_an);        // Tomamos el valor absoluto 
if ($pagi <> 0)  
{  
$pag_anterior "<a href='resultados2.php?pagi=$prim_reg_ant&criterio=$txt_criterio&criterio2=$txt_criterio2'>Pagina anterior</a>"

// ----------------------------- Pagina siguiente 
$prim_reg_sigu $numer_reg $pagi

if (
$pagi $numero_registros0 - ($numer_reg 1))  
{  
$pag_siguiente "<a href='resultados2.php?pagi=$prim_reg_sigu&criterio=$txt_criterio&criterio2=$txt_criterio2'>Pagina siguiente</a>"

// ----------------------------- Separador 
if ($pagi <> and $pagi $numero_registros0 - ($numer_reg 1))  
{  
$separador "|"

// Creamos la barra de navegacion 

$pagi_navegacion "$pag_anterior $separador $pag_siguiente"

// ----------------------------- 

//    if ($cont == 0){
    
//print '<h2> No se encontaron resultados para su busqueda!</h2>';
    
//    }
//    else{
    
    
    
if ($contar_pagi 0)  
{  
// Si recibimos un valor por la variable $page ejecutamos esta consulta 

    
$query2 "SELECT * FROM inmuebles ".$criterio." LIMIT $pagi,$numer_reg"
    
//echo $query2;
}  
else  
{  
// Si NO recibimos un valor por la variable $page ejecutamos esta consulta 

    
$query2 "SELECT * FROM inmuebles ".$criterio."  LIMIT 0,$numer_reg"
    
//echo $query2;
}  

    
$result mysql_query($query2);
    
$numero_registros mysql_num_rows($result);  
    
    
    print 
'<table width="470" border="0" cellspacing="0" cellpadding="0" >';
    
    while(
$datos mysql_fetch_array($result))

    {
//    print '<div class="box">';
$id_inmueble $datos['id_inmueble'];
$query3 mysql_query("SELECT * FROM fotos2 INNER JOIN inmuebles_fotos ON fotos2.id_foto = inmuebles_fotos.id_foto WHERE inmuebles_fotos.id_inmueble=$id_inmueble") or die ("Error en query3");
$datos3 mysql_fetch_array($query3);
$image_path $datos3['path']; 

      print 
'<tr>
    <td width="236" rowspan="7"><div align="center" ><a href="Prueba2.php?id='
.$datos['id_inmueble'].'"><img src="../'.$image_path.'" width="200" height="120" alt=""></a></div></td>
    <td width="18" rowspan="8"><div align="center"></div></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><div align="left">'
.$datos['tipo'].' en '.$datos['operacion'].'</div></td>
  </tr>
  <tr>
    <td><div align="left">'
.$datos['ubicacion'].'</div></td>
  </tr>
  <tr>
    <td width="434"><div align="left">'
.$datos['mts2'].' mts2</div></td>
  </tr>
  <tr>
    <td><div align="left" class="Estilo1"> BsF '
.$datos['precio'].'</div></td>
  </tr>
  <tr>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td width="236">&nbsp;</td>
    <td><div align="right"></div></td>
  </tr>'
;    

    }
mysql_close($conexion);      
print 
'</table>';
print 
'Registros: '.$numero_registros.' de un total de '.$numero_registros0.'';
print 
'</div>';
print 
'<br>';    
print 
'<p align="center">'.$pagi_navegacion.'</p>'
print 
'<br>';    


    
//}
    
    
?>

asi queda resuelto en mi formulario cambie el metodo por get y ya!!

Etiquetas: busqueda, mysql, paginacion, registro, resultados, select, variables
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 13:01.