Foros del Web » Programando para Internet » PHP »

Problemas con esta consulta

Estas en el tema de Problemas con esta consulta en el foro de PHP en Foros del Web. Estoy intentando armar una consulta a través de unos datos que se introducen o seleccionan a través de un select, este deria el codigo primero ...
  #1 (permalink)  
Antiguo 11/09/2013, 19:11
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 9 meses
Puntos: 0
Pregunta Problemas con esta consulta

Estoy intentando armar una consulta a través de unos datos que se introducen o seleccionan a través de un select, este deria el codigo

primero esta seria mi consulta para cuando no hay datos sin filtrar

Código PHP:
$sql_query='SELECT DISTINCT(promedio),id_granja FROM servicios'

aqui viene el primer dato de mi select y de acuerdo a lo recibido genero el primer filtro de mi consulta

Código PHP:
if(!isset($_POST['year'])){
     
$year '2013'// si no recibo nada, asigno el año actual
     
$sql_query .= ' WHERE YEAR(servicios.semana)=' $year;
   }  
else {
    
$year $_POST['year']; // si existe asigno el año para realizar el filtro.
    
$sql_query .= ' WHERE YEAR(servicios.semana)=' $year;        
    } 

aqui mi segundo valor recibido por el segundo select

Código PHP:
if(!isset($_POST['month']))
     
$month '0';
else{ 
    
$month $_POST['month'];
    
$sql_query .= ' AND MONTH(servicios.semana)=' . $$month;
  } 
una vez realizado esto genero mi consulta a la BD

Código PHP:
 $result $mysqli->query($sql_query)or die(mysql_error()); 
el problema es que siempre me da, por ejemplo si selecciono el año... el mes me indica 0, si selecciono el año, el mes se me pone a 0

y nunca me arroja nada la consulta

el forma quedaría asi.
Código:
<div id="filtros">
  <form name='filtros' method="post" action="servicios.php">
    <label>Mes :</label>
    <select name="month" size="1">
       <option value="0">- Sin Filtrar -</option> 
	   <option value="1">Enero</option>
	   <option value="2">Febrero</option>
	   <option value="3">Marzo</option>
	   <option value="4">Abril</option>
	   <option value="5">Mayo</option>
	   <option value="6">Junio</option>
	   <option value="7">Julio</option>
	   <option value="8">Agosto</option>
	   <option value="9">Septiembre</option>
	   <option value="10">Octubre</option>
	   <option value="11">Noviembre</option>
	   <option value="12">Diciembre</option>
    </select>
    <label>A&ntilde;o</label>
    <select name="year" size="1">
	   <option value="2013">2013</option>
	   <option value="2012">2012</option>
	   <option value="2011">2011</option>
	   <option value="2010">2010</option>
	</select>
    <input type="submit" name="Enviar" value="Actualizar" />
</form>
El archivo servicios.php es el mismo se los pongo para que vean como lo tengo

Código PHP:
<?php
//datos de conexion
//Primero leemos los datos enviados
//por el formulario

$sql_query='SELECT DISTINCT(promedio),id_granja FROM servicios';

if(!isset(
$_POST['year'])){
     
$year '2013';
     
$sql_query .= ' WHERE YEAR(servicios.semana)=' $year;
   }  
else {
    
$year $_POST['year'];
    
$sql_query .= ' WHERE YEAR(servicios.semana)=' $year;        
    }
 


if(!isset(
$_POST['month']))
     
$month '0';
else{ 
    
$month $_POST['month'];
    
$sql_query .= ' AND MONTH(servicios.semana)=' . $$month;
  }  

//echo $year.'<br>'.$month.'<br>'.$sql_query.'<br>';




  /* conexion a la BD */
  
$mysqli = new mysqli($DB_HOST$DB_USER$DB_PASS$DB_NAME);

  if (
mysqli_connect_errno()) {
    
printf("Connect failed: %s\n"mysqli_connect_error());
    exit();
  }

   
   
$result $mysqli->query($sql_query)or die(mysql_error());

    
//procedimiento para los datos de mi consulta...
   
?>
<html>
  <head>
    //cabecera js, etc
  </head>

  <body>
  <div id="filtros">
  <form name='filtros' method="post" action="servicios.php">
    <label>Mes :</label>
    <select name="month" size="1">
       <option value="0">- Sin Filtrar -</option> 
       <option value="1">Enero</option>
       <option value="2">Febrero</option>
       <option value="3">Marzo</option>
       <option value="4">Abril</option>
       <option value="5">Mayo</option>
       <option value="6">Junio</option>
       <option value="7">Julio</option>
       <option value="8">Agosto</option>
       <option value="9">Septiembre</option>
       <option value="10">Octubre</option>
       <option value="11">Noviembre</option>
       <option value="12">Diciembre</option>
    </select>
    <label>A&ntilde;o</label>
    <select name="year" size="1">
       <option value="2013">2013</option>
       <option value="2012">2012</option>
       <option value="2011">2011</option>
       <option value="2010">2010</option>
    </select>
    <input type="submit" name="Enviar" value="Actualizar" />
</form>

    
    
    
  </div>
<div>
//muestro de forma ordenada mi consulta, ya sea en una tabla etc...
  </div>
    
  </body>
</html>
el problema que mi consulta no me genera ningun dato... si alguien me puede ayudar de antemano muchas gracias.
  #2 (permalink)  
Antiguo 11/09/2013, 20:57
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas con esta consulta

¿Has notado que usas $$month con 2 $ en lugar de un solo $ como debe ser?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 12/09/2013, 06:08
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Problemas con esta consulta

Aparte de lo que dice pateketrueke, imprime la consulta para ver como queda
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.
  #4 (permalink)  
Antiguo 12/09/2013, 09:30
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 18 años, 9 meses
Puntos: 0
Respuesta: Problemas con esta consulta

gracias por su respuesta me puse a revisar el código y modifique la siguientes lineas donde recibo los valores de los select y se me corrigió el error el codigo queda de la siguiente manera:

Código PHP:
if(!isset($_POST['year'])){
     
$year '2013';
     
$sql_query .= ' WHERE YEAR(servicios.semana)=' $year;
   }  
else {
    
$year $_POST['year'];
    
$sql_query .= ' WHERE YEAR(servicios.semana)=' $year;        
    }
 


if(!isset(
$_POST['month']))
     
$month '0';
else 
$month $_POST['month'];
if(
$month!='0'
    
$sql_query .= ' AND MONTH(servicios.semana)=' $month;

echo 
$year.'<br>'.$month.'<br>'.$sql_query.'<br>'
mi pregunta es, habrá una manera de que quede mejor esta comprobación, SkAr88 la ultima linea es para imprimir la consulto y los valores que se obtienen por post
la consulta se me imprime asi

Código:
2013
6
SELECT DISTINCT(promedio),id_granja FROM servicios WHERE YEAR(servicios.semana)=2013 AND MONTH(servicios.semana)=6

por ejemplo al recargar la pagina con los nuevos valores enviados por select los elementos select del formulario me gustaria que quedaran con los valores enviados por $_POST, pero no se como hacerlo. si ustedes me pueden ayudar de antemano muchas gracias.

Última edición por bendark23; 12/09/2013 a las 09:42 Razón: falto un ultimo comentario
  #5 (permalink)  
Antiguo 12/09/2013, 17:08
Avatar de xSkArx  
Fecha de Ingreso: marzo-2008
Ubicación: Chile
Mensajes: 945
Antigüedad: 16 años, 1 mes
Puntos: 96
Respuesta: Problemas con esta consulta

Puedes usar esto http://forums.phpfreaks.com/topic/12...cted-with-php/
O esto http://stackoverflow.com/questions/2...-mysql-and-php
__________________
Busca, lee y practica todo lo que puedas.
Usa siempre el buscador antes de postear.
Si posteas código, utiliza el HIGHLIGHT correcto.

Etiquetas: mysql+consulta
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 07:55.