Foros del Web » Programando para Internet » PHP »

Busuqeda no filtra por parametro

Estas en el tema de Busuqeda no filtra por parametro en el foro de PHP en Foros del Web. holas a todos los foreros tengo una busqueda que debe ser filtrada por un campo en la base de datos en este caso el cliente ...
  #1 (permalink)  
Antiguo 11/10/2010, 10:42
 
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
Busuqeda no filtra por parametro

holas a todos los foreros
tengo una busqueda que debe ser filtrada por un campo en la base de datos en este caso el cliente bueno este es el codigo del form

Código PHP:
<form name="form" action="banners.php" method="post" style="height:18px; margin-top:5px;">
                  <select name="seccion" style="width:180px">
                    <option value="0">Ver Todas</option>
                    <?php
            $ssql 
"select distinct cliente from banners";
            
$ql mysql_query($ssql,$conn) or die(mysql_error());
            while(
$g mysql_fetch_array($ql)){
            echo 
'<option value="'.$g['cliente'].'">'.$g['cliente']= ucwords(strtolower($g['cliente'])).'</option>';
            }
            
?>
                  </select>
                  <input type="submit" name="as" value="Aceptar" />
                </form>
y este el el codigo que deberia de filtrar la búsqueda:

Código PHP:
<?php
  
if($_POST){
                    
$sec $_POST['seccion'];
                    
$sql "SELECT *
FROM banners
WHERE cliente = '$sec' LIMIT "
.(($pagina-1)*$filas_pagina).",".$filas_pagina;
                    if(
$sec == 0){
                    
$sql "select * from banners limit ".(($pagina-1)*$filas_pagina).",".$filas_pagina;}
                    else{
                    
$sql "SELECT *
FROM banners
WHERE cliente = '$sec' LIMIT "
.(($pagina-1)*$filas_pagina).",".$filas_pagina;
                    }
                    }
                    else{
                    
$sql "select * from banners limit ".(($pagina-1)*$filas_pagina).",".$filas_pagina;}
pero no me filtra la busqueda, ni me muestra ningun error, cual podría ser el problema gracias de antemano.
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #2 (permalink)  
Antiguo 11/10/2010, 10:45
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Respuesta: Busuqeda no filtra por parametro

Parece un problema en el WHERE, prueba esto:

Código PHP:
WHERE cliente '".$sec."' 
  #3 (permalink)  
Antiguo 11/10/2010, 11:07
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Busuqeda no filtra por parametro

ZydRick, lee sobre el uso de comillas por que lo que el a hecho esta bien.

Te falto isset ^^, en vez de:
if($_POST){
deberia ser:
if(isset($_POST)){

Y por ultimo, aqui te envio el mismo funcionamiento pero mas resumido ^^
Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['seccion']) and $_POST['seccion'] > 0) $where = "where cliente = '".$_POST['seccion']."'";
  3. $sql = "select * from banners $where LIMIT ".(($pagina-1) * $filas_pagina).", $filas_pagina";
  4. ?>

Suerte
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #4 (permalink)  
Antiguo 11/10/2010, 11:08
 
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: Busuqeda no filtra por parametro

gracias por tu respuesta ZydRick, pero sigue sin filtrarme la busqueda

Código PHP:
<?php
  
if($_POST){
                    
$sec $_POST['seccion'];
                    
print_r($sec);
                    
$sql "SELECT *
FROM banners
WHERE cliente = '"
.$sec."'  LIMIT ".(($pagina-1)*$filas_pagina).",".$filas_pagina;
                    if(
$sec == 0){
                    
$sql "select * from banners limit ".(($pagina-1)*$filas_pagina).",".$filas_pagina;}
                    else{
                    
$sql "SELECT *
FROM banners
WHERE cliente = '"
.$sec."'  LIMIT ".(($pagina-1)*$filas_pagina).",".$filas_pagina;
                    }
                    }
                    else{
                    
$sql "select * from banners limit ".(($pagina-1)*$filas_pagina).",".$filas_pagina;}
y al poner print_r($POST) me muestra el cliente

probare tu respuesta masterojitos y comento
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #5 (permalink)  
Antiguo 11/10/2010, 12:06
 
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: Busuqeda no filtra por parametro

masterojitos he probado tu respuesta y aun no me filtra la busqueda asi quedo mi codigo:

Código PHP:
<?php
                    
  
if( (isset($_POST['seccion'])) and ($_POST['seccion'] > 0) ){
   
$where "where cliente = '".$_POST['seccion']."'";
$sql "select * from banners $where LIMIT ".(($pagina-1) * $filas_pagina).", ".$filas_pagina;
}
                    else{
                    
$sql "select * from banners limit ".(($pagina-1)*$filas_pagina).",".$filas_pagina;}
y al ponerle print_r($_POST) me muestra en pantalla lo siguiente:
Código HTML:
Array ( [seccion] => jess [as] => Aceptar )
que podra ser?
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #6 (permalink)  
Antiguo 11/10/2010, 12:29
Avatar de ZydRick  
Fecha de Ingreso: febrero-2005
Ubicación: Lima
Mensajes: 750
Antigüedad: 19 años, 2 meses
Puntos: 4
Respuesta: Busuqeda no filtra por parametro

Prueba esto:

Código PHP:
<?php
    
if(isset($_POST['as'])) { // Si el formulario ha sido enviado
        
$sec $_POST['seccion'];
        
$desde = ($pagina-1)*$filas_pagina;
        
$sql "SELECT * FROM banners WHERE cliente = '$sec' LIMIT $desde,$filas_pagina";
        if(
$sec == 0) {
            
$sql "select * from banners limit $desde,$filas_pagina";
        }else {
            
$sql "SELECT * FROM banners WHERE cliente = '$sec' LIMIT $desde,$filas_pagina";
        }
    }else {
        
$sql "select * from banners limit $desde,$filas_pagina";
    }
?>
  #7 (permalink)  
Antiguo 11/10/2010, 12:34
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Busuqeda no filtra por parametro

PLOP, es que como tu pusiste:
<option value="0">Ver Todas</option>
Yo supuse que los otros valores serian numericos y no alfabeticos

En todo caso, lo unico que debes hacer es quitarle la validacion que si es mayor a 0....
Quedaria asi:
Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['seccion'])) $where = "where cliente = '".$_POST['seccion']."'";
  3. $sql = "select * from banners $where LIMIT ".(($pagina-1) * $filas_pagina).", $filas_pagina";
  4. ?>

ZydRick, no crees que son muchas sentencias ???
Se puede comprimir el codigo, asi como lo he puesto o de otras maneras......

Suerte
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #8 (permalink)  
Antiguo 11/10/2010, 12:47
 
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: Busuqeda no filtra por parametro

Gracias masterojitos tu respuesta me ha funcionado de maravilla, pero aora sucede que cuando elijan la opcion ver todos me muestra un listado de valores obtenidos de la siguiente consulta:


Código PHP:
 $sql "select * from banners limit ".(($pagina-1)*$filas_pagina).",".$filas_pagina
como podría obtener eso aplicandolo al codigo
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #9 (permalink)  
Antiguo 11/10/2010, 13:02
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Busuqeda no filtra por parametro

No entiendo muy bien tu pregunta....
Esa es o no la consulta correcta para mostrar todos ?? sin filtrar al cliente !!
O como quieres que quede la consulta ??
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #10 (permalink)  
Antiguo 11/10/2010, 13:09
 
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: Busuqeda no filtra por parametro

perdona por no explicarme bien, el codigo que me pasaste logra que se filtre la busqueda cuando se elije a un cliente, pero cuando elijo la opcion ver todos que tiene un valor de 0, no me muestra todos los valores de mi tabla y quisiera saber como hacer eso con el codgio que me pasaste, osea mas o menos asi:

*si elijo ver todos- consulta mi base de datos y traer todos los datos de mi tabla
*si elijo una opcion filtrar la busqueda por el cliente

espero a ver sido mas claro
saludos
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---
  #11 (permalink)  
Antiguo 11/10/2010, 13:17
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 15 años, 9 meses
Puntos: 105
Respuesta: Busuqeda no filtra por parametro

Ok ya te entendi, y lo siento yo, ya que el codigo que te pase no hace eso.... justamente cuando quite la validacion de > 0.

Este codigo funcionara si o si ^^
Código PHP:
Ver original
  1. <?php
  2. if(isset($_POST['seccion']) and $_POST['seccion'] != 0) $where = "where cliente = '".$_POST['seccion']."'";
  3. $sql = "select * from banners $where LIMIT ".(($pagina-1) * $filas_pagina).", $filas_pagina";
  4. ?>

Ya que solo filtrara si el valor es diferente de 0, es decir, diferente de ver todos.

Suerte y gracias por el karma
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #12 (permalink)  
Antiguo 11/10/2010, 13: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: Busuqeda no filtra por parametro

edito: probando respuesta

confirmo: si le aplico la validacion que sea mayor a cero no me filtra por cliente, solo funciona la opcion ver todos

reedito: he modificado algo del codigo y funciona perfecto gracias a masterojitos por la respuesta y tambien a ZydRick por el interes este es mi codigo final:

Código PHP:
Ver original
  1. if(isset($_POST['seccion']) and $_POST['seccion'] != "todos"){
  2. $where = "where cliente = '".$_POST['seccion']."'";
  3. $sql = "select * from banners $where LIMIT ".(($pagina-1) * $filas_pagina).",".$filas_pagina;
  4. }
  5.     else {
  6.         $sql = "select * from banners limit ".(($pagina-1)*$filas_pagina).",".$filas_pagina;
  7.     }

y modifique el form asi:

Código HTML:
Ver original
  1. <form name="form" action="banners.php" method="post" style="height:18px; margin-top:5px;">
  2.                   <select name="seccion" style="width:180px">
  3.                     <option value="todos">Ver Todas</option>
  4.                     <?php
  5.             $ssql = "select distinct cliente from banners";
  6.             $ql = mysql_query($ssql,$conn) or die(mysql_error());
  7.             while($g = mysql_fetch_array($ql)){
  8.             echo '<option value="'.$g['cliente'].'">'.$g['cliente']= ucwords(strtolower($g['cliente'])).'</option>';
  9.             }
  10.             ?>
  11.                   </select>
  12.                   <input type="submit" name="as" value="Aceptar" />
  13.                 </form>
__________________
--No todos aprendemos de la misma forma, ni a la misma velocidad---

Última edición por zapt142; 11/10/2010 a las 13:32

Etiquetas: parámetros
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 10:31.