Foros del Web » Creando para Internet » Flash y Actionscript »

botonera con bases de datos

Estas en el tema de botonera con bases de datos en el foro de Flash y Actionscript en Foros del Web. Estoy creando una web en flash que accede a bases de datos he hecho unos botones que al seleccionarlos rellenan unos campos de texto con ...
  #1 (permalink)  
Antiguo 27/07/2009, 03:00
Avatar de bitxu  
Fecha de Ingreso: julio-2009
Mensajes: 51
Antigüedad: 15 años, 3 meses
Puntos: 1
botonera con bases de datos

Estoy creando una web en flash que accede a bases de datos he hecho unos botones que al seleccionarlos rellenan unos campos de texto con información de cada producto, pero no se como llamar los datos de una manera optimizada. Adjunto el action script.

¿Cómo lo hago para no tener que poner en cada uno de los botones, boton0, boton1, etc la función para abrir los datos que quiero?

on (release){

x=112;
y=400;

ancho = 200;
alto = 30;

num_columnas = 4;
columna = 0;

var novetats:XML = new XML();
novetats.ignoreWhite = true;
novetats.load("novetats.php");
novetats.onLoad = function (sucess:Boolean) {
if (sucess) {
var novetats:Array = this.firstChild.childNodes;
for(i = 0; i < novetats.length; i++) {
_root.attachMovie("mcnovetats", "boton"+i, _root.getNextHighestDepth());
_root["boton"+i]._x = x;
_root["boton"+i]._y = y;
_root["boton"+i].novetats_txt = novetats[i].attributes.nom;

_root.boton0.onRelease = function () {
for (var i=0; i<1000; i++){
_root["boton"+i].removeMovieClip();}
j=0;
var fitxa_novetats:XML = new XML();
fitxa_novetats.ignoreWhite = true;
fitxa_novetats.load("fitxa_producte_n.php");
fitxa_novetats.onLoad = function(){
var fitxa_novetats:Array = this.firstChild.childNodes;
//for(i = 0; i < fitxa_novetats.length; i++) {
_root.attachMovie("fitxa_producte", "boton0", _root.getNextHighestDepth());
_root["boton0"]._x = 575;
_root["boton0"]._y = 685;
_root["boton0"].producte_txt.text = fitxa_novetats[j].attributes.nom;
_root["boton0"].descripcio_txt.text = fitxa_novetats[j].attributes.descripcio;
_root["boton0"].botiga_txt.text = fitxa_novetats[j].attributes.botiga;
_root["boton0"].referencia_txt.text = fitxa_novetats[j].attributes.referencia;
_root["boton0"].preu_txt.text = fitxa_novetats[j].attributes.preu;
_root["boton0"].imatge_txt.text = fitxa_novetats[j].attributes.imatge;

}
}

_root.boton1.onRelease = function () {
for (var i=0; i<1000; i++){
_root["boton"+i].removeMovieClip();}
j=1;
var fitxa_novetats:XML = new XML();
fitxa_novetats.ignoreWhite = true;
fitxa_novetats.load("fitxa_producte_n.php");
fitxa_novetats.onLoad = function(){
var fitxa_novetats:Array = this.firstChild.childNodes;
//for(i = 0; i < fitxa_novetats.length; i++) {
_root.attachMovie("fitxa_producte", "boton0", _root.getNextHighestDepth());
_root["boton0"]._x = 575;
_root["boton0"]._y = 685;
_root["boton0"].producte_txt.text = fitxa_novetats[j].attributes.nom;
_root["boton0"].descripcio_txt.text = fitxa_novetats[j].attributes.descripcio;
_root["boton0"].botiga_txt.text = fitxa_novetats[j].attributes.botiga;
_root["boton0"].referencia_txt.text = fitxa_novetats[j].attributes.referencia;
_root["boton0"].preu_txt.text = fitxa_novetats[j].attributes.preu;
_root["boton0"].imatge_txt.text = fitxa_novetats[j].attributes.imatge;

}
}
x=x+ancho;
columna++;
if(columna==num_columnas){
columna=0;
x=112;
y=y+alto;
}
}


} else {
trace("Error al Leer archivo XML");
}

}
_root.gotoAndStop("novetats");
}


No se si me he explicado.
Muchas gracias! De antemano.

Última edición por bitxu; 27/07/2009 a las 03:19
  #2 (permalink)  
Antiguo 27/07/2009, 05:21
 
Fecha de Ingreso: abril-2008
Mensajes: 613
Antigüedad: 16 años, 7 meses
Puntos: 22
Respuesta: botonera con bases de datos

No sé si he entendido bien tu explicación. el código, lo veo demasiado largo para estudiarlo pero puede que te sirva un ejemplo de botonera dinámica que tengo publicado:

http://www.programador-php.com/flash...co_sin_php.php

Saludos
__________________
Compartir es vivir
www.programador-php.com
  #3 (permalink)  
Antiguo 27/07/2009, 08:27
Avatar de bitxu  
Fecha de Ingreso: julio-2009
Mensajes: 51
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: botonera con bases de datos

Hola, gracias por tu respuesta, el código que tengo funciona bien pero quiero que se automatice el apartado donde aprietas el botón.

Aqui me crea una botonera con los datos de la base de datos:

var novetats:XML = new XML();
novetats.ignoreWhite = true;
novetats.load("novetats.php");
novetats.onLoad = function (sucess:Boolean) {
if (sucess) {
var novetats:Array = this.firstChild.childNodes;
for(i = 0; i < novetats.length; i++) {
_root.attachMovie("mcnovetats", "boton"+i, _root.getNextHighestDepth());
_root["boton"+i]._x = x;
_root["boton"+i]._y = y;
_root["boton"+i].novetats_txt = novetats[i].attributes.nom;

Aqui le paso la función para que cuando apriete el botón se rellenen los campos con información de la base de datos:

_root.boton0.onRelease = function () {
for (var i=0; i<1000; i++){
_root["boton"+i].removeMovieClip();}
j=0;
var fitxa_novetats:XML = new XML();
fitxa_novetats.ignoreWhite = true;
fitxa_novetats.load("fitxa_producte_n.php");
fitxa_novetats.onLoad = function(){
var fitxa_novetats:Array = this.firstChild.childNodes;
//for(i = 0; i < fitxa_novetats.length; i++) {
_root.attachMovie("fitxa_producte", "boton0", _root.getNextHighestDepth());
_root["boton0"]._x = 575;
_root["boton0"]._y = 685;
_root["boton0"].producte_txt.text = fitxa_novetats[j].attributes.nom;
_root["boton0"].descripcio_txt.text = fitxa_novetats[j].attributes.descripcio;
_root["boton0"].botiga_txt.text = fitxa_novetats[j].attributes.botiga;
_root["boton0"].referencia_txt.text = fitxa_novetats[j].attributes.referencia;
_root["boton0"].preu_txt.text = fitxa_novetats[j].attributes.preu;
_root["boton0"].imatge_txt.text = fitxa_novetats[j].attributes.imatge;

Pero tengo que pasar los parámetros para cada botón que me crea dinamicamente desde la base de datos, este es el boton0, luego boton1, boton2, y así sucesivamente. Yo lo que quiero es que al presionar se rellene automáticamente con los datos que correspondan, lo había provado así:

_root.["boton"+i].onRelease = function () {

var fitxa_novetats:XML = new XML();
fitxa_novetats.ignoreWhite = true;
fitxa_novetats.load("fitxa_producte_n.php");
fitxa_novetats.onLoad = function(){
var fitxa_novetats:Array = this.firstChild.childNodes;
//for(i = 0; i < fitxa_novetats.length; i++) {
_root.attachMovie("fitxa_producte", "boton"+i, _root.getNextHighestDepth());
_root["boton"+i]._x = 575;
_root["boton"+i]._y = 685;
_root["boton"+i].producte_txt.text = fitxa_novetats[i].attributes.nom;
_root["boton"+i].descripcio_txt.text = fitxa_novetats[i].attributes.descripcio;
_root["boton"+i].botiga_txt.text = fitxa_novetats[i].attributes.botiga;
_root["boton"+i].referencia_txt.text = fitxa_novetats[i].attributes.referencia;
_root["boton"+i].preu_txt.text = fitxa_novetats[i].attributes.preu;
_root["boton"+i].imatge_txt.text = fitxa_novetats[i].attributes.imatge;

Però así se rellenan los campos con todos los datos, no con los que corresponden a cada botón...

Todavía no se si me explico....
  #4 (permalink)  
Antiguo 27/07/2009, 08:59
 
Fecha de Ingreso: abril-2008
Mensajes: 613
Antigüedad: 16 años, 7 meses
Puntos: 22
Respuesta: botonera con bases de datos

Prueba a cambiar esta línea:

_root.["boton"+i].onRelease = function () {

POR:
eval("_root.boton"+i).onRelease = function () {
__________________
Compartir es vivir
www.programador-php.com
  #5 (permalink)  
Antiguo 27/07/2009, 10:08
Avatar de bitxu  
Fecha de Ingreso: julio-2009
Mensajes: 51
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: botonera con bases de datos

Ahora he cambiado el action script por lo que me comentabas pero los cuadros de texto se rellenan con todos los datos, uno encima del otro...

eval("_root.boton"+i).onRelease = function () {
for (var i=0; i<1000; i++){
_root["boton"+i].removeMovieClip();}

var fitxa_novetats:XML = new XML();
fitxa_novetats.ignoreWhite = true;
fitxa_novetats.load("fitxa_producte_o.php");
fitxa_novetats.onLoad = function(){
var fitxa_novetats:Array = this.firstChild.childNodes;
for(i = 0; i < fitxa_novetats.length; i++) {
_root.attachMovie("fitxa_producte", "boton"+i, _root.getNextHighestDepth());
_root["boton"+i]._x = 575;
_root["boton"+i]._y = 685;
_root["boton"+i].producte_txt.text = fitxa_novetats[i].attributes.nom;
_root["boton"+i].descripcio_txt.text = fitxa_novetats[i].attributes.descripcio;
_root["boton"+i].botiga_txt.text = fitxa_novetats[i].attributes.botiga;
_root["boton"+i].referencia_txt.text = fitxa_novetats[i].attributes.referencia;
_root["boton"+i].preu_txt.text = fitxa_novetats[i].attributes.preu;
_root["boton"+i].imatge_txt.text = fitxa_novetats[i].attributes.imatge;

¿Sabrías decirme como hacerlo para cargar solo el que toca?
Muchas gracias!
  #6 (permalink)  
Antiguo 27/07/2009, 10:23
 
Fecha de Ingreso: abril-2008
Mensajes: 613
Antigüedad: 16 años, 7 meses
Puntos: 22
Respuesta: botonera con bases de datos

Pues no sé, la verdad es que es un código lioso a simple vista.
Eval se utiliza para acceder a objetos creados dinámicamente pero el sistema de corchetes parece que debería funcionar también. Siento no poder decirte más.
__________________
Compartir es vivir
www.programador-php.com
  #7 (permalink)  
Antiguo 27/07/2009, 10:51
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años
Puntos: 51
Respuesta: botonera con bases de datos

porque primero tienes que organizarte el xml a simple vista el problema viene ha que recoges los datos del xml utilizando el mismo indice
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #8 (permalink)  
Antiguo 28/07/2009, 09:14
Avatar de bitxu  
Fecha de Ingreso: julio-2009
Mensajes: 51
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: botonera con bases de datos

No creo que sea el xml, con lo que he hecho:

Ya había creado los botones, boton0, boton1, boton2, etc.

eval("_root.boton"+i).onRelease = function () {

var fitxa_novetats:XML = new XML();
fitxa_novetats.ignoreWhite = true;
fitxa_novetats.load("fitxa_producte_o.php");
fitxa_novetats.onLoad = function(){
var fitxa_novetats:Array = this.firstChild.childNodes;

//Aqui le digo que busque toda la info de fitxa_novetats, no de una en una sino toda! con fitxa_novetats.length recoge la info de todos los productos.

for(i = 0; i < fitxa_novetats.length; i++) {

//Aquí le doy la función de crear un movieclip que se llame boton i que rellene los cuadros de texto con la info recogida

_root.attachMovie("fitxa_producte", "boton"+i, _root.getNextHighestDepth());
_root["boton"+i]._x = 575;
_root["boton"+i]._y = 685;
_root["boton"+i].producte_txt.text = fitxa_novetats[i].attributes.nom;
_root["boton"+i].descripcio_txt.text = fitxa_novetats[i].attributes.descripcio;
_root["boton"+i].botiga_txt.text = fitxa_novetats[i].attributes.botiga;
_root["boton"+i].referencia_txt.text = fitxa_novetats[i].attributes.referencia;
_root["boton"+i].preu_txt.text = fitxa_novetats[i].attributes.preu;
_root["boton"+i].imatge_txt.text = fitxa_novetats[i].attributes.imatge;

No se como se hace pero seguro que hay alguna manera de que al presionar el botón no se visualice toda la información sino sólo la de cada id.

gracias.
  #9 (permalink)  
Antiguo 29/07/2009, 12:50
Avatar de bitxu  
Fecha de Ingreso: julio-2009
Mensajes: 51
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: botonera con bases de datos

Hay alguien que me pueda ayudar? gracias!
  #10 (permalink)  
Antiguo 29/07/2009, 20:19
 
Fecha de Ingreso: julio-2009
Mensajes: 6
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: botonera con bases de datos

La verdad está muy confuso tu código. Estoy asumiendo que tienes varios botones separados generados dinámicamente, y que al hacer clic a cada uno se va a rellenar campos de texto con la información del XML. Entonces:
//Cargo el XML fitxa_novetats
var fitxa_novetats:XML = new XML();
fitxa_novetats.ignoreWhite = true;
fitxa_novetats.load("fitxa_producte_n.php");
//al cargar, asigno los resultados a distintos arrays

var producte:Array=new Array();
var descripcio:Array=new Array()
// etc

fitxa_novetats.onLoad = function(){
for(i = 0; i < fitxa_novetats.length; i++) {
producte[i]=fitxa_novetats[i].attributes.nom;
descripcio[i]=fitxa_novetats[i].attributes.descripcio;
//etc
}
}
//Creo los campos de texto aquí o visualmente en Flash
var nom_text:TextField=new TextField();
var descripcio_text=new TextField();
descripcio_y=100;
//etc

//Ahora cargo el otro XML
var novetats:XML = new XML();
novetats.ignoreWhite = true;
novetats.load("novetats.php");
//creo un array para meter los botones y referenciarlos fácilmente
var botones:Array=new Array();
//creo los botones
novetats.onLoad = function(sucess:Boolean) {
if (success){
for (i=0; i<novetats.length; i++) {
botones[i] = this.attachMovie("boton", "boton"+i, _root.getNextHighestDepth());
botones[i]._x = 10;
botones[i]._y = botones[i].height*i; //si quiero una botonera vertical
// asigno la función de cargar los datos
botones[i].onRelease=function(){
descripcio_text.text=descripcio[i];
//etc
}

}
}
}
  #11 (permalink)  
Antiguo 02/09/2009, 03:14
Avatar de bitxu  
Fecha de Ingreso: julio-2009
Mensajes: 51
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: botonera con bases de datos

Perdona que no haya dicho nada... He estado de vacaciones y snif! ya han terminado... Miraré de adaptar el código que me has pasado a ver si funciona.

Muchas gracias!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:01.