Comunidad de diseño web y desarrollo en internet online

Obtener datos de MySQL pasando por PHP y recibirlos en AS3

Citar            
MensajeEscrito el 01 Oct 2010 10:41 am
Hola a todos:

Ya vuelvo a estar atascado en otro problema para mi.

Supongamos. Tengo una BD en MySQL donde tengo unos determinados datos. Como por ejemplo

Código :

Columna ID -- Columna idioma -- Columna texto


Y en cada una de ellas tenemos:

ID - Autoincremento
Columna idioma: Español, Ingles, ...
Columna texto: Texto 1 (Español), Texto 2 (Español), ... Text 1 (Ingles), Text 2 (Ingles), ...

Eso en la BD.

En PHP tengo algo como esto:

Código PHP :

<?php

// Datos de conexion
......
 // conexion bd
$db = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbdatabase, $db);
 
// Para test
if ($dato=="")
{
{$dato="sp";};
}
else
{
   $dato =$_POST['dato'];
}

//Consulta
$sql = "SELECT * FROM ". $tabla ."
WHERE idioma_c LIKE '". $dato ."'
LIMIT 10";

$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$retorno=$row['etiqueta_boton_c'];

while($row=mysql_fetch_row($result))
{
$row[2];
$retorno=$retorno . ($row[2]) . "&" ;
}

echo ("devuelvo=" . urlencode($retorno));

Nota: Este fichero ha sufrido modificaciones por todos los lados, pero funciona devolviendo un resultado en PHP al igual como se muestra con un trace. Mi problema es que no puedo introducirlo en una variable. Otro problema sería que solo me devuelve un solo resultado, no varios. Mirando he encontrado esto otro

http://www.flash-db.com/Tutorials/loadingAS3/loadingData.php?page=5

donde los códigos son los siguientes:

MySQL

Código :

CREATE TABLE titles (
ID int(11) NOT NULL auto_increment,
Title varchar(255) NOT NULL,
Comments mediumtext NOT NULL,
Image varchar(255) NOT NULL,
PRIMARY KEY (ID)
);

INSERT INTO titles VALUES ( '1', 'Anastasio', 'This is a nice guy', 'an1.jpg');
INSERT INTO titles VALUES ( '2', 'In the car', 'Heres Anastasios car', 'an2.jpg');


Archivo PHP

Código PHP :

        $connect = mysql_connect("localhost", "root", "root");
        mysql_select_db("anastasio", $connect);
        $result = mysql_query("SELECT Title, Comments, Image FROM titles");
        $cant = 0;
        while($row=mysql_fetch_array($result)){
            echo "Title$cant=$row[Title]&Comments$cant=$row[Comments]&Image$cant=$row[Image]&";
            $cant++;
        }
        echo "cant=$cant";


AS3

Código :


    //Create the URLLOader instance
    var myLoader:URLLoader = new URLLoader()
    //the data will come as URL-encoded variables
    myLoader.dataFormat = URLLoaderDataFormat.VARIABLES
    //Load using an URLRequest, even beeing local
    myLoader.load(new URLRequest("http://localhost/anastasio.php"))
    //onLoad handler listener
    myLoader.addEventListener(Event.COMPLETE, onDataLoad)
    //add a listener for the complete event
    function onDataLoad(evt:Event){
        for(var i:uint=0; i<evt.target.data.cant; i++){
            this["Title_txt"+i].htmlText  = "<b>"+evt.target.data["Title"+i]+"</b>"
            this["Comments_txt"+i].text = evt.target.data["Comments"+i]
            var loader:Loader = new Loader()
            this["holder_mc"+i].addChild(loader)
            loader.load(new URLRequest(evt.target.data["Image"+i]))
        }
    }


Error que sale:

Error: Error #2101: La cadena transmitida a URLVariables.decode() debe ser una cadena de consulta con formato URL codificado y pares nombre/valor.
at Error$/throwError()
at flash.net::URLVariables/decode()
at flash.net::URLVariables()
at flash.net::URLLoader/onComplete()

He probado a en vez de mandarlo como texto, a enviarlo codificado para URL como sigue

Código :

            echo "Title$cant=".urlencode($row[Title])."&Comments$cant=".urlencode($row[Comments])."&Image$cant=".urlencode($row[Image])."&";


Con resultado similar.

La verdad que ya me estoy liando y ya no se por donde tirar. Miro en Google y todavía no he encontrado algo que me de solucion.

Resumiendo mi problema:

Me gustaría consultar valores de una Base de Datos MySQL a través de PHP y poderlos recoger en AS3 para poder trabajar con ellos, introduciendolos en variables o en Arrays.

Alguna sugerencia?

De antemano, muchas gracias

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 01 Oct 2010 02:01 pm
Ese segundo tutorial que pusiste me gusta. El error es que la salida del PHP es incorrecta, es decir no está tirando una cadena de pares de nombre/valor separados por & ... ¿puedes copiar la salida o parte de ella si es muy grande?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 01 Oct 2010 02:15 pm
Gracias por contestar:

Lo primero que miré fue eso, con el siguiente resultado:

Title0=Anastasio&Comments0=This+is+a+nice+guy&Image0=an1.jpg&Title1=In+the+car&Comments1=Heres+Anastasios+car&Image1=an2.jpg&cant=2

con el codigo urlencode

Código :

while($row=mysql_fetch_array($result)){
            echo "Title$cant=".urlencode($row[Title])."&Comments$cant=".urlencode($row[Comments])."&Image$cant=".urlencode($row[Image])."&";
            $cant++;
        }
        echo "cant=".$cant;


Y sin el urlencode

Title0=Anastasio&Comments0=This is a nice guy&Image0=an1.jpg&Title1=In the car&Comments1=Heres Anastasios car&Image1=an2.jpg&cant=2

Y con código

Código :

        while($row=mysql_fetch_array($result)){
            echo "Title$cant=".($row[Title])."&Comments$cant=".($row[Comments])."&Image$cant=".($row[Image])."&";
            $cant++;
        }
        echo "cant=".$cant;


Tambien, por probar he incluido un "&" al final de la cadena (por si acaso), pero nada...

Alguna idea?

Nota: me da igual que sea con este codigo u otro. El objetivo es llegar al objetivo (recuperar varios valores de mysql a través de PHP y meterlos en "variables" para poder usarlas :D )

Cualquier aporte será bien recibido :P

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 01 Oct 2010 02:29 pm
Ponle un & al principio y al final de todo, si no sale prueba con un solo elemento, algo se esta imprimiendo que quiebra la salida

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 06 Oct 2010 10:41 am
He hecho lo que dices, pero con errores. Esto no va fino. Voy a intentar ver porque ocurre lo que ocurre.

La teoria es correcta, no?

Un saludo

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox
Citar            
MensajeEscrito el 06 Oct 2010 10:46 am
Sip, PHP imprime pares de nombre/valores separados por & y Flash los lee

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 16 Nov 2010 10:43 am
Hola:

Gracias por contestar y perdon por la demora, pero problemas personales me ha impedido poder dedicar tiempo a esto. A ver si a partir de ahora puedo continuar con mis problemas de programacion ;)

La verdad que no entiendo nada. Ahora me he puesto con esto y me funciona :lol:

Voy a poner el código por si alguien le sirve, pues eso...

Código ActionScript :

var peticion:URLRequest = new URLRequest( "http://localhost/www/bd.php" );
peticion.method = URLRequestMethod.POST;
// Enviamos el nombre a recuperar, por ejemplo de un listado o de una BD ;)
var variables:URLVariables = new URLVariables();
variables.dato1 = "1";
peticion.data = variables; 
// Fin envio
var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener( Event.COMPLETE, loadCompleteHandler );
loader.load(peticion);
                     
function loadCompleteHandler( e:Event ):void {
   trace (e.target.data.devuelvo);
}


Y tras hacer una consulta a la BD desde el archivo php llamado y su correspondiente consulta, nos debe devolver una cadena similar a la siguiente

Código :

txt 1&txt 2&txt 3&txt 4&txt 5&


Ahora me surgen otros problemas, pero ya no corresponden exactamente con el titulo del post por lo que abriré uno nuevo

Un saludo

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

firefox

 

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