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

Horror de Paginación (ayuda por favor)

Estas en el tema de Horror de Paginación (ayuda por favor) en el foro de Flash y Actionscript en Foros del Web. Buenas, este es mi primer mensaje, estoy bastante desesperado. He hecho un flash de mostrar registros paginados desde PHP, pero por razones que no entiendo ...
  #1 (permalink)  
Antiguo 07/02/2006, 05:56
 
Fecha de Ingreso: febrero-2003
Mensajes: 39
Antigüedad: 21 años, 1 mes
Puntos: 1
Horror de Paginación (ayuda por favor)

Buenas, este es mi primer mensaje, estoy bastante desesperado.
He hecho un flash de mostrar registros paginados desde PHP, pero por razones que no entiendo me pone: 1/2, 2/2, 3/2 y 4/2, y no se solucionarlo.
Os dejo aquí el Código AS:

//FUNCION GENERAL
//el valor "pagina" es el que mando de flash a PHP para que rehaga la select

funciongeneral = function (pagina) {
inicioX = 10;
inicioY = 40;
separacionVertical = 30;
// función de mostrar el detalle del registro elegido

// objeto LoadVars que recibe el listado de registros
datos_bd = new LoadVars();
datos_bd.pags = pagina; //pags es el valor que recibe por POST el PHP

datos_bd.onLoad = function(exito) {
this.total = parseInt(this.total); //total de registros
var_total = parseInt(this.full_pags);
//var_total es una variable del campo de texto que muestra el total, el 1/2

for (var n = 1; n<this.total+1; n++) {
var nom = _root.attachMovie("nombre", "nombre"+n, n+1);
nom.id = this["id"+n];
nom.lugar.text = this["localidad"+n];
}
};
// acceso a la base de datos para obtener un listado de usuarios
datos_bd.sendAndLoad("contenidos.php", datos_bd, "POST");
};

contpag = 0; //el contador de flash para pasar paginas a la función
onLoad = funciongeneral(); //la orimera vez no paso "página"
txt_actual.text = contpag+1;
//txt_actual es el 1/2
//sumo 1 al TEXT para que no sea pagina 0, que queda mal

//Controles de avance:
bot_atras.onRelease = function() {
if (contpag<=0) {
contpag = 0;
} else {
contpag--;
}
funciongeneral(contpag);
txt_actual.text = int(contpag)+1;
};

bot_alante.onRelease = function() {
if (contpag<=var_total) {
contpag++;
} else {
contpag = var_total;
}
txt_actual.text = int(contpag)+1;
funciongeneral(contpag);
};


Y este es el código PHP que recibe la pagina de flash y realiza la Consulta en relacion a dicho valor de "página":

$TAMANO_PAGINA = 9; // 9 registros que quiero que salgan por página

$res = mysql_query("SELECT id FROM casas_sp");
$total_regs = mysql_num_rows($res);
$total_pags = ceil($total_regs/ $TAMANO_PAGINA);
//redondeo hacia arriba el total de páginas, ya que no podría ser 1,5 sino 2.

//calculo el inicio del registro de todas las consultas segun la pagina que me pase flash
$pagina = $_POST["pags"];
$inicio = ($pagina) * $TAMANO_PAGINA;

$res = mysql_query("SELECT id,ubi_localizacion FROM casas_sp limit ".$inicio.",".$TAMANO_PAGINA."");

.
.
.
//realizo el resto de codigo y guardo los valores para mandarlos a Flash, INCLUIDA:
$salida.="full_pags=$total_pags"; //full_pags es el valor de páginas que recibe el flash y guarda en la variable total_pags (en este caso, 2).

AQUI os dejo la prueba viviente del error, en la propia web.
(No me deja postear la url, pero creo que es necesaria para ver los errores, la separo por trozos):
inmoexplora.com/lib/telefonos/prueba/carga_conjunta.html

Ayuda por favor, no consigo amoldarlo al 1/2 y 2/2.
Saludos, y gracias.
  #2 (permalink)  
Antiguo 07/02/2006, 06:12
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 6 meses
Puntos: 1
Le cambie varias cosas al codigo AS:

FLASH:

Código:
//FUNCION GENERAL
//el valor "pagina" es el que mando de flash a PHP para que rehaga la select
funciongeneral = function (pagina) {
	inicioX = 10;
	inicioY = 40;
	separacionVertical = 30;
	// función de mostrar el detalle del registro elegido
	// objeto LoadVars que recibe el listado de registros
	datos_bd = new LoadVars();
	datos_bd.pags = pagina;
	datos_bd.sendAndLoad("contenidos.php", datos_bd, "POST");
	//pags es el valor que recibe por POST el PHP
	datos_bd.onLoad = function(exito) {
		if (exito) {
			total = parseInt(this.total);
			//total de registros
			var_total = parseInt(this.full_pags);
			//var_total es una variable del campo de texto que muestra el total, el 1/2
			for (var n = 1; n<total+1; n++) {
				var nom = _root.attachMovie("nombre", "nombre"+n, n+1);
				nom.id = this["id"+n];
				nom.lugar.text = this["localidad"+n];
			}
		}
	};
	// acceso a la base de datos para obtener un listado de usuarios
};
contpag = 0;
//el contador de flash para pasar paginas a la función
funciongeneral();
//la primera vez no paso "página"
txt_actual.text = contpag+1;
//txt_actual es el 1/2
//sumo 1 al TEXT para que no sea pagina 0, que queda mal
//Controles de avance:
bot_atras.onRelease = function() {
	if (contpag<=0) {
		contpag = 0;
	} else {
		contpag--;
	}
	funciongeneral(contpag);
	txt_actual.text = int(contpag)+1;
};
bot_alante.onRelease = function() {
	if (contpag<=var_total) {
		contpag++;
	} else {
		contpag = var_total;
	}
	txt_actual.text = int(contpag)+1;
	funciongeneral(contpag);
};
Y el php creo que esta bien aunque no vendria mal que lo repasases (lo de calcular el total de pags y todo eso... )

PHP:
Código PHP:
<?
$TAMANO_PAGINA 
9// 9 registros que quiero que salgan por página

$res mysql_query("SELECT id FROM casas_sp");
$total_regs mysql_num_rows($res);
$total_pags ceil($total_regs$TAMANO_PAGINA);
//redondeo hacia arriba el total de páginas, ya que no podría ser 1,5 sino 2.

//calculo el inicio del registro de todas las consultas segun la pagina que me pase flash
$pagina $_POST["pags"];
$inicio = ($pagina) * $TAMANO_PAGINA;

$res mysql_query("SELECT id,ubi_localizacion FROM casas_sp limit ".$inicio.",".$TAMANO_PAGINA."");

//realizo el resto de codigo y guardo los valores para mandarlos a Flash, INCLUIDA:
$salida.="full_pags=$total_pags"//full_pags es el valor de páginas que recibe el flash y guarda en la variable total_pags (en este caso, 2).
?>
Asi se ve muuuucho mejor

Última edición por -=ArgoN=-; 07/02/2006 a las 06:25
  #3 (permalink)  
Antiguo 07/02/2006, 09:47
 
Fecha de Ingreso: febrero-2003
Mensajes: 39
Antigüedad: 21 años, 1 mes
Puntos: 1
Gracias por la más que rápida respuesta :), así el código se ve mejor, más limpio, pero sigue fallando, aquí está el código de momento:

Código:
funciongeneral = function (pagina) {
	// objeto LoadVars que recibe el listado de registros
	datos_bd = new LoadVars();
	datos_bd.hacer = "todos";
	datos_bd.pags = pagina;
	datos_bd.sendAndLoad("contenidos.php", datos_bd, "POST");
	
	// función que procesa la información del listado de usuarios
	datos_bd.onLoad = function(exito) {
		total = parseInt(this.total);
		var_total = parseInt(this.full_pags);
		for (var n = 1; n<total+1; n++) {
			var nom = _root.attachMovie("nombre", "nombre"+n, n+1);
			nom.id = this["id"+n];
			nom.lugar.text = this["localidad"+n];
		}
	}
}

contpag = 0;
funciongeneral();
txt_actual.text = contpag+1; 

bot_atras.onRelease = function() {
	if (contpag<=0) {
		contpag = 0;
	} else {
		contpag--;
	}
	funciongeneral(contpag);
	txt_actual.text = contpag+1;
};

bot_alante.onRelease = function() {
	if (contpag<var_total) { 
		contpag++;
	} else {
		contpag = var_total;
	}
	txt_actual.text = contpag+1;
	funciongeneral(contpag);
};
La web sigue igual, está actualizada así que el vínculo es el mismo que el del 1º mensaje.

Por si ayuda de algo a aclarar la duda, he hecho unos traces durante todo el código, estos son los resultados:

- Trazo var_total nada más arrancar el flash, y me pone "Undefined", luego ya si das a avanzar o retreceder pone "2" (el total de verdad)
- También he trazado el contpag en todas las posiciones:
* al inicio, en la pagina 1/2, me traza 0,
* en la página 2/2 me traza 1
* en la 3/2 me traza 2


Saludos, y gracias de nuevo.

Última edición por Narachamus; 07/02/2006 a las 10:04
  #4 (permalink)  
Antiguo 07/02/2006, 10:54
 
Fecha de Ingreso: febrero-2003
Mensajes: 39
Antigüedad: 21 años, 1 mes
Puntos: 1
He arreglado el problema, pero temo que ha sido mediante chapucillas.
Ahora funciona bien, pero me gustaría que como antes, me ayudaseis a depurarlo y arreglarlo para que quedase mejor y no tan chapuzas.
Los cambios vienen comentados con un //NEW:

Código:
funciongeneral = function (pagina) {
	// objeto LoadVars que recibe el listado de registros
	datos_bd = new LoadVars();
	datos_bd.hacer = "todos";
	datos_bd.pags = pagina;
	datos_bd.sendAndLoad("contenidos.php", datos_bd, "POST");
	
	// función que procesa la información del listado de usuarios
	datos_bd.onLoad = function(exito) {
		total = parseInt(this.total);
		var_total = parseInt(this.full_pags)-1;  //NEW: Resto 1 al total de paginas para que Flash no me cuente desde 0
		txt_total.text=parseInt(this.full_pags); //NEW: Creo un TextBox a parte en lugar del de var_total, para poner el /2, pero con el total de verdad (osea, 2)
		for (var n = 1; n<total+1; n++) {
			var nom = _root.attachMovie("nombre", "nombre"+n, n+1);
			nom.id = this["id"+n];
			nom.lugar.text = this["localidad"+n];
		}
	}
}

contpag = 0;
funciongeneral();
txt_actual.text = contpag+1; 
txt_variable._visible=false; //NEW: Oculto el TextBox que tiene la variable Var_Total, para que no se vea el total falso (total-1), y si se vea el nuevo TextBox.

bot_atras.onRelease = function() {
	if (contpag<=0) {
		contpag = 0;
	} else {
		contpag--;
	}
	funciongeneral(contpag);
	txt_actual.text = contpag+1;
};

bot_alante.onRelease = function() {
	if (contpag<=var_total) { 
		contpag++;
	} else {
		contpag = var_total;
	}
	txt_actual.text = contpag+1;
	funciongeneral(contpag);
};
La web:

inmoexplora.com/lib/telefonos/prueba/carga_conjunta.html
  #5 (permalink)  
Antiguo 07/02/2006, 12:35
Avatar de -=ArgoN=-  
Fecha de Ingreso: octubre-2005
Ubicación: Barcelona, España
Mensajes: 843
Antigüedad: 18 años, 6 meses
Puntos: 1
Código:
var_total = parseInt(this.full_pags)-1+"/"+parseInt(this.full_pags); //NEW ¬¬
Algo asi? var_total te devuelve: 1/2 siendo 1 = parseInt(this.full_pags)-1 y 2 = parseInt(this.full_pags); ...

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 16:58.