[Php-avanzado] Problema con llamada a función

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Jue Abr 22 00:43:39 ART 2010


Hola Lucas,

	debería bastar con que, en el botón de aceptar del formulario generado
con generaFormAlta(), vuelvas a llamar a la función que recarga este div
(tu función AJAX).
	Lo podrías hacer en el onSubmit o en el onClick, dependiendo de dónde
te convenga validar. Lo único es que esta llamada debería ser
sincrónica, ya que si la petición de alta tarda más tiempo que la
respuesta, no vas a ver el dato cambiado... ahora bien, otro día
discutimos si vale la pena hacer llamadas sincrónicas en vez de un
recargar de toda la vida... a simple vista, parece que te ganás una
complicación a cambio de muy poco, o nada.

	Saludos!

El jue, 22-04-2010 a las 00:19 -0300, Lucas Nastri escribió:
> Hola gente, cómo va?. Espero que puedan ayudarme con ésto. Paso a
> comentar mas o menos de qué se trata mi problema. Tengo una página que
> tiene 3 divs. Un div grande donde se encuentran otros 2 más chicos. El
> div de la derecha muestra un menu (por medio de links), mientras que
> el div de la izquierda muestra el contenido de cada opción (link).
> Para actualizar el contenido del div de la derecha utilizo AJAX.
> 
> Voy a dejar el código para que se entienda mejor
> 
>     <body>
>         <div id="tablon">
>             <form method="POST" action="?">
>                 <div id="contenido">
>                     <div id=izq>
>                         <?php generaTablaEmpUsr(); //Ésta función me
> genera el menu ?>
>                     </div>
>                     <div id=der>
>                         <?php
>                             /*EN ÉSTA CAPA CARGO EL CONTENIDO SEGÚN
> LA COPCIÓN QUE SEA
>                             ELEGIDA EN EL MENU(EN LA CAPA IZQ)*/
>                         ?>
>                     </div>
>                 </div>
>             </form>
>         </div>
>     </body>
> 
> 
> Entonces la función a la que llamo en la capa izquierda me muestra el
> menu de opciones con los links y lo que hago es cargar el contenido de
> la opción (link) en la capa derecha. Obviamente tengo que llamar a una
> función que contiene lo que va a mostrar la capa derecha. Por ejemplo
> la función alta.
> 
>     function manejadorAlta(){
>         if(!isset($_POST["alta"])){
>             generaFormAlta();
>         }else{
> 
>             $ape = $_POST["ape"];
>             $nom = $_POST["nom"];
>             $dni = $_POST["dni"];
> 
>             $dia = $_POST["dias"];
>             $mes = $_POST["meses"];
>             $ano = $_POST["anos"];
> 
>             $fNac = armaFNac($dia, $mes, $ano);
> 
>             $nick = $_POST["nick"];
>             $pass = $_POST["pass"];
>             $pass2 = $_POST["pass2"];
> 
>             $id_cat = $_POST["tipoUsers"];
> 
>             $todoOk = validaTodo($nom, $ape, $dni, $dias, $meses,
> $anos, $nick, $pass, $pass2, $id_cat);
>             if($todoOk == true){
>                 altaUser($nick, $pass, $id_cat);
>                 $id_user = getIdUsr($nick, $pass); //RECUPERO EL ID DEL USUARIO
>                 altaEmple($ape, $nom, $dni, $fNac, $id_user);
>             }
>         }
>     }
> 
> 
> Ésta función la llamo cuando hago clic en un link del menu de
> opciones. La primera vez que llame a la función el if se va a evaluar
> como verdadero, ya que la variable $_POST["alta"] todavía no fué
> seteada, entonces llama a la función "generaFormAlta()", que me genera
> el formulario de alta. Cuando termina ésta función que genera el
> formulario del alta el if también termina y la función
> "manejadorAlta()" que es a la que llamo por el link también.
> 
> El tema, y es el problema que tengo, es que yo necesito que ésta
> función se llame dos veces ya que necesito crear el form (que eso lo
> hace cuando entra al if) y luego llamarla de nuevo para ejecutar el
> código que está en el else que es el código que en realidad hace el
> alta.
> 
> Yo al form le puse en el action un signo "?", para que las variables
> se pasen a éste mismo archivo, para llamarlo otra vez. Pero el tema es
> que no se como ejecutar de nuevo la función "manejadorAlta()" para que
> ejecute el código del else .
> 
> Si no usara AJAX sería fácil, porque recargaría la página entera,
> entonces siempre llamaría a la función en el div de la derecha. El
> tema es ese, que no se como invocar por segunda vez la función para
> que haga el alta.
> 
> Si alguien puede ayudarme se lo agradecería porque me quedé acá y no
> sé como seguir.
> 
> 
> Muchas gracias por la ayuda.
> Lucas.
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
-- 

Leonardo Tadei
leonardot en pegasusnet.com.ar
http://blog.pegasusnet.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado