Comunidad de diseño web y desarrollo en internet online

cargar datos de base de datos mysql a un combobox

Citar            
MensajeEscrito el 08 Sep 2005 12:40 am
hola, por fabor ayudemen..

necesito cargar los datos de una tabla de mysql a el componente combobox de flash, pero no tengo ni idea de como hacerlo.

esdecir tengo la tabla llamada ALUMNO y necesito cargar los nombres de los estudiantes contenidos en la tabla al combo.

ayudemen, por fabor. si tienen un ejemplo envienmelo para chequearlo.[/b]

Por juanes

22 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 08 Sep 2005 01:15 am
ok para que puedas hacer esto necesitas saber como trabajar con un combobox, este tutorial te puede ayudar con eso:
Tutorial de uso del componente ComboBox de Flash MX 2004

ahora como sabras para que flash puede tomar datos de una BD necesita de un script del lado del servido de por medio, como tu tienes la BD en MySQL supongo que estas trabajando con PHP, asi que la manera más sencilla de comunicar PHP y Flash es con LoadVars, aqui yo di ejemplo de como hacerlo con una consulta a una BD:

http://www.cristalab.com/foros/viewtopic.php?p=76317#76317

cualquier duda solo posteala :D

por cierto WELCOME TO CRISTALAB :D

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 08 Sep 2005 03:46 am
listo lo de PHP y Flash es con LoadVars, lo entiendo por que el sofware que estoy desarroyando ya lo esta haciendo, por ejemplo registrando ALUMNOS. lo que no se es como cargar los datos de la tabla ALUMNO a un combo, e visto que la manera de cargar datos al combo es pormedio de xml. y no se si por LoadVars se pueda.

no soy tan experto en flash y necesito esto urgente.

Por juanes

22 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 08 Sep 2005 04:39 am
claro que se puede, alli en mi codigo cargo datos por medio de LoadVars solo sustituye lo de xml por mi codigo, trata de entenderlo bien fijate que la clase loadvars y la xml tienen un evento practicamente igual el cual es onLoad que cuando se empieza a tener acceso a las variables despues de la carga del archivo.

en vez de poner

Código :

miXML.firstChild.childNodes[i].attributes.nombre
, vas a poner el addItem la variables que le manda php a flash con mi codigo seria algo como

Código :

this["nombre"+i], 


a ver intentalo, :)

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 09 Sep 2005 02:26 am
hola otra vez de nuevo yo.

disculpemen es que soy novato en esto del flash con base de datos, sucede que estos son los archivos que estoy manejando hasta ahora,
ya me esta guardando en la base de datos, tengo dos problemas:

1:disculpen pero no entiendo como puedo cargar un combo con los nombres de los alumnos de la base de datos de mysql.
2: como hago para mostrar el mensaje de la variable $resultado en un texto dinamico de flash lamado "SALIDA" ya que como lo he intentado no me funciona me sale Undefined.

CODIGO DEL SAVE.PHP

Código :

<?
   $host = "localhost";   
   $user = "root";         
   $pass = "";            
   $bbdd = "registro";      

$conexio = mysql_connect($host,$user,$pass) or die("resultado=".urlencode(mysql_error())); 
   mysql_select_db($bbdd,$conexio) or die("resultado=".urlencode(mysql_error()));

$nombre = htmlentities($_POST[nombre]);
$grado = htmlentities($_POST[grado]);
$telefono = htmlentities($_POST[telefono]);
$csql = "INSERT INTO `alumno` ( `cod` , `nomb` , `grad` , `tele` ) VALUES ('', '$nombre', '$grado', '$telefono');";
      
   mysql_query($csql)or die("resultado=".urlencode(mysql_error()));
   $resultado="insercion realizada";   
   echo "resultado=Insercion Realizada";
?>


CODIGO DE FLASH

Código :

stop();
function guardar(){
   var ok = true;
   
   if(ok){
      
      b_Save=new LoadVars();
      b_Save.nombre=nombre.text;
      b_Save.grado=grado.text;
      b_Save.telefono=telefono.text;

      b_Save.onLoad=function(){
         SALIDA.text=this['resultado']
      }

      b_Save.sendAndLoad("sav.php",b_Save,"post");
   }else{
      btn_sav.gotoAndStop(1);
      SALIDA("Error en los datos\n");
   }
}


gracias por su colaboracion y disculpe tanta molestia

Por juanes

22 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 09 Sep 2005 02:36 am
ejecuta el php solo con valores constantes(sin recibir por el metodo post) y corrige el error que te da :wink:

especificamente en el INSERT


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 09 Sep 2005 02:45 am
no entiendo soy muy novato.

porfa un ejemplo y lo implemento. para lo del combo. no hayo como hacerlo

Por juanes

22 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 09 Sep 2005 02:50 am
al ejecutar el php con valores constantes y por metodo post me inserta en la base de datos. el problema es que necesito enviar respuesta de insercion correcta al flash y publicarla en un texto dinamico, y mesale undefined.

porfa un ejemplo si lo tienen para lo del combobox.

Por juanes

22 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 09 Sep 2005 03:05 am
codigo actionscript:

Código :

var miLV:LoadVars = new LoadVars();
miLV.campouno= "Maikel";
miLV.campodos="Explicando LoadVars con php";
miLV.sendAndLoad("http://localhost/AMFPHP/ejemplo2.php",miLV,"POST");

miLV.onLoad = function (success:Boolean){
   if (success){
      textodinamico.text=this.operacion;
      combobox.addItem({operacion: this.operacion});
   }
   else {
      trace("error al cargar script externo");
   }
}

codigo php

Código :

<?php
   $conex= mysql_connect("localhost","user","password") or die("no se puede conectar porque ".mysql_error());
   mysql_select_db("tubasededatos");
   $campouno = $_POST['campouno'];
   $campodos = $_POST['campodos'];
   $sql= "INSERT INTO tabla (index,campouno,campodos) VALUES ('','".$campouno."','".$campodos."')";
   $result= mysql_query($sql,$conex);
   if ($result){
      echo "&operacion= operacion se realizo exitosamente";
      exit();
   }
      echo "&operacion= operacion fallida, intente de nuevo";
?>

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 09 Sep 2005 04:06 am
muchas gracias voy a implementar y te cuento
mil gracias

Por juanes

22 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 10 Sep 2005 07:52 pm
hola,

bueno pues les cuento que con su ayuda ha quedado solucionada la parte de enviar un mensaje de registro al usuario que accede a la animacion flash.

y continuo con el problema del combo, que por cierto me ha sacado mil canas.

publico el codigo php en el cual hago un select a la base de datos para consultar los usuarios registrados y los cargo en un array llamado "$cadena" he provado solo el php en mi servidor y me carga y muestra esos datos que yo necesito. pero tengo un problema en la recepcion de esos datos en flash.

codigo pru.php

[code]
<?
$host = "localhost"; // el host de la base de datos
$user = "root"; // usuario de la base de datos
$pass = ""; // contraseña de la base de datos
$bbdd = "registro"; // base de datos a usar

/*********** esto crea la conexión a la base de datos **************/

$conexio = mysql_connect($host,$user,$pass) or die("resultado=".urlencode(mysql_error()));
mysql_select_db($bbdd,$conexio) or die("&resultado=".urlencode(mysql_error()));

$csql = "select nomb from alumno";
$resul=mysql_query($csql,$conexio);
//mysql_query($csql)or die("&resultado=".urlencode(mysql_error()));
$i=0;
while($rows=mysql_fetch_array($resul)){
$cadena[$i]=$rows["nomb"];
$i++;
}

echo "&cadena"


//echo "estos son recorriendo el array <br><br>";

//for($z=0;$z<count($cadena);$z++){
//echo "$cadena[$z] <br>";
//}


?>
[/code]


codigo del flash


[code]

var Datos:LoadVars = new LoadVars();
Datos.load("http://localhost/pruebapru.php")

Datos.onLoad = function (success:Boolean){
for(j=0;this["cadena"+j]!=undefined;j++){
combo_m.additem (this.cadena);
}
}

[/code]

esto es lo unico que he podido crear en flash no me carga nada,
no se como recorrer la cadena que me envia el php

ayuden...

Por juanes

22 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 10 Sep 2005 07:56 pm
a ver si le pones atencion a mi codigo del link que te di arriba, te darás cuenta de la diferencia y sabrás el por que no funciona, solo se más detallista :wink:


saludos :)

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 10 Sep 2005 10:41 pm
te hago saber que no soy tan experto y que recientemente me inicio, segun lo que yo veo en el link es que estas almacenando en una variable &cadena el contenido o valores de la tabla que necesitas:

$cadena.="&id".$i."=".$rows["id"];
$cadena.="&nombre".$i."=".$rows["nombre"];
$cadena.="&comentarios".$i."=".$rows["comentarios"];

es decir

&id0=50
&nombre0=Maikel
&comentarios0=explicando como se mandan variables de php a flash

mi pregunta si tengo otro valor seria

&id1=51
&nombre1=juanes
&comentarios1=solicitando ayuda

con respecto a como yo lo tengo que almaceno
al array asi:

$cadena[$i]=$rows["nomb"];

y para mi seria:

$cadena[1]=juanes
$cadena[2]=maikel

que serian los usuarios que tengo

Por juanes

22 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 10 Sep 2005 11:21 pm
bueno asi no, yo uso cadena simplemente para imprimir para mas nada si te das cuenta yo no uso cadena en el codigo de actionscript :wink: , a ver te explico lo qu hago dentro de este while

Código :

 $i=0;
    $cadena="";
    while ($rows= mysql_fetch_array($result)){
          $cadena.="&id".$i."=".$rows["id"];
          $cadena.="&nombre".$i."=".$rows["nombre"];
          $cadena.="&comentarios".$i."=".$rows["comentarios"];
         $i++;    

inicializo i es decir vale 0
inicializo cadena es decir pongo una cadena vacia
recorro el resultado(como un arreglo) que me arrojo el query, y cada elemento del array se lo voy asignando a rows, suponiendo con valores de id =0, nombre=Maikel, comentarios= explicando LoadVars con php, entonces la primera vez que se ejecuten esas sentencias cadena quedaria:

Código :

$cadena=&id0=0&nombre0=Maikel&comentarios0=explicando LoadVars con php

ahora vamos a suponer que hay otros valores, suponiendo id=1 nombre = juanes comentarios=solicitando ayuda , entonces cadena quedaria asi

Código :

$cadena=&id0=0&nombre0=Maikel&comentarios0=explicando LoadVars con php&id1=1nombre1=juanes&comentarios=solicitando ayuda


cuando hacemos el echo &cadena o echo utf8_encode(&cadena) php nos imprimiria esto:
&id0=0&nombre0=Maikel&comentarios0=explicando LoadVars con php&id1=1nombre1=juanes&comentarios=solicitando ayuda

y eso es lo que flash leería.

ahora por que lo hago así?
pues alli estoy construyendo i-1 variables es decir variable0 y variable1 si i es igual 2, los nombres de dichas variables en este ejemplo seria id0, nombre0 comentarios0, id1, nombre1, comentarios1, dichas variables las podras acceder por el objeto LoadVars que tienes en flash, en tu caso Datos entonces despues de que se ejecutara el script php e imprima las variables con sus respectivos valores se ejecuta el evento onLoad del objeto Datos y podras acceder a estas variables con el nombre de instancia del objeto (en tu caso Datos) + un punto +variable que te imprimio php, por ejemplo:
si haces esto:

Código :

trace(Datos.nombre0);

te imprimiria en la ventana de salida Maikel, ahora si te das cuenta yo no uso Datos sino this, esto es sencillamente porque estoy dentro de un evento(o funcion como lo entiendas mejor) del objeto Datos y me estoy referiendo a él, es una recomendación usar this te evitará mucho dolores de cabeza :wink: , es decir:

esto

Código :

Datos.onLoad = function (success:Boolean){
for(j=0;this["cadena"+j]!=undefined;j++){
combo_m.additem (this.cadena);
}
} 

es igual a esto:

Código :

Datos.onLoad = function (success:Boolean){
for(j=0;Datos["cadena"+j]!=undefined;j++){
combo_m.additem (this.cadena);
}
} 


pero como te digo es mejor usar this y evita dolores de cabeza :lol:

Ahora ese codigo tiene algo un poco de nivel avanzado si se puede llamar asi, lo digo por el undefined, en Actionscript tu puedes saber si una variable, objeto, etc. existe o no tiene valor si es diferente(!=) de undefined (indefinido).

ah por cierto cuando hago esto dentro del while alla arriba

Código :

$rows["id"];

es porque el resultado del query tiene un campo(de la tabla(s) de la BD) llamado id, al igual que los otros(nombre y comentarios);

Bueno creo que eso es todo :P

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 11 Sep 2005 03:16 am
aclare muchas dudas

mil gracias por tu paciencia Maikel y colaboracion.

Por juanes

22 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 11 Sep 2005 03:34 am
ok me alegro :D, cuentame luego si resolviste :P :P

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 08 Oct 2005 03:28 am
hola.. ya estoy de nuevo poniendo problemas despues de un malestar general que me mantuvo marginado de mi proyecto por unas semanas..

bueno sucede que se tienen los dos siguientes codigos.

Código :

<?
   $host = "localhost";      // el host de la base de datos
   $user = "root";         // usuario de la base de datos
   $pass = "";         // contraseña de la base de datos
   $bbdd = "registro";         // base de datos a usar

   $conexio = mysql_connect($host,$user,$pass) or die("resultado=".urlencode(mysql_error())); 
   mysql_select_db($bbdd,$conexio) or die("&resultado=".urlencode(mysql_error()));

      $csql = "select nomb from alumno";
      $resul=mysql_query($csql,$conexio);
      
      $i=0;
      $cade="";
      while($rows=mysql_fetch_array($resul)){
      $cade.="&nomb".$i."=".$rows["nomb"]; 
      $i++;
      }
      echo "&cade=$cade"; 
?>


y el AS

Código :

var Datos:LoadVars = new LoadVars();
//Datos.load("http://localhost/prueba/pru.php")
Datos.sendAndLoad("http://localhost/prueba/pru1.php",Datos,"post");
Datos.onLoad = function (success:Boolean){ 
for(j=0;this["cade"+j]!=undefined;j++){ 
combo_m.additem (this.cade); 
} 
} 


pero al ejecutar el swf no me esta cargando los datos al combo.
es decir que no esta entrando al for.

la verdad es que en el codigo flash no estoy viendo una. :twisted:

salvo gracias a maikel ha tenido mucha paciencia con este novato..

ayuda.......

Por juanes

22 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 08 Oct 2005 03:55 am
err sorry, creo que te confundi en el ultimo código de la explicacion :oops:

solo cambia esto:

Código :

for(j=0;this["cade"+j]!=undefined;j++){ 

por

Código :

for(j=0;this["nomb"+j]!=undefined;j++){ 


lo digo es porque son las variables que estas construyendo dentro del while en php
$cade.="&nomb".$i."=".$rows["nomb"];


saludos :)

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 08 Oct 2005 12:29 pm
maikel muchas gracias. estoy muy agradecido por tu magnifica colaboracion.

todo ha quedado solucionado...
:D :D

Por juanes

22 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 21 Jun 2008 01:58 am
hola muchachos pues he estado intentando ver como solucionaron el problema de cargar en el combo los datos de la tabla, pero a mi no me ha salido., intente implementar el codigo de juanes pero no me sale nada espero me puedan ayudar, igual voy a poner el codigo pues es el mismo de juanes pero adaptado a mis datos la verdad no cambia mucho pues es mostrar de la base de datos grupo de la tabla listado los datos de ngrupo en un combo box

aca esta el action script en el primer frame, y pues supongo el comboBox se llama combo_m

Código :

var Datos:LoadVars = new LoadVars();

Datos.sendAndLoad("http://localhost/combo.php",Datos,"post");
Datos.onLoad = function (success:Boolean){ 
for(j=0;this["nomb"+j]!=undefined;j++){  
combo_m.additem (this.cade); 
} 
} 



y este el el php

Código :


<?


mysql_connect ("127.0.0.1", "root","12345");
mysql_select_db("grupo");
   $consulta_usuario = mysql_query ("SELECT  ngrupo FROM listado");
   
     
    $i=0;
    $cade="";
     while($row=mysql_fetch_array($consulta_usuario)){
      $cade.="&nomb".$i."=".$row["ngrupo"];
     $i++;
      }
      echo "&cade=$cade"; 
?>




El combo queda en blanco y no pasa nada ojala me puedan ayudar

Por x4v1er

17 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 21 Jun 2008 03:37 pm
Bueno descubi un error en el AC

Código :

combo_m.additem (this.cade); 

el correcto vendria a ser

combo_m.addItem (this.cade); 

una I mayuscula


listo, pero en el combo los espacios de los resultados de la consulta es decir, si hay 4 registros llenos en la base de datos, en el combo dja cuatro espacios en blanco, mas no me muestra los datos que hay en estos registros.

cual puede ser el problema, aca dejo el php

Código :

<?
mysql_connect ("127.0.0.1", "root","12345");
mysql_select_db("grupo");
   $consulta_usuario = mysql_query ("SELECT  ngrupo FROM listado");
     
    $i=0;
    $cade="";
     while($rows=mysql_fetch_array($consulta_usuario)){
      //$cade.="&nomb".$i."=".$row["ngrupo"];
     $cade.="&nomb".$i."=".$rows["ngrupo"]; 
     $i++;
      }
      echo "&cade=$cade"; 
      
?>

Por x4v1er

17 de clabLevel



Genero:Masculino  

firefox

 

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