Buenas, estoy atorado en una tontería aparentemente estoy empezando con Php y MySQL. Y voy desarrollando una rutina para extraer los datos con una consulta SQL que genera una sumatoria en 2 campos totgenfac (total facturado) y totgencob (total cobrado) y posteriormente realizo una resta para saber lo que queda por cobrar. La rutina me funciona perfectamente pero cuando lo convierto en Función DEJA DE FUNCIONAR. He buscando en la documentación pero no logro conseguir la razón ¿Será que las instrucciones; mysql_select_db, mysql_query, mysql_fetch_assoc no trabajan dentro de las funciones?. Gracias.
ESTO FUNCIONA PERFECTAMENTE
<?php
require_once('../Connections/cn.php');
mysql_select_db($database_cn, $cn);
$query_Recordset1 = "SELECT
IF (tpdcxc='FAC',SUM(documcxc.totgencxc),IF (tpdcxc='N/C',SUM(documcxc.totgencxc*-1),IF (tpdcxc='N/D',SUM(documcxc.totgencxc),sum(0)))) as totgenfac,
IF (tpdcxc='FAC',SUM(documcxc.totcobcxc),IF (tpdcxc='N/C',SUM(documcxc.totcobcxc*-1),IF (tpdcxc='N/D',SUM(documcxc.totcobcxc),sum(0)))) as totgencob
FROM
documcxc
WHERE
documcxc.tpdcxc IN ('FAC', 'N/C', 'N/D') and estcxc IN ('0', '1')";
$Recordset1 = mysql_query($query_Recordset1, $cn) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totPendxCobrar = number_format (($row_Recordset1['totgenfac'] - $row_Recordset1['totgencob']), 2 , "." , "," );
$pocTotPendxCobrar = number_format (((($row_Recordset1['totgenfac'] - $row_Recordset1['totgencob']) * 100) / $row_Recordset1['totgenfac']), 2 , "." , "," );
mysql_free_result($Recordset1);
?>
ESTO NO FUNCIONA PARA NADA
<?php
require_once('../Connections/cn.php');
function CobradoVsFacturado(){
mysql_select_db($database_cn, $cn);
$query_Recordset1 = "SELECT
IF (tpdcxc='FAC',SUM(documcxc.totgencxc),IF (tpdcxc='N/C',SUM(documcxc.totgencxc*-1),IF (tpdcxc='N/D',SUM(documcxc.totgencxc),sum(0)))) as totgenfac,
IF (tpdcxc='FAC',SUM(documcxc.totcobcxc),IF (tpdcxc='N/C',SUM(documcxc.totcobcxc*-1),IF (tpdcxc='N/D',SUM(documcxc.totcobcxc),sum(0)))) as totgencob
FROM
documcxc
WHERE
documcxc.tpdcxc IN ('FAC', 'N/C', 'N/D') and estcxc IN ('0', '1')";
$Recordset1 = mysql_query($query_Recordset1, $cn) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totPendxCobrar = number_format (($row_Recordset1['totgenfac'] - $row_Recordset1['totgencob']), 2 , "." , "," );
mysql_free_result($Recordset1);
return $totPendxCobrar; //AL INVOCAR LA FUNCIÓN NO RETORNA NINGÚN VALOR
}
?>
Estructura de la tabla en MySQL
-- ----------------------------
-- Table structure for documcxc
-- ----------------------------
DROP TABLE IF EXISTS `documcxc`;
CREATE TABLE `documcxc` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`tpdcxc` varchar(5) NOT NULL DEFAULT '',
`docxc` varchar(20) NOT NULL DEFAULT '',
`ncontcxc` varchar(20) NOT NULL DEFAULT '',
`seq_nodocxc` varchar(20) NOT NULL DEFAULT '',
`aplicadoacxc` varchar(20) NOT NULL DEFAULT '',
`codclicxc` varchar(50) NOT NULL DEFAULT '',
`id_cliente` int(20) NOT NULL,
`nomclicxc` varchar(255) NOT NULL DEFAULT '',
`femiscxc` date NOT NULL,
`ffincxc` date NOT NULL,
`fultpagcxc` date NOT NULL,
`totnetocxc` double(20,7) NOT NULL,
`totimpcxc` double(20,7) NOT NULL,
`totgencxc` double(20,7) NOT NULL,
`totcobcxc` double(20,7) NOT NULL,
`estcxc` char(1) NOT NULL DEFAULT '',
`codsopocxc` varchar(50) NOT NULL DEFAULT '',
`id_soportista` int(20) NOT NULL,
`codretcxc` varchar(20) NOT NULL DEFAULT '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;