Foros del Web » Programando para Internet » PHP »

Busqueda por filtro php

Estas en el tema de Busqueda por filtro php en el foro de PHP en Foros del Web. Hola como estan quiero hacer una busqueda con filtros php pero estoy trabado esta es la sentencia sql que uso Código: SELECT * FROM curriculums ...
  #1 (permalink)  
Antiguo 10/10/2013, 10:18
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Busqueda por filtro php

Hola como estan quiero hacer una busqueda con filtros php pero estoy trabado


esta es la sentencia sql que uso

Código:
SELECT * FROM curriculums WHERE numero LIKE '%$dni%' and TIMESTAMPDIFF(YEAR, fechanacdia, CURDATE()) BETWEEN '$edaddesde' and'$edadhasta' and fem = '$sexo2' or masc = '$sexo2' localidad LIKE '$localidad'
No estoy teniendo exito ,
este es el html

quiero destacas que en mi base de datos tengo dos columnas una fem y otra masc, si es fem tiene un "2" y mas NULL y si es masculino masc tiene "1" y fem NULL

Código:
<li>
				<label> Sexo </label>
			<select name="sexo">
			<option value="">Seleccionar sexo</option>
            <option value="1">Masculino</option>
            <option value="2">Femenino</option>
            
            </select>
		
			</li>
			<br>
			<li>
			<label> Edad </label>
			<br>
			<label> Desde</label>
			<input class="txtinput" name="edaddesde" type="text"> </input>
				<label> Hasta</label>
			<input class="txtinput" name="edadhasta" type="text"> </input>
			</li>
			
			<br>
			<li>
			<label> DNI </label>
			
			
			<input class="txtinput" name="dni" type="text"> </input>
				
			</li>
			
			
			<li>
			<label> Localidad </label>
			<select name="localidad">
            <option value="">Seleccione Localidad</option>
           <option value="Localidaduno" >Localidad 1 </option>
<option value="Localidaddos" >Localidad 2</option>
<option value="Localidadtres" >Localidad 3</option>

            </select>
			</li><br>
  #2 (permalink)  
Antiguo 10/10/2013, 11:19
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Busqueda por filtro php

Hola, algunas recomendaciones.

1.- Coloca las comparaciones de sql entre perentesis, para se ejecute como tu quieres.
Ejemplo
No es lo mismo.
$a=(10+1)*(10+1);
$a=10 + 1 * 10+1;

2.-Deberias tener solo un campo sexo e insertarle (masc/fem) ó (1/0).

Saludos
  #3 (permalink)  
Antiguo 10/10/2013, 11:44
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Busqueda por filtro php

SELECT * FROM curriculums WHERE (numero LIKE '%$dni%') and ( TIMESTAMPDIFF(YEAR, fechanacdia, CURDATE()) BETWEEN '$edaddesde' and'$edadhasta') and (sexo = '%$sexo%') and (localidad LIKE '$localidad')



me devuelve 0 columnas cuando no deberia
  #4 (permalink)  
Antiguo 10/10/2013, 12:04
Avatar de h2swider  
Fecha de Ingreso: julio-2007
Ubicación: Ciudad de Buenos Aires
Mensajes: 932
Antigüedad: 16 años, 9 meses
Puntos: 194
Respuesta: Busqueda por filtro php

guarda tu query en una variable e imprimela en pantalla, luego tirala en algún gestor como phpmyadmin y ahí te fijas que sucedió.

Otra manera es mostrar el mysql error directamente desde php.

Saludos
__________________
Codifica siempre como si la persona que finalmente mantedra tu código sea un psicópata violento que sabe donde vives
  #5 (permalink)  
Antiguo 10/10/2013, 12:28
 
Fecha de Ingreso: enero-2012
Mensajes: 224
Antigüedad: 12 años, 3 meses
Puntos: 1
Respuesta: Busqueda por filtro php

el error es de la sentencia , lo probe en la consola y me da 0 tambien,
el problema es cuando en algunos de los campos no pongo nada por ejemplo

Código:
SELECT * FROM curriculums WHERE (numero LIKE '') and ( TIMESTAMPDIFF(YEAR, fechanacdia, CURDATE()) BETWEEN '' and '') and (sexo = '') and (localidad LIKE '%$Burzaco%')
MySQL ha devuelto un conjunto de valores vacío (es decir: cero columnas). ( La consulta tardó 0.0004 seg )

Etiquetas: busqueda, fecha, html, select, sql
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 20:31.