Foros del Web » Programando para Internet » PHP »

Porque no Funciona? error en consulta

Estas en el tema de Porque no Funciona? error en consulta en el foro de PHP en Foros del Web. tengo una tabla general llamada partos_server en ella tengo registrada años que van desde el 2010 - 2011 - 2012 - 2013. cada una contiene ...
  #1 (permalink)  
Antiguo 24/10/2013, 19:42
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 19 años, 5 meses
Puntos: 0
Porque no Funciona? error en consulta

tengo una tabla general llamada partos_server en ella tengo registrada años que van desde el 2010 - 2011 - 2012 - 2013. cada una contiene informacion de varios sitios identificados por site_id, los sitios son 7: 20 - 21 - 22 -23 -24 -25 - 27.


bien lo que ocupo es sacar datos promedio de cada sitio por cada semana del año. de los 4 años.

mi tabla luce mas o menos asi.

Código:
id    site_id    vivos   muertos   momificados                peso        evento                  semana *aki guardo el numero de la semana segun la fecha
1      20            13         0               1                  9.99          2012-09-29
1      21            17         0               0                  11.99          2013-09-29
1      22            18         0               0                  12          2011-09-29
1      20            11         1               2                  8          2010-09-29
1      22            9           2               0                  9.99          2011-09-29
1      22            10         0               1                  14          2013-09-29

bien para ello mu ayude de ciclos.. soy novato quizas haya una forma de hacerlo mas rapido pero no se me ocurre nada para mejorarlo - por supuesto que estoy abierto a mejorar el codigo.

aqui el codigo de la tabla granjas saco la informacion del site_id segun el tipo de granja

Código PHP:
$sql mysql_query("SELECT site_id FROM granjas where granja_tipo=2");/* identifico las granjas que me interesan
  while( $row = mysql_fetch_array( $sql) ) {
        $granja[] = $row['site_id'];
        $i++ ;
      }
  //echo implode(",", $granja)."<br>";
  //echo "Las Granjas son ".$i."<br>";
  $sql2 = mysql_query("SELECT DISTINCT (YEAR( evento )) as anio FROM partos_server"); /* saco los diferentes años que estan en las tablas
  while( $row = mysql_fetch_array( $sql2) ) {
    $anio[] = $row['anio'];
    $a++;
    }
   // echo implode(",", $anio)."<br>";
   // echo "Los Años son ".$a."<br>"; 
    
    echo "<table>"; //EMPIEZA A CREAR LA TABLA CON LOS ENCABEZADOS DE TABLA
     echo "<tr>";//<tr> CREA UNA NUEVA FILA
     echo "<td>Sitio</td>";//<td> CREA NUEVA COLUMNA
     echo "<td>prom Nacido</td>";
     echo "<td>Fecha</td>";
     echo "<td>Semana</td>";
     echo "</tr>"; 
     for ( $j = 0 ; $j < $i ; $j ++) { /* ciclo de las granjas
        for ( $b = 0 ; $b < $a ; $b ++) { /* ciclo de los años
           $s=0; unset($semana);

            $sql3 = mysql_query("SELECT DISTINCT(semana) as semana FROM partos_server where YEAR(evento)=".$anio[$b]);
            while( $row = mysql_fetch_array( $sql3) ) { /* saco el numero de las semanas segun los años
                $semana[] = $row['semana'];
                $s++;
              }
           
            echo implode(",", $semana)." AÑO ".$anio[$b]."<br>";
            for ( $t = 0 ; $t < $s ; $t++) {
                
                $query = @mysql_query("SELECT AVG(vivos) as promedio,site_id,year(evento)
                                      as anio FROM `partos_server` WHERE site_id = ".$granja[$j]."  and YEAR(evento)=".$anio[$b]." and semana = ".$semana[$t]) or die("Error en Consulta.- ".mysql_error());
                //echo "SELECT AVG(vivos) as promedio,site_id,year(evento) as anio,semana FROM `partos_server` WHERE site_id =".$granja[$j]." and YEAR(evento)=".$anio[$b]." and semana =".$semana[$t]."<br>";                      
                 
                    $reg = mysql_fetch_array($query, MYSQL_BOTH);//LA VARIABLE $REG GUARDA LOS REGISTROS DE LA CONSULTA REALIZADA
                    echo "<tr>";
                        echo "<td>".$site = $reg['site_id']."</td>";//EN CADA CELDA SE COLOCA EL CONTENIDO DE REG
                        echo "<td>".$promedio = round($reg['promedio'],2)."</td>";
                        echo "<td>".$anio = $reg['anio']."</td>";
                        echo "<td>".$semana = $reg['semana']."</td>";
                        $reg = mysql_fetch_array($query, MYSQL_BOTH);
                   echo "</tr>";
                 } 
            
              
            }
           
          }
        echo "</table>";//FINALIZA LA TABLA 

el error es este en uno de los saltos del ciclo el arreglo semana[] me toma valores que ni al caso tales como / , d - a, t etc y no entiendo porque aqui les pongo lo que me sale cuando corro mi archivo php

Código:
39,34,36,35,38,33,44,43,37,41,42,40,45,46,13,14,17,1,21,3,15,5,26,19,16,2,22,18,20,4,24,23,11,31,12,32,25,6,7,27,30,8,29,28,10,9,48,47,50,51,49,52 AÑO 2012
Error en Consulta.- You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/' at line 2
Sitio	prom Nacido	Fecha	Semana
20	11.9	2012
de antemano muchas gracias.
  #2 (permalink)  
Antiguo 24/10/2013, 19:47
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 13 años, 3 meses
Puntos: 31
Respuesta: Porque no Funciona? error en consulta

Error de sintaxis linea 2 --> no cerraste el comentario, en vez de:

/* identifico las granjas que me interesan

debería ser:

/* identifico las granjas que me interesan */


Saludos
  #3 (permalink)  
Antiguo 25/10/2013, 00:39
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: Porque no Funciona? error en consulta

Cita:
Iniciado por cachusan Ver Mensaje
Error de sintaxis linea 2 --> no cerraste el comentario, en vez de:

/* identifico las granjas que me interesan

debería ser:

/* identifico las granjas que me interesan */


Saludos
gracias x responder pero ese no es el problema ese comentario lo puse al momento de escribir el post nada mas para dejar clara la intencion de cada instruccion. En mi codigo no tengo comentarios explicativos salvo las lineas que estan con //echo... gracias x tu respuesta
  #4 (permalink)  
Antiguo 25/10/2013, 10:20
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 13 años, 3 meses
Puntos: 31
Respuesta: Porque no Funciona? error en consulta

Mostrame el codigo sin comentarios, tal cual como te da el error para poder ayudarte.
saludos
  #5 (permalink)  
Antiguo 25/10/2013, 10:57
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: Porque no Funciona? error en consulta

este es el codigo con los echo para mostrar lo que sale en cada consulta.

Código PHP:
error_reporting(E_ERROR E_WARNING E_PARSE);

mysql_connect("localhost""root""");
mysql_select_db("dashboard");
$sql mysql_query("SELECT site_id FROM granjas where granja_tipo=2");
while (
$row mysql_fetch_array($sql)) {
    
$granja[] = $row['site_id'];
    
$i++;
}
echo 
implode(","$granja) . "<br>";
echo 
"Las Granjas son " $i "<br>";
$sql2 mysql_query("SELECT DISTINCT (YEAR( evento )) as anio FROM partos_server");
while (
$row mysql_fetch_array($sql2)) {
    
$anio[] = $row['anio'];
    
$a++;
}
echo 
implode(","$anio) . "<br>";
echo 
"Los Años son " $a "<br>";

echo 
"<table>";
echo 
"<tr>";
echo 
"<td>Sitio</td>";
echo 
"<td>prom Nacido</td>";
echo 
"<td>Fecha</td>";
echo 
"<td>Semana</td>";
echo 
"</tr>";
for (
$j 0$j $i$j++) {
    for (
$b 0$b $a$b++) {
        
$s 0;
        unset(
$semana);

        
$sql3 mysql_query("SELECT DISTINCT(semana) as semana FROM partos_server where YEAR(evento)=" .
            
$anio[$b]);
        while (
$row mysql_fetch_array($sql3)) {
            
$semana[] = $row['semana'];
            
$s++;
        }

        echo 
implode(","$semana) . " AÑO " $anio[$b] . "<br>";
        for (
$t 0$t $s$t++) {

            
$query = @mysql_query("SELECT AVG(vivos) as promedio,site_id,year(evento)
                                      as anio FROM `partos_server` WHERE site_id = " 
.
                
$granja[$j] . "  and YEAR(evento)=" $anio[$b] . " and semana = " $semana[$t]) or
                die(
"Error en Consulta.- " mysql_error());
            echo 
"SELECT AVG(vivos) as promedio,site_id,year(evento) as anio,semana FROM `partos_server` WHERE site_id =" .
                
$granja[$j] . " and YEAR(evento)=" $anio[$b] . " and semana =" $semana[$t] .
                
"<br>";

            
$reg mysql_fetch_array($queryMYSQL_BOTH);
            echo 
"<tr>";
            echo 
"<td>" $site $reg['site_id'] . "</td>";
            echo 
"<td>" $promedio round($reg['promedio'], 2) . "</td>";
            echo 
"<td>" $anio $reg['anio'] . "</td>";
            echo 
"<td>" $semana $reg['semana'] . "</td>";
            
$reg mysql_fetch_array($queryMYSQL_BOTH);
            echo 
"</tr>";
        }


    }

}
echo 
"</table>"

y esto es lo que me arroja como resultado

Código:
20,21,22,23,24,25,31
Las Granjas son 7
2012,2010,2011,2013
Los Años son 4
39,34,36,35,38,33,44,43,37,41,42,40,45,46,13,14,17,1,21,3,15,5,26,19,16,2,22,18,20,4,24,23,11,31,12,32,25,6,7,27,30,8,29,28,10,9,48,47,50,51,49,52 AÑO 2012
SELECT AVG(vivos) as promedio,site_id,year(evento) as anio,semana FROM `partos_server` WHERE site_id =20 and YEAR(evento)=2012 and semana =39
Error en Consulta.- You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '/' at line 2
Sitio	prom Nacido	Fecha	Semana
20	11.9	2012

el array $semana[$t] esta agarrando valores como una / , d , t ... etc. y no entiendo porque.. gracias por tu ayuda.
  #6 (permalink)  
Antiguo 25/10/2013, 11:16
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 13 años, 3 meses
Puntos: 31
Respuesta: Porque no Funciona? error en consulta

Puede ser por no estar encerrado entre comillas, si el que te trae problemas es $semana probá asi:

Código PHP:
Ver original
  1. $query = @mysql_query("SELECT AVG(vivos) as promedio,site_id,year(evento) as anio FROM `partos_server` WHERE site_id = " .
  2.                 $granja[$j] . "  and YEAR(evento)=" . $anio[$b] . " and semana = '" . $semana[$t] . "'") or
  3.                 die("Error en Consulta.- " . mysql_error());
  #7 (permalink)  
Antiguo 25/10/2013, 11:38
 
Fecha de Ingreso: julio-2005
Mensajes: 73
Antigüedad: 19 años, 5 meses
Puntos: 0
Respuesta: Porque no Funciona? error en consulta

Cita:
Iniciado por cachusan Ver Mensaje
Puede ser por no estar encerrado entre comillas, si el que te trae problemas es $semana probá asi:

Código PHP:
Ver original
  1. $query = @mysql_query("SELECT AVG(vivos) as promedio,site_id,year(evento) as anio FROM `partos_server` WHERE site_id = " .
  2.                 $granja[$j] . "  and YEAR(evento)=" . $anio[$b] . " and semana = '" . $semana[$t] . "'") or
  3.                 die("Error en Consulta.- " . mysql_error());
gracias por tu respuesta reemplaze el query por el que me sugieres y me arroja este resultado

Código:
20,21,22,23,24,25,31
Las Granjas son 7
2012,2010,2011,2013
Los Años son 4
39,34,36,35,38,33,44,43,37,41,42,40,45,46,13,14,17,1,21,3,15,5,26,19,16,2,22,18,20,4,24,23,11,31,12,32,25,6,7,27,30,8,29,28,10,9,48,47,50,51,49,52 AÑO 2012
SELECT AVG(vivos) as promedio,site_id,year(evento) as anio,semana FROM `partos_server` WHERE site_id =20 and YEAR(evento)=2012 and semana =39
SELECT AVG(vivos) as promedio,site_id,year(evento) as anio,semana FROM `partos_server` WHERE site_id =20 and YEAR(evento)=2 and semana =/
Error en Consulta.- You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '=< and semana = 't'' at line 1
Sitio	prom Nacido	Fecha	Semana
20	11.9	2012	
0
tengo varios dias con este problema.. creo que mi logica esta bien. pero no se porque la ultima variable agarra esos valores.
  #8 (permalink)  
Antiguo 25/10/2013, 16:35
 
Fecha de Ingreso: septiembre-2011
Mensajes: 219
Antigüedad: 13 años, 3 meses
Puntos: 31
Respuesta: Porque no Funciona? error en consulta

Mmm, si, es un problema de los datos que trae del campo, vas a tener que limpiar la variable $semana (y cualquier otra que genere problemas) antes de pasarla a la consulta.

podes utilizar para testear, stripslashes(), su uso es simple:

stripslashes($semana[$t])
  #9 (permalink)  
Antiguo 25/10/2013, 19:27
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Porque no Funciona? error en consulta

Vamos a intentar una limpieza de codigo basura:
Código PHP:
 <?php
error_reporting
(E_ERROR E_WARNING E_PARSE);

mysql_connect("localhost""root""");
mysql_select_db("dashboard");
$sql mysql_query("SELECT site_id FROM granjas where granja_tipo = 2");
while (
$row mysql_fetch_array($sql)) {
    
$granja[] = $row['site_id'];
    
$i++;
}
echo 
implode(","$granja) . "<br>";
echo 
"Las Granjas son " $i "<br>";
$sql2 mysql_query("SELECT DISTINCT YEAR(evento) anio FROM partos_server");
while (
$row mysql_fetch_array($sql2)) {
    
$anio[] = $row['anio'];
    
$a++;
}
echo 
implode(","$anio) . "<br>";
echo 
"Los Años son " $a "<br>";

echo 
"<table>";
echo 
"<tr>";
echo 
"<td>Sitio</td>";
echo 
"<td>prom Nacido</td>";
echo 
"<td>Fecha</td>";
echo 
"<td>Semana</td>";
echo 
"</tr>";
for (
$j 0$j $i$j++) {
    for (
$b 0$b $a$b++) {
        
$s 0;
        unset(
$semana);

        
$sql3 mysql_query("SELECT DISTINCT(semana) as semana FROM partos_server where YEAR(evento)=" .
            
$anio[$b]);
        while (
$row mysql_fetch_array($sql3)) {
            
$semana[] = $row['semana'];
            
$s++;
        }

        echo 
implode(","$semana) . " AÑO " $anio[$b] . "<br>";
        for (
$t 0$t $s$t++) {
            
$qry "SELECT AVG(vivos) promedio, site_id, YEAR(evento) anio ";
            
$qry .= " FROM `partos_server` ";
            
$qry .= " WHERE site_id = ".$granja[$j]." and YEAR(evento) = ".$anio[$b]." AND semana = ".$semana[$t];
            
$query mysql_query($qry) or die("Error en Consulta.- " mysql_error());
            echo 
$qry."<br>";
            if(
$query)
                {
                while (
$reg mysql_fetch_array($queryMYSQL_BOTH))
                    {
                    echo 
"<tr>";
                    echo 
"<td>" $site $reg['site_id'] . "</td>";
                    echo 
"<td>" $promedio round($reg['promedio'], 2) . "</td>";
                    echo 
"<td>" $anio $reg['anio'] . "</td>";
                    echo 
"<td>" $semana $reg['semana'] . "</td>";
                    }
                echo 
"</tr>";
               }
        }
    }

}
echo 
"</table>";  
?>
Lo que quisiera estacar es que el error que estás recibiendo no pertenece a la query que ejecutas en esta instancia, ya que en ninguna parte de ella aparece este bloque:
Cita:
'=< and semana = 't'
que es el indicado como cercano al error. Si hay un error, en otras palabras, es en alguna parte posterior a estas queries.
La única forma en que se pueda producir es que en alguna parte haya una consulta que contenga el "<=", y que esa consulta esté usando una variable vacía o nula, lo que explicaría que no haya ningún valor antes del AND.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: consultas+mysql, php+mysql
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 08:18.