NECESITO MAS AYUDA

VIC
04 de Enero del 2006
EN EL ANTERIOR MENSAJE INCLUI UN CODIGO QUE NO ES CORRECTO Y LO HE CORREGIDO:
$annio=$_POST[\'anio\'];

for ($i=1;$i<13;$i++){
$sql="Select sum(t_presupuestos_7_1.ingresos) as ingresos , sum(t_presupuestos_7_1.ocupacion) as ocupacion from t_presupuestos_7_1 where mes=".$i." and anio=".$annio." and (";
for($j=0;$j<count($arestablecimientos);$j++)
{
if ($j!=(count($arestablecimientos)-1)){
//la linea de error:
$sql=$sql."idestablecimiento=".$arestablecimientos[$j]." or ";
}else{
$sql=$sql."idestablecimiento=".$arestablecimientos[$j].")";
}
$datos=mysql_query($sql);
[email protected]_fetch_array($datos);

echo "<td align=\'right\'>".number_format(@(($rdatos[\'ingresos\']/$rdatos[\'ocupacion\'])),2,\',\',\'.\')."</td>";
//del for
}
}
CON ESTO ME CALCULA BIEN LA CIFRA DE PRESUPUESTOS SIEMPRE QUE LA CUENTA DE ESTABLECIMIENTOS SEA 1, PERO EN EL MOMENTO QUE SUPERA ESA CIFRA ME INCLUYE TANTOS 0,00 COMO ESTABLECIMIENTOS PONGA SEGUIDOS DEL VALOR AUTENTICO.

POR FAVOR AYUDA

Califa
04 de Enero del 2006
Hola, la verdad es que no entiendo muy bien el código (qué es lo que hace, qué devuelve, qué contiene $arestablecimientos y cómo está armado —tiene pinta de array—, etc), pero acá veo algo raro:

if ($j!=(count($arestablecimientos)-1)){
//la linea de error:
$sql=$sql."idestablecimiento=".$arestablecimientos[$j]." or ";
}else{
$sql=$sql."idestablecimiento=".$arestablecimientos[$j].")";
}

Estás diciendo que si se cumple una condición, agregue a $sql una línea; y SI NO no se cumple, que agregue la otra.
Si se cumple la condición, va a agregar: "idestablecimiento=".$arestablecimiento[$j]." or ";
Fijate en "or": ¿o qué?. ¿Ves lo que digo? El resultado de la consulta va a ser algo así:

"Select sum(t_presupuestos_7_1.ingresos) as ingresos , sum(t_presupuestos_7_1.ocupacion) as ocupacion from t_presupuestos_7_1 where mes=10 and anio=2005 and ( idestablecimiento=".$arestablecimientos[$j]." or ";

Si no se cumple la condición, el resultado va a ser el mismo, salvo por el "or". No sé qué función cumple el "or", pero tal vez te hayas olvidado de algo o esté de más. Ahora, si está de más, el if..else no tiene mayor sentido, ya que en cualquier caso (si se cumple la condifión [if] o si no se cumple [else]) estaría agregando lo mismo a la variable $sql.

Bueno, no sé si te servirá, espero que en una de esas te dé una pista.

Suerte.