Comunidad de diseño web y desarrollo en internet online

Problema con listado AS2 + PHP + MySQL (pasando variables)

Citar            
MensajeEscrito el 20 Sep 2008 07:15 pm
Buenas.
Estoy qeriendo hacer un listado con AS2 + PHP + MySQL.
PHP interactua con MySQL e imprime un XML que lo lee AS2 y lo muestra en pantalla... Hasta ahi todo bien.. Ahora bien, segun el diseño que me pasaron, el listado, al cargar, muestra los ultimos 3 registros insertados y cada registro esta compuesto de 3 campos (fecha, hora y comentario). El tema es que al costado del listado estan los botones "up" y "down" para ir mostrando distintos registros, siempre de a 3 filas.
O sea, que en PHP tengo el siguiente Query:

Código :

SELECT mensaje, fecha, hora FROM pizarra ORDER BY fecha DESC, hora DESC LIMIT ".$_POST["start"].", 3


Ahi claramente se ve que necesito pasarle al archivo PHP la variable start que varia cada vez que hago click en las flechas del listado, y esa es la parte que me falta por hacer. Se que con la función sendAndLoad puedo enviar variables a PHP, pero no se como interpretar un XML usando esa función.

El código del flash es este:

Código :

var inicio = 0;
var envio:LoadVars = new LoadVars();
var recibir:LoadVars = new LoadVars();
cargarMensajes(inicio);
function cargarMensajes(inicio){
   mensajes = new XML()
   mensajes.ignoreWhite = true
   mensajes.load("pizarra.php")
   mensajes.ref = this 
}

mensajes.onLoad = function(succes){
   if(succes){
      resultMsg_txt.text = "Datos Cargados";
      var root = this.firstChild
      nodes = root.childNodes
      for(var i=0; i<nodes.length; i++) {
         this.ref["fecha_"+i+"_txt"].text = nodes[i].attributes.fecha
         this.ref["hora_"+i+"_txt"].text = nodes[i].attributes.hora
         //subnodes = nodes[i].childNodes
         this.ref["mensaje_"+i+"_txt"].text = nodes[i].firstChild.toString()
      }
   } else {
      resultMsg_txt.text = "Error al cargar la información";
   }
}


Saludos

Por PabloHdS

251 de clabLevel



 

firefox
Citar            
MensajeEscrito el 21 Sep 2008 08:56 pm
no se si digo una burrada pero lo que podes hacer es que al apretar el boton de up o down una varialbe suba de un numero o baje
y entonces la recibis en el php con alguna variable con post y a la ora de hacer el query pones select:lo que necesitas...y terminas con where id='$variablequecambia';
creo que debe funcionar saludos

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 21 Sep 2008 08:58 pm
where con mayuscula perdon

Por ironeric23

Claber

407 de clabLevel



Genero:Femenino  

mozilla
Citar            
MensajeEscrito el 22 Sep 2008 12:48 pm
claro. el tema es que no se como pasarle una variable a PHP usando la función load.. y usando la función sendAndLoad no se como interpretar un XML con AS. Es como que se hacer las dos cosas por separado (pasar variables o interpretar un XML) pero no las dos cosas a la vez :(

Por PabloHdS

251 de clabLevel



 

firefox
Citar            
MensajeEscrito el 22 Sep 2008 05:19 pm
La duda es interesante, pero se me ocurre un workaround: Ya que XML también tiene un método sendAndLoad y que sólo necesitas el loadVars para enviar la variable start, bien podrías usar un objeto XML en vez de loadVars para enviar la variable que necesitas. Básicamente es el mismo código, agregándo un par de líneas (para agregar el nuevo nodo) y el cambio mayor (que no serían tampoco más que un par de lineas) sería en el php, para interpretar los datos como un objeto xml.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 23 Sep 2008 04:47 am
Bueno, me parece que voy a desistir con el tema XML y tomar otro camino porque necesito entregar el trabajo el viernes y la verdad me esta costando mas de lo que me imaginaba. Se muy bien que no se debe pero voy a hacer el código para que funcione y listo, sin fijarme en optimización ni nada.

Ahora bien, aunque cambie el camino los problemas me persiguen :(
Lo que estoy haciendo ahora es, usando sendAndLoad pero no con XML sino con LoadVars, y PHP recibe las variables por POST y hace lo siguiente.

Código :

$query = "SELECT id, actividad, fecha, hora FROM agenda ORDER BY fecha DESC, hora DESC LIMIT ".$_POST["inicio"].", 2";
$sqlMensajes = mysql_query($query);
$cant = 1;
$res = "";
while($mensaje = mysql_fetch_array($sqlMensajes)){
   $res .= 'numero'.$cant.'='.$mensaje["id"].'&fecha'.$cant.'='.dateFormat($mensaje["fecha"]).' - '.$mensaje["hora"].'&actividad'.$cant.'='.$mensaje["actividad"].'&';
   $cant++;
}
$res .= "cant=".$cant;
$res .= "&query=".$query;
mysql_close($con);
echo $res;
die;


Lo recibo con AS y todo bien, ahora... el problema es el siguiente:
Yo en la interfaz del SWF muestro el listado de a 2 filas, por eso es que en el query hago un LIMIT 2. Pero si el query me devuelve 1 o 0 filas, el listado no se actualiza y deja el registro del query anterior.. se entiende?
Supongamos que yo tengo 3 registros en la base de datos, entonces cargo por primera vez y me aparece
-- Registro 1
-- Registro 2
Cuando apreto la flecha para mostrar 2 mas, el query logicamente me devuelve una sola fila, sin embargo en el listado aparece.
-- Registro 3
-- Registro 2
Posteo el código que estoy haciendo en AS... (si, ya se! no esta optimizado ni nada... no se como capturar los datos con un for :S)

Código :

var envio:LoadVars = new LoadVars();
var recibir:LoadVars = new LoadVars();

var inicio = 0;

cargarAgenda(inicio);
function cargarAgenda(inicio){
   listadoFecha1.text = "";
   listadoActividad1.text = "";
   listadoFecha2.text = "";
   listadoActividad2.text = "";
   res.text = "";
   envio.action   = "show";
   envio.inicio   = inicio;
   envio.sendAndLoad("agenda.php", recibir, "POST");
   resultMsg_txt.text = "Cargando agenda...";
}

recibir.onLoad = function(succes){
   if(succes){
      resultMsg_txt.text = "Agenda cargada";
//      res.text = this.toString();
      if(this != ""){
         res.text = this;
      }
      query.text = this.query;
      if(this.fecha1 != ""){
         listadoFecha1.text = this.fecha1;
      }
      if(this.actividad1 != ""){
         listadoActividad1.text = this.actividad1;
      }
      if(this.fecha2 != ""){
         listadoFecha2.text = this.fecha2;
      }
      if(this.actividad2 != ""){
         listadoActividad2.text = this.actividad2;
      }
      listadoEliminar1.numero = this.numero1;
      listadoEliminar2.numero = this.numero2;
      listadoEliminar1.onRelease = function():Void{
         deleteRow(this.numero);
      }
      listadoEliminar2.onRelease = function():Void{
         deleteRow(this.numero);
      }
      /*
      var root = this.firstChild
      nodes = root.childNodes
      for(var i=0; i<nodes.length; i++) {
         this.ref["listadoFecha"+i].text = nodes[i].attributes.fecha
         this.ref["listadoEliminar"+i].numero = nodes[i].attributes.id;
         this.ref["listadoEliminar"+i].onRelease = function():Void{
            deleteRow(this.numero);
         }
         //subnodes = nodes[i].childNodes
         this.ref["listadoActividad"+i].text = nodes[i].firstChild.toString()
      }
      */
   } else {
      resultMsg_txt.text = "Error al cargar la agenda.";
   }
}


Espero me puedan ayudar otra vez.

Saludos

Por PabloHdS

251 de clabLevel



 

firefox

 

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