Foros del Web » Programando para Internet » PHP »

Reporte de cusqueda esécifica

Estas en el tema de Reporte de cusqueda esécifica en el foro de PHP en Foros del Web. Hola, Estoy trabajando en hacer una busqueda especifica. De una DB creada en Mysql estoy haciendo una busqueda en base a un críterio dado por ...
  #1 (permalink)  
Antiguo 02/05/2010, 10:41
 
Fecha de Ingreso: noviembre-2008
Mensajes: 36
Antigüedad: 15 años, 5 meses
Puntos: 0
Reporte de cusqueda esécifica

Hola,

Estoy trabajando en hacer una busqueda especifica.

De una DB creada en Mysql estoy haciendo una busqueda en base a un críterio dado por el usuario y como resultado me debe entregar todos los valores que coincidan con dicho críterio, si son muchos los mostrará en páginas y permitirá avanzar o retroceder a cada página de la consulta.

Pero algo me falta ya que si si esta haciendo la busuqeda pero no se que pasa que no me muestra nada independientemente del valor que le pida que me busque. ya busque y no tengo errores de sintaxis y he estado leyendo y haciendo diferentes cambios pero no le encuentro.

los encabezados de mi db que quiero me busque son y mi codigo es:
Código PHP:
<?php
include ("conexion.php");
//******************************filtro para realizar la consulta
if ($_REQUEST["btnbuscar"]!="" && $_REQUEST["clavecampero"]!="")
{
    if (
is_numeric($_REQUEST["clavesede"]))
    
$filtro="and clavesede=".$_REQUEST["clavesede"];
    
    
$mensaje"Buscando: ".$_REQUEST["clavesede"];    
}else {
    
$filtro="and(clavesede like '%".$_REQUEST["clavesede"]."%' or nombres like '%".$_REQUEST["clavesede"]."%')";
    
$mensaje=$filtro;    
    
$mensaje"<font color='red'>Porfavor escriba la clave del campero de manera correcta.</font>";
}
$rst_lider=mysql_query("SELECT * FROM lider ORDER BY nombres".$filtro.";",$conexion);
$num_registros=mysql_num_rows($rst_lider);
if (
$num_registros==0)
{echo 
"no se ha encontrado nada que mostrar";
    
mysql_close($conexion);
    exit();
    }
    
$registros=9;//determina la cantidad de registros a ver en pantalla
    
$pagina=$_GET["num"];
        if(
is_numeric($paginas))
        
$inicio=(($pagina-1)*$registros);
else
$inicio=0;// hacer la paginacion
    
$rst_lider=mysql_query("SELECT * FROM lider ORDER BY nombres .$filtro. LIMIT $inicio,$registros;",$conexion);
$paginas=ceil($num_registros/$registros);
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
<!--
.style1 {font-weight: bold}
.style2 {font-weight: bold}
-->
</style>
</head>

<body>
<form action="lider.php" method="post" name="form1" id="form1">
  <div align="center"><strong>  LISTADO DE PRODUCTOS  </a></strong>  </div>
</form>
<table width="800" border="1" align="center" cellpadding="5" cellspacing="2">
  <tr>
    <td colspan="5" class="style2" style=with: 52px><div align="center"><a href="lider.html">Registrar Nuevo Lider</a></div></td>
  </tr>
  <tr>
    <td colspan="5" class="style2" style=with: 52px><form id="form3" name="form3" method="get" action="">
      <p>Clave Campero: 
          <input name="clavecampero" type="text" id="clavecampero" />
          <input type="submit" name="btnbuscar" id="btnbuscar" value="Buscar" />
    </p>
      <p><?php echo $mensaje?>  </p>
    </form>    </td>
  </tr>
  <tr>
    <td style=with: 52px class="style2"><strong>Clave Sede</strong></td>
    <td style=with: 222px class="style2"><div align="center">Clave Lider</div></td>
    <td style=with: 188px class="style2"><div class="style1" aling="center">
      <div align="center"><strong>Nombre Lider</strong></div>
    </div>        </td>
    <td style=with: 92px class="style2"><div align="center"><strong>Modificar</strong></div></td> 
    <td class="style2"><div align="center"><strong>Eliminar</strong></div></td>
  </tr>
  <?php
  
while ($fila=mysql_fetch_array($rst_lider))
  {
  
?>
  <tr>
    <td style=with: 52px class="style2"><?php echo $fila[1]?></td>
    <td style=with: 222px class="style2"><?php echo $fila[2]?></td>
    <td style=with: 188px class="style2"><div aling="center"><?php echo $fila["nombres"]?></div>        </td>
    <td style=with: 92px class="style2">&nbsp;</td> 
    <td class="style2">&nbsp;</td>
  </tr>
   <?php
  
}
  
?>
 </table>
<form id="form2" name="form2" method="post" action="">
  <div align="center">
    <?php 
    
if ($paginas>1)// colocal el link siguiente o anterior
        
echo "<a href='lider?num=".($pagina-1)."'>Anterior</a> ";
    for(
$cont=2;$cont<=$pagina;$cont++);
    {
        if (
$cont==$paginas)
        echo 
$cont ." ";
        else
        echo 
"<a href='lider?num=".$cont."'>$cont</a> ";
    }
        if (
$pagina<$paginas)
        echo 
"<a href='lider.php?num=".($pagina+1)."'>Siguiente</a> ";
?>
  </div>
</form>
<p>&nbsp;</p>
</body>
</html>
clavesede y clavelider.

De antemano gracais por la ayuda.

Salu2
  #2 (permalink)  
Antiguo 02/05/2010, 10:53
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Reporte de cusqueda esécifica

Solo veo 2 cosas :

1 :
Código PHP:
Ver original
  1. // Filtro 1
  2. $filtro="and clavesede=".$_REQUEST["clavesede"];
  3.  
  4. // Filtro 2
  5. $filtro="and(clavesede like '%".$_REQUEST["clavesede"]."%' or nombres like '%".$_REQUEST["clavesede"]."%')";
  6.  
  7. // Consulta
  8. $rst_lider=mysql_query("SELECT * FROM lider ORDER BY nombres".$filtro.";",$conexion);

Primero, no dejas espacio entre "nombres" y el filtro, y segundo, el filtro está mal utilizado.

Si imprimes la cadena resultante, te daría estas dos opciones :

Código:
SELECT * FROM lider ORDER BY nombresand clavesede=valor_clavesde;
Código:
SELECT * FROM lider ORDER BY nombresand(clavesede like '%valor_clavesde%' or nombres like '%valor_clavesde%');

Luego, más abajo, haces esto :

Código PHP:
Ver original
  1. $rst_lider=mysql_query("SELECT * FROM lider ORDER BY nombres .$filtro. LIMIT $inicio,$registros;",$conexion);

Allí no estás concatenando la cadena $filtro. Simplemente estás pegando dos puntos a cada extremo de la cadena, resultando algo así :

Código:
SELECT * FROM lider ORDER BY nombres .and clavesede=valor_clavesde. LIMIT x,x

Creo que te hace falta leer un poco más de SQL.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 02/05/2010, 11:02
 
Fecha de Ingreso: noviembre-2008
Mensajes: 36
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Reporte de cusqueda esécifica

Gracias Spider_boy.

Disculpa que te diga algo tan trillado pero no soy programado y no se nada de sql estoy leyendo un libro unas rebistas y siguiendo algunos videos supongo que esa es la base de mis errores.

Desafortunadamente este proyecto es importante y por eso me atrevi a realizarlo, a parte de que es para tu servidor un reto.

Hojala y me pudieras ayudar un poquitin mas, pero si no es posible, no importa mi agradecimiento no disminuye.

Saludos
  #4 (permalink)  
Antiguo 02/05/2010, 15:18
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 4 meses
Puntos: 89
Respuesta: Reporte de cusqueda esécifica

Discúlpame, pensé que llegabas con algún tipo de noción de sql. Pero es bueno que te lances sin más a este mundo de la programación, claro que te costará más, pero al menos tienes las ganas, lo cual es importante. No te quiero hacer la tarea, quiero que aprendas un poco, que te orientes y reintentes con un poco más de información, así que te recomendaré estos dos tutoriales, que son parte de la comunidad :

http://www.forosdelweb.com/wiki/Manual_de_PHP:_MySQL ( como conectarse a MySQL desde PHP y otras funciones )

Y para tu caso en particular, Criterios de selección en SQL : http://www.maestrosdelweb.com/editorial/tutsql3/ .

Te recomiendo que leas un poco, y reintentes tus consultas. Haz pequeñas consultas directamente a tu base de datos, para que pruebes las opciones aprendidas, y luego con más claridad las pasas a tu código.

Cualquier duda, acá estaremos.

Nos vemos .
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #5 (permalink)  
Antiguo 02/05/2010, 15:58
 
Fecha de Ingreso: noviembre-2008
Mensajes: 36
Antigüedad: 15 años, 5 meses
Puntos: 0
Respuesta: Reporte de cusqueda esécifica

Muchas gracias,

Checare la info que me mandas, aunque ya puedo conectarme a mi DB mysql y hacer algunos reportillos basicos.
Solo que este brinca bastante lo que hoy se.

Los leere, intentare, y aplicare.

Gracias.

Etiquetas: reporte
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 02:17.