Comunidad de diseño web y desarrollo en internet online

TUTO AMFPHP solo consulta

Citar            
MensajeEscrito el 29 Oct 2005 03:47 pm
que tal? me he iniciado en esto del AMFPHP, baje los archivos del tutorial, he hecho todo lo que dice el tuto, al principio no me funcionaba, no mostraba nada en el el grid, despues de un ratote pude corregir el error y ahora ya muestra los registros, pero solo consulta, cuando pruebo cualquiera de las otras opciones insertar, modificar o eliminar, al dar al boton de click, aparece en el status bar de mi navegador "Transfiriendo datos desde misitio" y ahí se queda, ya no hace mas y no modifica, elimina o inserta ningun registro.

¿A alguien se le ha presentado el mismo problema?

Por nodream

Claber

99 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Oct 2005 03:49 pm

nodream escribió:

al dar al boton de clicik....


Quice decir al dar al boton de 'Si' (si deseo modificar, eliminar o insertar el registro)

Por nodream

Claber

99 de clabLevel



 

firefox
Citar            
MensajeEscrito el 29 Oct 2005 05:38 pm
Hola, que tal?

Le diste los nombres de instancias a todos los botones, estas utilizando un código escrito por ti siguiendo el tutorial (si es asi muestramelo) o estas usando lo que estan en los archivos del tutorial?

saludos :)

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 31 Oct 2005 04:34 pm
Uso el codigo de los archivos del tutorial, solo modifique el gaeway.php usando el nombre de mi tabla (AMFTEST) en lugar del que usan en el tuto que es AMFPHP y el nombre de mi tabla que es 'amftable' en lugar de 'prueba'.

Si puse los nombre a los botones. No se que pueda pasar, le seguire buscando mientras alguien me puede ayudar...gracias.

Por nodream

Claber

99 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Oct 2005 08:36 pm
aqui esta el codigo, aunque esta algo largo

Código :

import mx.remoting.NetServices;
import mx.remoting.Connection;
mx.remoting.debug.NetDebug.initialize();
                                  //Pon la URL de tu gateway aqui
NetServices.setDefaultGatewayUrl("http://localhost/remoting/gateway.php"); 
conexion = NetServices.createGatewayConnection();

capturaRespuesta = new Object();
servicio = conexion.getService("misquerys",capturaRespuesta);

capturaRespuesta.onStatus = function (data){
   trace("Fuck un error, por:" +data.description);
}
capturaRespuesta.consulta_Result = function (data){
   var proveedor:Array = new Array();
   btnInsertar.enabled=true;
   if (data){ //si la consulta fue correcta 
      if (data.getLength()){ //si tenemos al menos un registro
         for (i=0; i<data.getLength();i++){ //empezamos a codificar nuestro datos
            proveedor.addItem({id:data.getItemAt(i).id,nombre:unescape(data.getItemAt(i).nombre),comentarios:unescape(data.getItemAt(i).comentarios)});
         }
         datagrid.dataProvider= proveedor;
         datagrid.getColumnAt(0).width=50;
         datagrid.getColumnAt(1).width=192.5;
         datagrid.getColumnAt(2).width=192.5;
         datagrid.selectedIndex = 1; //dejo como seleccionado el primer item del datagrid
         idtxt.text = datagrid.selectedItem.id;
         nombretxt.text = datagrid.selectedItem.nombre;
         comentariostxt.text = datagrid.selectedItem.comentarios;         
         btnModificar.enabled=btnEliminar.enabled=true;
         estadotxt.text="Consulta completada";
      }
      else{ // sino, no tenemos registro deshabilitamos los botones de eliminar y modificar
         btnModificar.enabled=btnEliminar.enabled=false;
         estadotxt.text="No hay registro que mostrar";
      }
   }
   else{
      estadotxt.text="Ocurrio un error en la consulta";
   }
}
capturaRespuesta.insertar_Result = function (data){
   mostrarComponentes(false);   
   if (data){ //si la operacion fue exitosa, insertamos el nuevo registro en el datagrid
      datagrid.addItem({ id: data, nombre: nombretxt.text, comentarios: comentariostxt.text });
      datagrid.getColumnAt(0).width=50;
      datagrid.getColumnAt(1).width=192.5;
      datagrid.getColumnAt(2).width=192.5;
      datagrid.selectedIndex=datagrid.getLength()-1; //dejo como seleccionado el último item del datagrid
      idtxt.text = datagrid.selectedItem.id;
      nombretxt.text = datagrid.selectedItem.nombre;
      comentariostxt.text = datagrid.selectedItem.comentarios;         
      estadotxt.text ="La inserción se realizó exitosamente";      
   } else {
      estadotxt.text ="La inserción no fue completada, intente de nuevo";
   }
}
//Escuchamos lo que nos retorna el metodo modificar del servicio
capturaRespuesta.modificar_Result = function (data){
   mostrarComponentes(false);
   if (data){ //si la operacion fue exitosa, modificamos el datagrid
      datagrid.editField(datagrid.selectedIndex,"nombre",unescape(nombretxt.text));
      datagrid.editField(datagrid.selectedIndex,"comentarios",unescape(comentariostxt.text));
      estadotxt.text ="La modificacón se realizó exitosamente";
   }
   else { //sino emitimos un mensaje de error
      estadotxt.text ="La modificación no se realizo, intente de nuevo";
   }
}
//Escuchamos lo que nos retorna el metodo eliminar del servicio
capturaRespuesta.eliminar_Result = function (data){
   mostrarComponentes(false);   
   if (data){
      estadotxt.text = "El registro se elimino correctamente";
      aux =datagrid.selectedIndex;
      datagrid.removeItemAt(datagrid.selectedIndex);
      //una excepcion si el datagrid se queda vacio 
      //deshabilitamos los botones modificar y eliminar
      if (datagrid.getLength()==0){
         btnModificar.enabled=btnEliminar.enabled=false;
      } else {
         (aux!=0)?datagrid.selectedIndex=aux-1:datagrid.selectedIndex=0;
         idtxt.text=datagrid.selectedItem.id;
         nombretxt.text=datagrid.selectedItem.nombre;
         comentariostxt.text=datagrid.selectedItem.comentarios;
      }
   } else{
      estadotxt.text = "El registro no se elimino, operacion fallo";      
   }
}
/////////////////////////////////////////////////////////////////////////////////
/***********************Añadimos un Listener al Datadgrid***********************/
/******************************y su implementacion******************************/
datagrid.addEventListener("change",seleccion);
function seleccion (campoSelected){
   idtxt.text= campoSelected.target.selectedItem.id;
   nombretxt.text= campoSelected.target.selectedItem.nombre;
   comentariostxt.text= campoSelected.target.selectedItem.comentarios;
}

//Nota campoSelected(campoSeleccionado) nos dirá que fila fue seleccionada 
//del datagrid, y así asignaremos cada valor de la fila en su respectivo
//input text 
/////////////////////////////////////////////////////////////////////////////////




/////////////////////////////////////////////////////////////////////////////////
/**********************Objeto que servira de Listener para**********************/
/************************los Botones y su implementacion************************/

/*Nota el parametro boton es para saber quien invoco a la funcion, 
muy descriptivo no :? */
var alClick:Object = new Object;
var accion:Number;
alClick.click = function (boton){
   switch(boton.target){
      case btnConsultar: 
         servicio.consulta();
//         trace("consultar"); 
         break;
      case btnInsertar: 
         accion = 1;
         preguntatxt.text="¿Desea insertar este registro?";         
         idtxt.text="##";
         nombretxt.text="";
         comentariostxt.text="";
         nombretxt.editable=true;
         comentariostxt.editable=true;         
         mostrarComponentes(true);         
         break;
      case btnModificar: 
         accion = 2;
         preguntatxt.text="¿Desea modificar este registro?";
         nombretxt.editable=true;
         comentariostxt.editable=true;
         mostrarComponentes(true);         
         break;
      case btnEliminar: 
         accion = 3;                  
         preguntatxt.text="¿Desea eliminar este registro?";
         nombretxt.editable=false;
         comentariostxt.editable=false;
         mostrarComponentes(true);
         break;
      case btnSi:
         switch(accion){
            case 1: //insertar
               servicio.insertar(escape(nombretxt.text), escape(comentariostxt.text));
//               trace("confirmo insertar");
               break;
            case 2: //modificar id,  nombre, comentarios
               servicio.modificar(idtxt.text,escape(nombretxt.text),escape(comentariostxt.text));
//               trace ("confirmo modificar");
               break;
            case 3:
               servicio.eliminar(idtxt.text);
//               trace ("confirmo modificar");               
               break;
         }
         break;
      case btnNo:
         mostrarComponentes(false);
         idtxt.text = datagrid.selectedItem.id;
         nombretxt.text = datagrid.selectedItem.nombre;
         comentariostxt.text = datagrid.selectedItem.comentarios;         
         modificar.enabled=eliminar.enabled=true;
         break;
      case testbtn:
         servicio.insertar(escape("flash registro"), escape("insertado desde flash"));
         outbox.text ="Ya lo inserté"
         servicio.consulta();
         //trace("testbtn activated");
         break;
   }
}
/////////////////////////////////////////////////////////////////////////////////

/////////////////////////////////////////////////////////////////////////////////
/****************************Listener de los botones****************************/
btnConsultar.addEventListener("click",alClick);
btnInsertar.addEventListener("click",alClick);
btnModificar.addEventListener("click",alClick);
btnEliminar.addEventListener("click",alClick);
btnSi.addEventListener("click",alClick);
btnNo.addEventListener("click",alClick);
testbtn.addEventListener("click",alClick);
/*******************************************************************************/
/////////////////////////////////////////////////////////////////////////////////
function mostrarComponentes(booleano:Boolean){
   datagrid.enabled=!booleano;
   btnConsultar.enabled=!booleano;
   btnInsertar.enabled=!booleano;
   btnEliminar.enabled=!booleano;
   btnModificar.enabled=!booleano;
   cabeceratxt._visible=booleano;
   idtxt._visible = booleano;
   nombretxt._visible = booleano;
   comentariostxt._visible = booleano;
   preguntatxt._visible = booleano;
   btnSi._visible=booleano;
   btnNo._visible=booleano;
}

mostrarComponentes(false);



estadotxt.autoSize="left";
//estadotxt.text="Consultando";
btnInsertar.enabled=false;
btnEliminar.enabled=false;
btnModificar.enabled=false;
idtxt.enabled=false;
//servicio.consulta();
stop();



Aqui esta el gateway.php

Código :

<?php
   include("./app/Gateway.php");
   $gateway = new Gateway();
   $gateway->setBaseClassPath(realpath("./services")."/");
   $gateway->service();
?>


y el misquerys.php

Código :

<?php
    class misquerys{ //<--nombre de la clase igual al nombre del archivo
         function misquerys (){ //<-- constructor de la clase, nombre igual al de la clase
            $this->methodTable = array( //<--definimos lo metodos que tendra nuestra clase
                     "insertar" => array ( //<-- Metodo insertar
                        "description" => "inserta un registro", //<--Comentario del metodo, describimos que hace dicho metodo 
                        "access" => "remote", //<-- tipo de acceso del metodo, posibles valores public, remote y private
                        "arguments" => array("nombre","comentarios") //<-- Parametros del metodo
                     ),
                     "eliminar" => array (
                        "description" => "elimina un registro",
                        "access" => "remote",
                        "arguments" => array("id")
                     ),
                     "modificar" => array (
                        "description" => "modifica un registro",
                        "access" => "remote",
                        "arguments" => array("id")
                     ),
                     "consulta" => array (
                        "description" => "consulta n campos",
                        "access" => "remote"
                     ),
                     "query" => array (
                         "description" => "ejecuta un query en MySQL",
                        "access" => "private",
                        "arguments" => array ("sql","accion")
                     )
            );
         }
         //IMPLEMENTACION DE LOS METODOS//
         //Parametros $nombre y $comentarios los que vamos a insertar en los respectivos //
         //campos de la Base de Datos, el id se genera automaticamente//
         function insertar($nombre,$comentarios){
                  $nombre = utf8_encode($nombre); //<-- utf8_encode para que php entienda el escape() de flash 
               $comentarios = utf8_encode($comentarios);//<-- igual
               //creamos la cadena de nuestra sentencia(query) SQL
                  $sql= "INSERT INTO amftable (id,nombre,comentarios) VALUES ('','".$nombre."','".$comentarios."')";
               return $this->query($sql,1);//retornamos el id de nuestro registro insertado
         }
         //Parametro $id, para saber que registro vamos a eliminar de la Base de Datos
         function eliminar ($id){
                  //creamos la cadena de nuestra sentencia(query) SQL
                  $sql= "DELETE FROM amftable WHERE id='".$id."' LIMIT 1";
               return $this->query($sql,0); //retornamos 1 si se elimino correctamente y 0 en caso contrario
         }
         //Parametros $id, $nombre y $comentarios, el $id para saber que registro vamos a modificar
         // $nombre y $comentarios para hacer la respectiva modificación de nuestro registro
         function modificar ($id,$nombre,$comentarios){
                  $nombre = utf8_encode($nombre); //<-- utf8_encode para que php entienda el escape() de flash
               $comentarios = utf8_encode($comentarios);
                  //creamos la cadena de nuestra sentencia(query) SQL               
                  $sql = "UPDATE `amftable` SET `nombre` = '".$nombre."', `comentarios` = '".$comentarios."' WHERE `id` = ".$id." LIMIT 1;";
               return $this->query($sql,0); //retornamos 1 si se modifico correctamente y 0 en caso contrario
         }
         //Parametros ninguno
         function consulta (){
                  //creamos la cadena de nuestra sentencia(query) SQL
                $sql = "SELECT * FROM amftable ORDER BY id ";
               return $this->query($sql,0);  //retornamos el recordset de la consulta
         }
         //Parametros sql que contendra la sentencia SQL que se ejecutara 
         //y accion en tal caso de que sea un INSERT haremos una excepcion
         //y retornaremos el nuevo id del registro recien insertado
         function query ($sql, $accion){
               $conex= mysql_connect("localhost","root","rootpass") or die("no se puede conectar porque ".mysql_error());
            mysql_select_db("AMFTEST");
            $result= mysql_query($sql,$conex);
            if ($accion && result){ //Excepcion del INSERT, comparamos result por si la inserción fue correcta :P
               $result= mysql_insert_id();
            }
            mysql_close($conex);               
               return $result; //Consultar retonara un recordSet
                            //Modificar y Eliminar 1 si fue correcto o 0 en caso contrario
                        //Insertar retornara el id recien creado 
         }
    }
?>

Por nodream

Claber

99 de clabLevel



 

firefox
Citar            
MensajeEscrito el 01 Nov 2005 05:37 am
haz una cosa sencilla, descomenta los trace que hay en los case de btnSi y btnNo, te hablo de las lineas parecidas a esta:

// trace("confirmo insertar");

solo le quitas los // y listo, prueba el ejemplo y te debe mostrar los respectivos mensajes en la ventana de salida (Ojo esto es dentro flash).

saludos :)

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 01 Nov 2005 04:29 pm
al principio le había puesto otro texto dinámico para mostrar esos mensajes ya que cuando lo ejecutaba en flash no funcionaba por alguna razon, así que lo corría directamente desde un navegador, la linea funcionaba y despliega el mensaje, pero no realiza la funcion que debería....Ya lo he podido correr desde flash y funciona, quite los comentarios del trace y salen los mensajes de confirmacion, pero no ejecuta la insercion, modificacion, o eliminacion. Al precionar el boton de SI, sale el mensaje de confirmacion pero ya no se ocultan los componentes, es decir, entra a:

Código :

servicio.insertar(escape(nombretxt.text), escape(comentariostxt.text));
trace("confirmo insertar");

Código :

servicio.modificar(idtxt.text,escape(nombretxt.text),escape(comentariostxt.text));
trace ("confirmo modificar");

Código :

servicio.eliminar(idtxt.text);
trace ("confirmo elimicar");      



ya que sale el trace de confirmacion, pero no entra a:

Código :

capturaRespuesta.insertar_Result = function (data){}

Código :

capturaRespuesta.modificar_Result = function (data){}

Código :

capturaRespuesta.eliminar_Result = function (data){}



Lo que me desconcierta es que la consulta funciona perfectamente ¿por que las otras operaciones no funcionan correctamente?¿que estoy haciendo mal?

Por nodream

Claber

99 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Nov 2005 10:25 am
Hola, en primer lugar saludos a todo el foro puesto que este es mi primer post en el

Yo me encuentro con el mismo problema que nodream, solo se me permite hacer consultas y me es imposible modificar, insertar o eliminar.
Uso la version 8 de Flash, no se si eso dará alguna pista

Gracias Maikel por tan buenos tutos y por la solucion que se que llegará :lol:

Por weekend

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Nov 2005 05:24 pm
Ok pregunta para ambos:

  • ¿Que php estan utilizando php 4 o php 5?
  • ¿Que version de AMFPHP instalaron en su servidor?
  • ¿El usuario que estan utilizando de mysql, tiene permisos para insertar, modificar, eliminar en la base de datos de MySQL.?
  • ¿No le aparece ningun error?, si le aparece un error por favor escribanlo
  • Para weekend, ¿Estas utilizando los códigos de los archivos del tutorial o escrito por ti?
  • Para nodream , ¿Este post es algo viejo, resolviste?


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 13 Nov 2005 05:47 pm
Mi version de PHP es la 5 y la de amfphp es la 0.9
El usuario de mysql tiene permisos (es el root :-) )
Respecto a lo de mensajes de error, no no da ninguno, quite los comentarios a los trace como aconsejas arriba y en la ventana de salida efectivamente aparece que se ejecuta la accion pero no ocurre nada y sobre lo de los ficheros son los del tutorial, cambiando el user, password y demas
Voy a probar a subirlo a mi hosting por si fuera problema de mi apache

Gracias de nuevo

Por weekend

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Nov 2005 06:05 pm
ok, primer problema amfphp 0.9 es para php4

entra aqui, descarga e instalas amfphp 1.0 milestone 2 o 3

http://sourceforge.net/project/showfiles.php?group_id=72483

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 14 Nov 2005 02:57 pm
Si, tengo derechos, no marca ningun error, mi amfphp 0.9 y tengo el php 5, voy a probar con el amfphp 1.0 milestone 3 y despues digo si el problema persiste

Por nodream

Claber

99 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Nov 2005 04:51 pm
Si, tengo derechos, no marca ningun error, mi amfphp 0.9 y tengo el php 5, voy a probar con el amfphp 1.0 milestone 3 y despues digo si el problema persiste

Por nodream

Claber

99 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Nov 2005 04:53 pm
:D :D :D :D :D :D :) :P :P Excelente ya funciona perfecto, esa era la cuasa.....muy bien, GRacias Maikel

Por nodream

Claber

99 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Nov 2005 05:57 pm
Perfecto, asunto arreglado
Muchas gracias maikel

Por weekend

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Nov 2005 06:04 pm
c00l ^^


saludos y exito para ambos ^^

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox

 

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