Foros del Web » Programando para Internet » PHP »

Como filtrar esta consulta

Estas en el tema de Como filtrar esta consulta en el foro de PHP en Foros del Web. Hola a tod@s, tengo un problema al filtrar una consulta, no consigo que me filtre lo que quiero, pero primero pongo este trozo de código ...
  #1 (permalink)  
Antiguo 17/03/2012, 05:20
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 1 mes
Puntos: 0
Como filtrar esta consulta

Hola a tod@s, tengo un problema al filtrar una consulta, no consigo que me filtre lo que quiero, pero primero pongo este trozo de código ya que no se donde esta exactamente el problema y para que podais ayudarme creo que necesitais verlo desde una perspectiva completa. Aquí conecto con la base de datos y pongo las variables.
Código PHP:
<?php
    
require_once('../../Connections/myConexion.php');
    
$selactividad = isset($_GET["selactividad"])? $_GET["selactividad"]: '';
                
$criterio = isset($_GET["criterio"])? $_GET["criterio"]: '';
                
$txt_criterio=isset($_GET["txt_criterio"])? $_GET["txt_criterio"]: '';    

$criterio "";
if (isset(
$_GET['criterio'])) {
   
$txt_criterio $_GET["criterio"]; 
    
$criterio $txt_criterio
}    
?>
Tengo un select en mi página donde selecciono una actividad, el problema es que al entrar en la página la variable $selactividad tiene un valor NULO o cuando se selecciona "Seleccionar Actividad" en el select su Valor es "-1" en ambos casos quiero que aparezcan todos los clientes, y cuando seleccione una actividad en dicho select quiero que aparezcan solo los clientes cuya actividad coincide con la seleccionada.
Bueno aquí es donde se supone que esta mal el filtro ya que no consigo hacerlo funcionar, tal como esta aquí solo funciona si selecciono una actividad.
Código PHP:
<table width="965" height="80" border="0">
<?php
$sql 
"SELECT SQL_CALC_FOUND_ROWS * FROM clientes WHERE NombreComer like '%" $txt_criterio "%'";        

       if (isset(
$_GET['selactividad'])and $_GET['selactividad'] ='') {
          
$sql .= "AND clientes.Actividades = .$selactividad. ";
}
$sql .= ' ORDER BY NombreComer ASC ';
$sql .= 'LIMIT ' ;

if (!(
$result = @mysql_query($sql))) {
die(
mysql_error());
}
 
// Recuperar el número total de registros en la tabla
        
$rows mysql_fetch_assoc(mysql_query('SELECT FOUND_ROWS() AS rows'));

$tabla mysql_query($sql);
while (
$registro mysql_fetch_array($tabla)) {
?>
        <tr>
        <td width="195"><a href="<?php echo $registro['Url']; ?>"><?php echo $registro['NombreComer']; ?></a></td>
        </tr>
        
<?php
}
mysql_free_result($tabla);
?>
</table>

Este es el select que relleno desde una tabla, funciona bien ya que al seleccionar una actividad me envia el valor de dicha actividad a la variable $selactividad y si selecciono "Seleccionar Actividad" que es lo que pone por defecto me envia el valor "-1"

Código PHP:
<table width="955" height="30" border="0">
<td>
<form name="fecha" method="GET" action="General.php">
  <input name="criterio" type="text" size="20">
 
 <select name="selactividad" id="selactividad">
    <option value="-1" selected>Seleccionar Actividad</option>        
<?php 
     $tablaactividad 
mysql_query("SELECT * FROM clientes group by Actividades ORDER BY Actividades ASC"); 
     while (
$registroactividad mysql_fetch_array($tablaactividad)) {
?>
<option value="<?php echo $registroactividad['Actividades']; ?>"><?php echo $registroactividad['Actividades']; ?></option>
<?php
     

mysql_free_result($tablaactividad);
?>
</select>
<input type="submit" name="cmdBuscar" id="cmdBuscar" value="BUSCAR">
 </div>
</form>
</td>
</table>
Espero haberme esplicado bien para que me podais ayudar, Un saludo.
  #2 (permalink)  
Antiguo 17/03/2012, 06:59
 
Fecha de Ingreso: febrero-2012
Ubicación: N/A
Mensajes: 54
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Como filtrar esta consulta

Probando he encontrado esta forma de solucionarlo, no se si hay otra forma mejor de hacerlo o mas elegante:


Código HTML:
if (isset($_GET['selactividad'])and $_GET['selactividad'] <>'-1') {
        $sql .= "AND clientes.Actividades = '$selactividad' ";
	   }else {$sql .= "AND clientes.Actividades <> '-1' ";
}

Etiquetas: filtrar, mysql, registro, sql, tabla, 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 10:22.