Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Buscar registros bd

Estas en el tema de Buscar registros bd en el foro de PHP en Foros del Web. Hola amigos tengo un problema al realizar una busqueda tengo un formulario en ella introduzco el producto le doy buscar y llasma a lista-productos.php me ...
  #1 (permalink)  
Antiguo 10/02/2014, 11:59
 
Fecha de Ingreso: septiembre-2012
Mensajes: 75
Antigüedad: 11 años, 7 meses
Puntos: 2
Buscar registros bd

Hola amigos tengo un problema al realizar una busqueda tengo un formulario
en ella introduzco el producto le doy buscar y llasma a lista-productos.php me los enumera de 4 pero en la pagina 2 no aparece el producto digamos si tengo 7 productos en bd solo me mostrara los primeros 4 y en la pagina sig no muestra los faltantes, cual creen que sea mi problema, saludos.

este es el codigo

Código:
<form action="lista-productos.php" method="post">
  		<table width="100%" height="196" border="0" cellpadding="0" cellspacing="0">
		  <tr>
    		<td height="67">
			  <div id="r_social_rigth"><table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="47%" height="42">
		
		<div id="buskbord">
		&nbsp;&nbsp;<input type="text" name="searchs" placeholder="Buscar productos" style="border:none; border:0px; width:90%;"/>
	  </div>
	</td>
	<td width="25%" height="42">&nbsp;&nbsp;<input type="submit" name="buscar" value="Buscar" /></td>
  </tr>
</table>

</div>
 </td>
  		  </tr>
  		<tr>
   		  <td height="140">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img src="imagenes/slogan.png" /></td>
  	 </tr>
</table>
 </form>

Código PHP:
include("conect/conexion.php");
$noRegistros = 4; //Registros por página
$pagina = 1; //Por default, página = 1
if($_GET["pagina"]) //Si hay página por ?pagina=valor, lo asigna
    $pagina = $_GET["pagina"];


<?
    $buskr
=$_POST['searchs'];
//Utilizo el comando LIMIT para seleccionar registros
$sSQL "SELECT * FROM productos_almacen WHERE nombre='$buskr' LIMIT ".($pagina-1)*$noRegistros.",$noRegistros";
$result mysql_query($sSQL) or die(mysql_error());
while(
$row mysql_fetch_array($result)) { //Exploracion comun de registros
    
echo "<tr><td height=80 align=center>";
    echo 
$row["Id"]."<br>";
    echo 
"</td>
    <td align=center><img src='fotos-alarmas/$row[Producto]' width=70 height=70></td>
        <td>$row[Descripcion].</td>
        <td align=center>$row[Precio].</td>
    </tr>"
;
}

//Imprimiendo páginas
$sSQL "SELECT count(*) FROM productos_almacen WHERE nombre='$buskr'"//Cuento el total de registros
$result mysql_query($sSQL);
$row mysql_fetch_array($result);
$totalRegistros $row["count(*)"]; //Almaceno el total en una variable

$noPaginas $totalRegistros/$noRegistros//Determino la cantidad de páginas

?>
    <tr>
        <td colspan="2" align="center"><? echo "<strong>Total registros: </strong>".$totalRegistros?></td>
        <td colspan="2" align="center"><? echo "<strong>Pagina: </strong>".$pagina?></td>
    </tr>
    <tr bgcolor="f3f4f1">
        <td colspan="4" align="right"><strong>Pagina:<? for($i=1$i<$noPaginas+1$i++) { //Imprimo las páginas
    
if($i == $pagina)
        echo 
"<font color=red>$i </font>"//A la página actual no le pongo link
    
else
        echo 
"<a href=\"?pagina=".$i."\" style=color:#000;> ".$i."</a> ";
  }
echo 
"<strong>";?>
  #2 (permalink)  
Antiguo 10/02/2014, 12:31
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Buscar registros bd

Si imprimieras tu consulta, verías que al cambiar de página ya no incluye el término a buscar, pues no los estás propagando, en otras palabras, en el enlace a la página siguiente debes agregar el criterio de búsqueda, o se pierde.

Y también procura no usar los campos tal cual los escribe el usuario, debes filtrarlos para evitar que te metan código malicioso, o sea el famoso sql injection
  #3 (permalink)  
Antiguo 10/02/2014, 12:35
 
Fecha de Ingreso: septiembre-2012
Mensajes: 75
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Buscar registros bd

Ohhh gracias, pero me gustaria ver si me echas una mano para solucionarlo no busco como hacer la propagacion que me dices, saludos.
  #4 (permalink)  
Antiguo 10/02/2014, 12:38
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Buscar registros bd

Creo que se refiere al dato $_POST['searchs'], date cuenta que no lo estás enviando en el enlace.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #5 (permalink)  
Antiguo 10/02/2014, 12:45
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Buscar registros bd

Pues algo así

Al imprimir la liga a la pag. siguiente:

echo "<a href=\"?pagina=".$i."&searchs=".$buskr."\" style=color:#000;> ".$i."</a> ";

Aquí estarías propagando el término a buscar, en ese caso, deberás modificar también la forma de obtener el término de búsqueda, que actualmente obtienes de _POST

$buskr=$_POST['searchs']; //obtienes el término de _POST

Pero ahora puede venir de _GET si usan el enlace, por tanto puedes usar

$buskr=$_REQUEST['searchs']; //obtienes el término venga de post o get.
  #6 (permalink)  
Antiguo 10/02/2014, 12:51
 
Fecha de Ingreso: septiembre-2012
Mensajes: 75
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Buscar registros bd

Gracias por tu codigo y por tu valioso tiempo, ya esta solucionado, bendiciones. saludos.
  #7 (permalink)  
Antiguo 10/02/2014, 12:54
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Buscar registros bd

Como extra a lo correctamente dicho por ocp001a, ten en cuenta que para buscar datos en la BD, es preferible utilizar el método GET ya que es un método constructor, a diferencia del método POST que es destructor, porque se suele utilizarlo para alterar datos en la BD.

Dale una leída a este artículo para que tengas más clara la idea: http://blog.micayael.com/2011/02/09/...post-del-http/

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #8 (permalink)  
Antiguo 10/02/2014, 12:58
 
Fecha de Ingreso: septiembre-2012
Mensajes: 75
Antigüedad: 11 años, 7 meses
Puntos: 2
Respuesta: Buscar registros bd

Gracias Alexis88 aurita lo checo, te mando saludos, muchas gracias.

Etiquetas: bd, formulario, mysql, registro, registros, select, sql, variable
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 03:33.