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.