Comunidad de diseño web y desarrollo en internet online

Problema con AMFPHP

Citar            
MensajeEscrito el 21 Abr 2010 01:37 am
buenas gente...como andan???

tengo un problema realizando una consulta en sql llamandolo desde el amfphp:
El codigo php de la clase q estoy usando, junto a la consulta es:

Código PHP :

<?php

class generarInformePrimero
{

   /**
   Varibles para la conecxion a la BD
   */
   var $sqlstring = "";
   var $server = "localhost";
   var $user =  "root";
   var $pass = "";
   var $database = "sist_gestion2";
   
   /**
   Varibles a utilizar
   */
   var $db           = 0;
   var $rs           = 0;
   
   var $row          = 0;
   var $recordcount  = 0;
   
   var $EOF          = true;
   
   function _conectarBaseDatos()
   {
       $this->db = mysql_connect($this->server,$this->user,$this->pass);
          mysql_select_db($this->database,$this->db) or die(mysql_error());
   }
   
   function _ejecutarQuery($strSql)
    {
       $this->sqlstring = $strSql;
       $this->_exec_command();
      return $this->lastid;
    }
   
   function _exec_command()
   {
      if ($this->db && $this->sqlstring!="")
      {
         $this->rs = mysql_query($this->sqlstring,$this->db);
         if ($this->rs) 
         {
            $this->EOF = true;
            $this->recordcount = mysql_affected_rows();
            $this->lastid = mysql_insert_id();
         }
         else
         {
            $this->recordcount = 0;
            $this->EOF = true;
         }
      } 
      else
      {
         $this->recordcount = 0;
         $this->EOF = true;
      }   
   }   
   
   function _destruir()
    {
       if($this->db)
         mysql_close($this->db);
    }
      
   /**
    * Este método sirve para poder recuperar los datos pertenecientes a un sucursale en un periodo determinado
    * @returns Regresa el informe con los datos solicitados.
    */
   function obtenerResultados()
    {
        $this->_conectarBaseDatos();
        $sql = "DROP TEMPORARY TABLE IF EXISTS brutas;
            DROP TEMPORARY TABLE IF EXISTS netas;
            CREATE TEMPORARY TABLE brutas(
               SELECT v.BILLING_ID,v.date, v.BRANCH_ID, sum(pr.PRICE*lv.QUANTITY) bruto   
                  FROM billing v
                     INNER JOIN billing_detail lv
                        ON v.BILLING_ID = lv.BILLING_ID
                     INNER JOIN products p
                        ON lv.PRODUCT_ID=p.product_id
                     INNER JOIN prices pr
                        ON pr.PRODUCT_ID=p.product_id
                  WHERE v.REGION='EAST' AND v.BRANCH_ID=2
                  AND v.DATE BETWEEN '2006-01-01' AND '2009-08-31'
                  AND pr.DATE= (SELECT MAX(pre.DATE)
                                 FROM prices pre
                              WHERE pre.DATE <= v.DATE AND p.product_id = pre.product_id)
            group by v.BILLING_ID);

         
            CREATE TEMPORARY TABLE netas(
               SELECT brutas.billing_id, brutas.date, brutas.branch_id sucursal, brutas.bruto,
                  IF( brutas.bruto >= discounts.TOTAL_BILLING,brutas.bruto * (1 - discounts.PERCENTAGE/100), brutas.bruto) neto
                  FROM brutas JOIN discounts
               WHERE discounts.from = (SELECT MAX(des.from)
                  FROM discounts des
               WHERE des.FROM <= brutas.DATE));
               
            select YEAR(netas.date) anio, sucursal, if (MONTH(netas.date)<4,1, if (month(netas.date)<7,2, if (MONTH(netas.date)<10,3,4))) trimestre,
               sum(netas.neto) monto
            from netas
            group by anio, trimestre;";
        $result = mysql_query($sql);
        $cant = 0;
      
        $this->_destruir();
      
      return($result); 
    }
   
}

?>


Si la ejecuto desde un programa particula (EMS SQL), me devuelve los datos correctamente, pero en AMFPHP, lo unico que me devuelve es false...

Si podrian ayudarme se los agradeceria.
Saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

chrome
Citar            
MensajeEscrito el 21 Abr 2010 01:38 am
muestra como lo llamas el codigo

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Abr 2010 01:52 am
lo que sucede, es que en el amfphp, es el problema, no la llamada, ya que si se prueba desde alli, muestra el arbol de resultados o los posibles problemas y en este caso, solo muestra false al ejecutar las posiciones que hay en el php.

Saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

msie8
Citar            
MensajeEscrito el 21 Abr 2010 02:03 am
El SQL es bastante extenso ... un par de tablas temporales para una consulta ... anyway pruébalo en el DiscoveryService que viene con PHP, si allí te devuelve false, cambia la devolución a

return mysql_fetch_array($result);

Si sigue en false, devuelve el string del query, copia y pega en phpMyAdmin (o lo que uses como administrador de base de datos) y mira que ocurre. Eventualmente, separa el query en las tres partes en vez de ejecutarlo como un solo bloque

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Abr 2010 02:09 am
Hola jorge. como andas tanto tiempo??

He ejecutado el codigo como me dijiste...

La primera parte, si la ejecuto me da el arreglo, sin problemas, pero para ejecutar la segunda y tercer parte necesito la primera creada y es alli donde ya me da el false, sin devolver ningun otro dato.

Al ejecutar la consulta en un programa aparte...me da perfecto.

Me dijeron q podria usar store procedure, pero no tengo ni idea para que funcione y me devuelva los datos para manejarlos luego en flash.


Desde ya muchas gracias.
Saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

msie8
Citar            
MensajeEscrito el 21 Abr 2010 03:18 am
Utilizas vistas en la base de datos en vez de utilizar esta temp, luego bajate el charles debug y prueba que te vuelva bien los resultados realmente extraño que puedas obtener los resultados correctamente en tu back end (php) y no desde flash o flex

Por xcom

Claber

530 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Abr 2010 09:00 pm
Mmm ... puede ser que en un query complejo como ese falle alguna cosa, nunva usé un query que implicara crear dos tablastemporales ... ¿probaste usando una transacción? (START TRANSACTION y COMMIT)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 22 Abr 2010 01:57 am
Hola jorge...

No use eso que me dijiste...finalmente paradejarlo funcional cree las tablas...y listo..solo realizo la consulta en el php y de esa manera funciona, aunque no es lo mejor es funcional para presentarlo.

Igualmente voy a intentar con lo que me decis.

Gracias.

Saludos

Por bubudrc

Claber

591 de clabLevel

1 tutorial

 

mayo 2006

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.