¿Ayuda con sintaxis php!?
Hola! tengo el siguiente código pero me marca error en la línea marcada con ** al momento de correrlo.. pienso que la sintaxis esta mal pero no tengo idea de como ponerla Espero puedan ayudarme! Gracias
$bd = mysql_select_db("mibd",$connect);
$prueba = "select f.num_partida, f.anio, f.monto_total, c.monto_partida,(c.monto_partida-f.monto_total) as resta from factura f, contrato c where f.num_partida = c.num_partida";
$res = mysql_query ("SELECT num_partida, SUM( monto_total ) as total FROM factura GROUP BY num_partida");
$resultado = mysql_query ($prueba,$connect);
$filas = mysql_num_rows ($resultado);
if ($filas == 0)
{
print "<b>No se encontraron resultados</b>";
}
else
?>
<?php
{
while ($row= mysql_fetch_assoc($res))
while ($raw=mysql_fetch_array($resultado))
{
?>
<br />
<br />
<tr>
<?php
echo "<td><a href=\"actualizar.php?num_partida=".$raw ['num_partida']."\">";
echo $raw['num_partida']."</a></td>";
?>
<td align="center" bgcolor="#FFFFFF"><?php echo number_format($raw ["monto_partida"],2,".",",");?></td>
<td align="center" bgcolor="#FFFFFF"><?php echo number_format($raw ["resta"],2,".",",");?></td>
**<td align="center" bgcolor="#FFFFFF"><?php echo ('num_partida:'.$row [partida].' | monto_total:'.$row[total]);?></td>
<td align="center" bgcolor="#FFFFFF"><?php print $raw ["anio"];?> </td>
<td><a href="eliminate.php?num_partida=<?php echo $raw ["num_partida"];?>">Eliminar</a></td>
</tr>
<?php
}
}
?>
Update:Por fin lo logré!! el problema eran mis querys.. quedó así:
SELECT f.num_partida, f.monto_total, f.anio, c.monto_partida, SUM( monto_total ) as total ,(c.monto_partida-f.monto_total) as resta FROM factura f
inner join contrato c on c.num_partida = f.num_partida GROUP BY f.num_partida
Gracias por sus respuestas!!
Comments
$row [partida] => Este index no existe. Debes usar 'num_partida' que es la columna que usaste en la consulta.
Aunque esto deberia indicarte un error de index, no de sintaxis.
Tambien te recomiendo usar otro tipo de formato en los while,for,if,etc :
<?php if(): ?>
<?php endif ?>
<?php while(): ?>
aca codigo HTML
<?php endwhile ?>
Esto es util, cuando el documento no es php puro. A veces no se sabe bien si el tag de cierre "}" corresponde a un if, un for, foreach .... puede ser cualquier cosa xD ... es solo una recomendacion ^^
Por ejemplo:
if ($filas == 0):
print "<b>No se encontraron resultados</b>";
else:
while ($row= mysql_fetch_assoc($res))
while ($raw=mysql_fetch_array($resultado)):
?>
<tr>
<?php
echo "<td><a href=\"actualizar.php?num_partida=".$raw ['num_partida']."\">";
echo $raw['num_partida']."</a></td>";
?>
<td align="center" bgcolor="#FFFFFF"><?php echo number_format($raw ["monto_partida"],2,".",",");?></td>
<td align="center" bgcolor="#FFFFFF"><?php echo number_format($raw ["resta"],2,".",",");?></td>
<td align="center" bgcolor="#FFFFFF"><?php echo ('num_partida:'.$row [num_partida].' | monto_total:'.$row[total]);?></td>
<td align="center" bgcolor="#FFFFFF"><?php print $raw ["anio"];?> </td>
<td><a href="eliminate.php?num_partida=<?php echo $raw ["num_partida"];?>">Eliminar</a></td>
</tr>
<?php
endwhile;
endif;
?>
----- EDIT ------
Faltaba un buen pedazo de la consulta XD. Me alegro que hayas solucionado el problema.
<?php
#Adquirimos todas las variables
$lib = $_GET["libreria"];
$nom = $_GET["nombre"];
$fec1 = $_GET["fecini1"];
$fec2 = $_GET["fecfin1"];
$rec = $_GET["rea"];
#Conectamos con PostgreSQL
$conexion = pg_connect("host=192.168.2.2 port=5432 dbname=infcom2 user=luis
password=htchd2t9193") or
die ("Fallo en el establecimiento de la conexión");
$aux = 0;
$fec12 = $_GET["fecinia"];
$fec22 = $_GET["fecfina"];
if($lib=="72")
{
$aux = "librerias.admin=72 and";
}
if($lib=="73")
{
$aux = "librerias.admin=73 and";
}
if($lib=="nada")
{
$aux = "";
}
#Efectuamos la consulta SQL
$result2 = pg_query($conexion, "SET client_encoding = 'UTF8';set datestyle to 'postgres';select cvelib,nomcor,q1.*,q2.* from librerias left join (select ven01.modulo,sum(ven02.cant)as cant,sum(ven02.cant*precio)as importe,sum(ven02.cant*precio*(ven02.descto/100.00))as descuento,sum((ven02.cant*precio)*(1-(ven02.descto/100))*(1+(position('S' in ven02.iva)/ven01.piva)))as neto from ven01,ven02
where ven01.modulo=ven02.modulo and ven01.no_mov=ven02.no_mov and status='' and ven01.fecha between '$fec1' and '$fec2' and tl='$nom' group by ven01.modulo) q1 on (librerias.cvelib=q1.modulo) left join (select ven01.modulo,sum(ven02.cant)as cant1,sum(ven02.cant*precio)as importe1,sum(ven02.cant*precio*(ven02.descto/100.00))as descuento1,sum((ven02.cant*precio)*(1-(ven02.descto/100))*(1+(position('S' in ven02.iva)/ven01.piva)))as neto1 from ven01,ven02
where ven01.modulo=ven02.modulo and ven01.no_mov=ven02.no_mov and status='' and ven01.fecha between '$fec12' and '$fec22' and tl='$nom' group by ven01.modulo) q2 on (librerias.cvelib=q2.modulo)
where $aux ( (cant>0 or cant1>0) or (cant>0 and cant1>0) );" );
$x = 0;
$datos = pg_fetch_all($result2);
if(isset($_GET['callback'])){ // Si es una petición cross-domain
echo $_GET['callback'].'('.json_encode($datos).')';
}
else // Si es una normal, respondemos de forma normal
echo json_encode(array('data'=>$datos));
?>