Foros del Web » Programando para Internet » PHP »

Se anula busqueda filtrada

Estas en el tema de Se anula busqueda filtrada en el foro de PHP en Foros del Web. Hola les comento, tengo dos formularios de busqueda en un mismo archivo, cada uno realiza una busqueda según un filtro el primero por cliente y ...
  #1 (permalink)  
Antiguo 14/10/2010, 10:40
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Se anula busqueda filtrada

Hola les comento, tengo dos formularios de busqueda en un mismo archivo, cada uno realiza una busqueda según un filtro el primero por cliente y el segundo por posicion de los banner en mi pagina, bueno el caso es que la busqueda por posición se realiza sin problemas pero la busqueda por cliente no se realiza este es mi codigo:

primer formulario de busqueda por cliente:
Código PHP:
Ver original
  1. <td width="516" valign="middle" height="24" class="general">
  2.                 <form name="form" action="banners.php" method="post" style="height:18px; margin-top:5px;">
  3.                   <select name="seccion" style="width:180px">
  4.                     <option value="todos">Ver Todas</option>
  5.                     <?php
  6.             $ssql = "select distinct cliente from banners";
  7.             $ql = mysql_query($ssql,$conn) or die(mysql_error());
  8.             while($g = mysql_fetch_array($ql)){
  9.             echo '<option value="'.$g['cliente'].'">'.$g['cliente']= ucwords(strtolower($g['cliente'])).'</option>';
  10.             }
  11.             ?>
  12.                   </select>
  13.                   <input type="submit" name="as" value="Aceptar" />
  14.                 </form>                 </td>

segundo formulario de busqueda por cliente:
Código PHP:
Ver original
  1. <form name="form2" action="banners.php" method="post" style="height:18px; margin-top:5px;">
  2.                   <select name="parte" style="width:180px">
  3.                   <option value="todas">Todos</option>
  4.                   <?php
  5.                   $done = "select distinct posicion from banners";
  6.                   $do = mysql_query($done,$conn) or die(mysql_error());
  7.                   while($n = mysql_fetch_array($do)){
  8.                   echo '<option value="'.$n['posicion'].'">'.$n['posicion']= ucwords(strtolower($n['posicion'])).'</option>';
  9.                   }
  10.                   ?>
  11.                   </select>
  12.                   <input type="submit" name="m" value="Aceptar" />
  13.                   </form>

y aqui proceso los datos:
Código PHP:
Ver original
  1. <?php
  2.                     //print_r($_POST);
  3. if(isset($_POST['seccion']) and $_POST['seccion'] != "todos"){
  4. $where = "where cliente = '".$_POST['seccion']."'";
  5. $sql = "select * from banners $where LIMIT ".(($pagina-1) * $filas_pagina).",".$filas_pagina;
  6. }
  7.     else {
  8.         $sql = "select * from banners limit ".(($pagina-1)*$filas_pagina).",".$filas_pagina;
  9.     }
  10.     if(isset($_POST['parte']) and $_POST['parte'] != "todas"){
  11. $where = "where posicion = '".$_POST['parte']."'";
  12. $sql = "select * from banners $where LIMIT ".(($pagina-1) * $filas_pagina).",".$filas_pagina;
  13. }
  14.     else {
  15.         $sql = "select * from banners limit ".(($pagina-1)*$filas_pagina).",".$filas_pagina;
  16.     }
  17.  
  18.                     $result = mysql_query($sql,$conn) or die(mysql_error());
  19.                     while($row = mysql_fetch_array($result)){
  20.                     echo '<tr>';
  21.                     echo '<td class="Tituloseccion" bgcolor="#e8e8e8" height="20px">&nbsp;&nbsp;<a href="edit_banner.php?id_banner='.$row['id_banner'].'" class="Tituloseccion">'.$row['banner'].'</a></td>';
  22.                     echo '<td align="center" class="general" bgcolor="#e8e8e8">'.$row['cliente']= ucwords(strtolower($row['cliente'])).'</td>';
  23.                     echo '<td align="center" class="general" bgcolor="#e8e8e8">'.$row['posicion'].'</td>';
  24.                     echo '<td align="center" class="general" bgcolor="#e8e8e8">'.$row['url'].'</td>';
  25.                     echo '<td align="center" class="general" bgcolor="#e8e8e8"><a href="status_edit.php?id_banner='.$row['id_banner'].'&status='.$row['status'].'">'.$row['status'].'</a></td>';
  26.                     ?>
  27.                     <td align="center" class="general" bgcolor="#e8e8e8"><a href="elim_banner.php?id_banner=<?php echo $row['id_banner']; ?>" onClick="return confirmar('¿Esta Seguro De Eliminar El Banner?')"><img src="images/botones/eliminar.jpg" border="0"/></a></td> <?php
  28.                     echo'</tr>';
  29.                     }
  30.                     ?>

Qué estare haciendo mal?, cuál sera la razón que no se ejecuta la busqueda por cliente, gracias de antemano
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #2 (permalink)  
Antiguo 14/10/2010, 11:19
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Se anula busqueda filtrada

imprime tu consulta para que veas si esta correcta o es la consulta que esperas
Código PHP:
Ver original
  1. echo $sql;
  2. $result = mysql_query($sql,$conn) or die(mysql_error());
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 14/10/2010, 11:45
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Se anula busqueda filtrada

Efectivamente al elejir cualquiera de las opciones del primer formulario me muesta lo siguiente:

Código PHP:
Ver original
  1. select * from banners limit 0,15
mientras que si elijo el segundo formulario me muestra lo siguiente:
Código PHP:
Ver original
  1. select * from banners where posicion = 'Superior' LIMIT 0,15

he de comentar que le agrereu printr_r a mi $POST y me muestra lo siguinete en el primer formulario:
Código HTML:
Ver original
  1. Array ( [seccion] => internovo //Value de mi opcion
  2. [as] => Aceptar //Nombre del submit )

y si en el segundo formulario de la siguiente manera:
Código HTML:
Ver original
  1. Array ( [parte] => Superior [m] => Aceptar )

que podra ser?
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #4 (permalink)  
Antiguo 14/10/2010, 12:17
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Se anula busqueda filtrada

Si ejecutas esta consulta
Código PHP:
Ver original
  1. select * from banners where posicion = 'Superior' LIMIT 0,15
directamente en el phpyadmin funciona??
También, cuando compares cadenas de texto usa el like
Código PHP:
Ver original
  1. select * from banners where posicion LIKE 'Superior' LIMIT 0,15
igual es bueno que en tu BD tengas una sola forma de guardar esos valores es decir, ya sea, SUPERIOR o superior y en tu variable cuando la recuperes puedes usar strtoupper o strtolower según decidas
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #5 (permalink)  
Antiguo 14/10/2010, 12:22
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Se anula busqueda filtrada

si funciona en el phpmyadmin, pero ese filtro si me funciona el que no me funciona es el de cliente, como ya mencione antes el de Superior, Lateral....etc, es el que si filtra la busqueda.
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #6 (permalink)  
Antiguo 14/10/2010, 12:24
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Se anula busqueda filtrada

En el primer post me equivoque al decir que el segundo formulario filtra por cliente, filtra por posicion perdonen

primer formulario de busqueda por cliente:
Código PHP:
Ver original
  1. <td width="516" valign="middle" height="24" class="general">
  2.                 <form name="form" action="banners.php" method="post" style="height:18px; margin-top:5px;">
  3.                   <select name="seccion" style="width:180px">
  4.                     <option value="todos">Ver Todas</option>
  5.                     <?php
  6.             $ssql = "select distinct cliente from banners";
  7.             $ql = mysql_query($ssql,$conn) or die(mysql_error());
  8.             while($g = mysql_fetch_array($ql)){
  9.             echo '<option value="'.$g['cliente'].'">'.$g['cliente']= ucwords(strtolower($g['cliente'])).'</option>';
  10.             }
  11.             ?>
  12.                   </select>
  13.                   <input type="submit" name="as" value="Aceptar" />
  14.                 </form>                 </td>

segundo formulario de busqueda por posicion:
Código PHP:
Ver original
  1. <form name="form2" action="banners.php" method="post" style="height:18px; margin-top:5px;">
  2.                   <select name="parte" style="width:180px">
  3.                   <option value="todas">Todos</option>
  4.                   <?php
  5.                   $done = "select distinct posicion from banners";
  6.                   $do = mysql_query($done,$conn) or die(mysql_error());
  7.                   while($n = mysql_fetch_array($do)){
  8.                   echo '<option value="'.$n['posicion'].'">'.$n['posicion']= ucwords(strtolower($n['posicion'])).'</option>';
  9.                   }
  10.                   ?>
  11.                   </select>
  12.                   <input type="submit" name="m" value="Aceptar" />
  13.                   </form>

y aqui proceso los datos:
Código PHP:
Ver original
  1. <?php
  2.                     //print_r($_POST);
  3. if(isset($_POST['seccion']) and $_POST['seccion'] != "todos"){
  4. $where = "where cliente = '".$_POST['seccion']."'";
  5. $sql = "select * from banners $where LIMIT ".(($pagina-1) * $filas_pagina).",".$filas_pagina;
  6. }
  7.     else {
  8.         $sql = "select * from banners limit ".(($pagina-1)*$filas_pagina).",".$filas_pagina;
  9.     }
  10.     if(isset($_POST['parte']) and $_POST['parte'] != "todas"){
  11. $where = "where posicion = '".$_POST['parte']."'";
  12. $sql = "select * from banners $where LIMIT ".(($pagina-1) * $filas_pagina).",".$filas_pagina;
  13. }
  14.     else {
  15.         $sql = "select * from banners limit ".(($pagina-1)*$filas_pagina).",".$filas_pagina;
  16.     }
  17.  
  18.                     $result = mysql_query($sql,$conn) or die(mysql_error());
  19.                     while($row = mysql_fetch_array($result)){
  20.                     echo '<tr>';
  21.                     echo '<td class="Tituloseccion" bgcolor="#e8e8e8" height="20px">&nbsp;&nbsp;<a href="edit_banner.php?id_banner='.$row['id_banner'].'" class="Tituloseccion">'.$row['banner'].'</a></td>';
  22.                     echo '<td align="center" class="general" bgcolor="#e8e8e8">'.$row['cliente']= ucwords(strtolower($row['cliente'])).'</td>';
  23.                     echo '<td align="center" class="general" bgcolor="#e8e8e8">'.$row['posicion'].'</td>';
  24.                     echo '<td align="center" class="general" bgcolor="#e8e8e8">'.$row['url'].'</td>';
  25.                     echo '<td align="center" class="general" bgcolor="#e8e8e8"><a href="status_edit.php?id_banner='.$row['id_banner'].'&status='.$row['status'].'">'.$row['status'].'</a></td>';
  26.                     ?>
  27.                     <td align="center" class="general" bgcolor="#e8e8e8"><a href="elim_banner.php?id_banner=<?php echo $row['id_banner']; ?>" onClick="return confirmar('¿Esta Seguro De Eliminar El Banner?')"><img src="images/botones/eliminar.jpg" border="0"/></a></td> <?php
  28.                     echo'</tr>';
  29.                     }
  30.                     ?>

El primer formulario no filtra la busqueda, el segundo formulario si filtra la busqueda
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #7 (permalink)  
Antiguo 14/10/2010, 12:31
 
Fecha de Ingreso: febrero-2010
Mensajes: 818
Antigüedad: 14 años, 2 meses
Puntos: 55
Respuesta: Se anula busqueda filtrada

me parece que el segundo if anula el primero, prueba asi
Código PHP:
if(isset($_POST['seccion']) and $_POST['seccion'] != "todos"){ 
    
$where "where cliente = '".$_POST['seccion']."'";
    
$sql "select * from banners $where LIMIT ".(($pagina-1) * $filas_pagina).",".$filas_pagina;
}
elseif(isset(
$_POST['parte']) and $_POST['parte'] != "todas"){ 
    
$where "where posicion = '".$_POST['parte']."'";
    
$sql "select * from banners $where LIMIT ".(($pagina-1) * $filas_pagina).",".$filas_pagina;
}else{
        
$sql "select * from banners limit ".(($pagina-1)*$filas_pagina).",".$filas_pagina;

  #8 (permalink)  
Antiguo 14/10/2010, 12:35
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
Respuesta: Se anula busqueda filtrada

de casualidad el
Código PHP:
Ver original
  1. if(isset($_POST['seccion']) and $_POST['seccion'] != "todos"){
no será diferente de todas con a.

saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #9 (permalink)  
Antiguo 14/10/2010, 12:48
 
Fecha de Ingreso: julio-2010
Ubicación: La Ciudad Blanca, Mérida-Yucatán
Mensajes: 375
Antigüedad: 13 años, 9 meses
Puntos: 7
Respuesta: Se anula busqueda filtrada

Death_Empire gracias por tu respuesta, ya funciona como debería

eits gracias por tu interes....

saludos a los dos
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---

Etiquetas: busquedas
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 14:06.