Comunidad de diseño web y desarrollo en internet online

Pasar variables con HTTPService

Citar            
MensajeEscrito el 02 Oct 2008 04:46 pm
Hola...
estoy intentando pasar paramentros a un fichero php atraves de un HTTPService, el tema es que quiero pasar una consulta sql pero no se como puedo hacerlo ya que me interesaria poder meter una variable {cuenta} en esa consulta.
Este es el codigo que tengo pero no me funciona, el problema es que no se como hacer la parte de LIMIT {cuenta}

Código ActionScript :

<mx:HTTPService id="_productos" 
   url="http://localhost/WebinarFlex/php/cargadorproductos3.php" method="POST"/>
   
<mx:Object id="myObj" cantidad="{cuenta}" consulta="{consultaflex}"/>

<mx:Script>
   <![CDATA[
   
   [Bindable]   private var cuenta:int=0;
   [Bindable]   private var consultaflex:String="SELECT w6_productos.categoriaID,w6_productos.productoID,w6_productos.imagen,
w6_categorias.categoria,w6_categorias.visible,w6_productos.producto,
w6_productos.precio,w6_productos.categoriaID,w6_productos.visible 
FROM w6_productos Inner Join w6_categorias ON 
w6_categorias.categoriaID = w6_productos.categoriaID WHERE 
w6_productos.categoriaID =  '1' AND w6_categorias.visible =  '1'  LIMIT {cuenta}, 3");;
   ]]>
</mx:Script>


A ver si alguien me puede dar alguna ayudita.
Saludos

Por willow001

52 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 02 Oct 2008 04:49 pm
El problema es de concepto. Nunca debes poner una consulta SQL como parametro, es un agujero de seguridad que no le viene nada bien a un entorno inseguro de por si como es Flash. En vez de pasar un query entero, pasa solo las variables que necesitas y escribe el query en tu PHP

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Oct 2008 05:15 pm
Hola...
Muchas gracias por la respuesta, casi me respondes antes que termine de escribir el post jajajajaaja.
Coincido con lo que dices del problema de seguridad, aunque como esto solo son practicas para aprender no hay problema si alguna vez hago algo "real" seguro no olvido tu aportacion, como ves se trata de saber si lo que quiero hacer se puede ya que no no soy capaz de lograrlo.
Saludos

Por willow001

52 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 02 Oct 2008 05:22 pm
Practica como si fuera de verdad, y te evitaras comenzar a trabajar en desventaja

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 02 Oct 2008 09:21 pm
Hola Jorge ...
Siguiendo tu consejo, he armado la consulta en el php

Código :

$cuentaphp = "-1";
if (isset($_POST['cantidad'])) {
$cuentaphp = $_POST['cantidad'];
}

$miconsulta = "SELECT w6_productos.categoriaID,w6_productos.productoID,w6_productos.imagen,
w6_categorias.categoria,w6_categorias.visible,w6_productos.producto,
w6_productos.precio,w6_productos.categoriaID,w6_productos.visible 
FROM w6_productos Inner Join w6_categorias ON 
w6_categorias.categoriaID = w6_productos.categoriaID WHERE 
w6_productos.categoriaID =  '1' AND w6_categorias.visible =  '1'  LIMIT ";
$miconsulta .= $cuentaphp;
$miconsulta .= " , 3";

y funciona correctamente.
Pero perdona que te insista por ultima vez, lo que yo pretendia hacer, ¿se puede hacer? ya que sigo dandole vueltas al tema y no veo como hacerlo. Seguro sera una chorrada pero no lo veo.
Saludos

Por willow001

52 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Oct 2008 06:44 am
Mira qué es lo que te estaba recogiendo el $_POST["consulta"], es probable que esté formateado para URL o algo parecido

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Oct 2008 09:50 am
Para agregar parametros con binding:

Código :

<mx:HTTPService id="otherService" destination="feedback.php" showBusyCursor="true">
   <mx:request>
      <voice>{params.sound}</voice>
      <video>{params.video}</video>
      <usage>{params.usage}</usage>
      <comments>{params.comment}</comments>
   </mx:request>   
</mx:HTTPService>


En mi caso tengo tres parametros

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 03 Oct 2008 01:59 pm
Hola...
Gracias por las respuestas.
Creo que el fondo de la pregunta inicial no lo exprese muy bien, la idea era si en medio de un string puedo enviar una variable.

Código :

[Bindable] private var horas:int=24;
var willow001:String="Tengo que estudiar Flex y AS3 {horas} cada dia"

Jorge, esa manera ya la habia usado aunque de manera diferente, sin el termino params, que no entiendo muy bien que hace y como lo recoge el PHP, aunque voy a leer sobre HTTPService que seguro me lo aclara.

Código :

<mx:HTTPService id="otherService" destination="feedback.php" showBusyCursor="true">
   <mx:request>
      <voice>{sound}</voice>
      <video>{video}</video>
      <usage>{usage}</usage>
      <comments>{comment}</comments>
   </mx:request>   
</mx:HTTPService>

Ademas cuando dices

Jorge escribió:


En mi caso tengo tres parametros

Entiendo que son cuatro.
Saludos

Por willow001

52 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Oct 2008 02:08 pm
Eso, cuatro. Y los brackets indican que toma una variable que ha sido marcada como BINDABLE

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 04 Oct 2008 09:41 am
Hola...

Jorge escribió:


Y los brackets .....

brackets -----> { } eso esta claro. Pero ya tengo claro que dentro de una variable string esto no lo toma como binding o al menos a mi no me sale.En cambio cuando lo utilizo en algun componente

Código :

<mx:Panel width="460" height="194" layout="absolute" title="PRODUCTO: {prod.currentItem.producto}">

si me funciona correctamente. Esa es la duda que tengo.
Saludos

Por willow001

52 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 05 Oct 2008 11:38 pm
Cualquier elemento que haya sido marcado como Bindable será pasado si tiene valor, seguramente no es una variable pública, no tiene valor o no ha sido correctamente marcada como bindable. De todas formnas al trabajar con HTTPServices (y Remoting cuando subas un escalón), recomiendo usar DTO, Data Transfer Objects, en donde reúnes una serie de características publicas y bindables, lo explico más o menos aquí: http://www.flash-db.com/Board/index.php?topic=18743.0

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Oct 2008 10:03 pm
Hola...
Ya me temia que el "params" que me indicabas era algo IMPORTANTE.
Llevo varios dias intentandolo y no soy capaz de pasar las 2 variables al php

solisarg escribió:

Para agregar parametros con binding:

Código :

<mx:HTTPService id="otherService" destination="feedback.php" showBusyCursor="true">
   <mx:request>
      <voice>{params.sound}</voice>
      <video>{params.video}</video>
      <usage>{params.usage}</usage>
      <comments>{params.comment}</comments>
   </mx:request>   
</mx:HTTPService>

Jorge

El codigo que tengo yo es este, seguro estoy empleandolo mal pero no veo donde

Código :

<mx:HTTPService id="productos"    result="resultadoProductos(event)" fault="errorProductos(event)"
   method="POST"    url="http://localhost/paginador1/php/cargadorFLEXx.php">
   <mx:request >
      <categoriaID>{myObj.categoriaIDD}</categoriaID> 
      <pageNum>{myObj.pageNum_FLEX}</pageNum>
   </mx:request>
</mx:HTTPService>
<mx:Script>
   <![CDATA[
      import flash.events.*;
      import mx.rpc.events.FaultEvent;
      import mx.collections.ArrayCollection;      
      import mx.rpc.events.ResultEvent;
      import mx.controls.Alert;
      [Bindable] public var myObj:Object = new Object();
      [Bindable] private var Categorias:ArrayCollection;
      [Bindable] private var Productos:ArrayCollection;
      [Bindable] public var categoriaIDD:uint=1;
      [Bindable] public var pageNum_FLEX:uint=0;
         
      public function iniciar():void{
         categorias.send()
         productos.send(myObj)
         }

      public function siguiente():void {  
         if(pageNum_FLEX >= 0) {
            pageNum_FLEX=pageNum_FLEX +1
            productos.send(myObj);
         }
      }

Cuando se carga por primera vez va perfecto pero cuando llamo a la funcion "siguiente" no me hace ni caso, es como si siempre le estuviese pasando los mismos valores.
Para que lo veas esta es la URL
Saludos

Por willow001

52 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 13 Oct 2008 10:44 pm
Lo que estas bindeando es:

myObj.pageNum_FLEX

Y lo que estás modificando es

pageNum_FLEX

No es lo mismo

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Oct 2008 07:50 am
Vale, eliminemos el objeto, si le paso las variables asi

Código :

<mx:HTTPService id="productos"    result="resultadoProductos(event)" fault="errorProductos(event)"
   method="POST"    url="http://localhost/paginador1/php/cargadorFLEXx.php">
   <mx:request xmlns="">
      <categoriaID>{categoriaIDD}</categoriaID> 
      <pageNum>{pageNum_FLEX}</pageNum>
   </mx:request>
</mx:HTTPService>
<mx:Script>
   <![CDATA[
      import flash.events.*
      import mx.utils.*
      import mx.collections.ArrayCollection;
      import mx.rpc.events.*;
      import mx.controls.Alert;
      [Bindable] private var Categorias:ArrayCollection;
      [Bindable] private var Productos:ArrayCollection;
      [Bindable] public var categoriaIDD:uint=1;
      [Bindable] public var pageNum_FLEX:uint=0;
         
      public function iniciar():void{
         categorias.send()
         productos.send()
         }

      public function siguiente():void {  
         if(pageNum_FLEX >= 0) {
            pageNum_FLEX=pageNum_FLEX +1
            productos.send();
         }
      }

me da este error

Código :

TypeError: Error #1034: Error de conversión forzada: no se puede convertir mx.utils::ObjectProxy@488cb39 en mx.collections.ArrayCollection.
   at paginador1/resultadoProductos()[C:\xampp\htdocs\paginador1\src\paginador1.mxml:48]
   at paginador1/__productos_result()[C:\xampp\htdocs\paginador1\src\paginador1.mxml:11]
   at flash.events::EventDispatcher/dispatchEventFunction()
   at flash.events::EventDispatcher/dispatchEvent()
   at mx.rpc.http.mxml::HTTPService/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[E:\dev\3.1.0\frameworks\projects\rpc\src\mx\rpc\http\mxml\HTTPService.as:290]
   at mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[E:\dev\3.1.0\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.as:193]
   at mx.rpc::Responder/result()[E:\dev\3.1.0\frameworks\projects\rpc\src\mx\rpc\Responder.as:43]
   at mx.rpc::AsyncRequest/acknowledge()[E:\dev\3.1.0\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:74]
   at DirectHTTPMessageResponder/completeHandler()[E:\dev\3.1.0\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:381]
   at flash.events::EventDispatcher/dispatchEventFunction()
   at flash.events::EventDispatcher/dispatchEvent()
   at flash.net::URLLoader/onComplete()

Cada vez estoy mas liado.

Por willow001

52 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 Oct 2008 02:31 pm
Hola...

Jorge escribió:


Lo que estas bindeando es:
myObj.pageNum_FLEX
Y lo que estás modificando es
pageNum_FLEX
No es lo mismo

Vale, y como asigno el valor de pageNum_FLEX a myObj.pageNum_FLEX. Estoy dandole vueltas y cada vez estoy mas liado
Gracias

Por willow001

52 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 14 Oct 2008 02:53 pm
¿Probaste haciendo?

myObj.pageNum_FLEX = 5

Igual un objeto bindable debería ser declarado en una clase aparte con sus propiedades publicas declaradas como bindables

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Oct 2008 10:20 pm
Hola Jorge...
Ante todo gracias por tu paciencia, tu tiempo y tus respuestas.
Ya he solucionado el problema por el camino inicial de pasar las variables como tenia al principio

Código :

<mx:HTTPService id="productos" 
   result="resultadoProductos(event)" 
   fault="errorProductos(event)"
   method="POST" 
   url="http://localhost/paginador1/php/cargadorFLEXx.php">
   <mx:request > 
   <categoriaID>{categoriaIDD}</categoriaID> 
   <pageNum>{pageNum_FLEX}</pageNum>
   </mx:request>
</mx:HTTPService>

El problema que tenia venia dado por la consulta SQL ya que añadi

Código :

WHERE ..... w6_productos.visible =  '1' ......

y esto me limitaba a dos o tres registros el resultado.
Aqui te dejo la URL para que lo veas, falta terminar el detalle de los limites de registros para evitar errores y alguna cosilla mas que seguro saldra.
Saludos

Por willow001

52 de clabLevel



Genero:Masculino  

firefox

 

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