[Php-avanzado] Problema con llamada a función
Lucas Nastri
dex87.mdq en gmail.com
Jue Abr 22 19:20:00 ART 2010
Hola Leo, ántes que nada gracias por la respuesta. Mirá, yo quería
implementar AJAX porque me parecía buena idea actualizar solo un div
en lugar de la página completa. Pero si decís que me puede traer más
complicaciones que recargar la página completa ni lo pienso y recargo
la página. De hecho es más sencillo recargar todo que un div por medio
de AJAX (por lo menos para mi :P).
Por otro lado me voy a poner a investigar sobre las llamadas
sincrónicas a funciones porque la verdad no estoy muy seguro de
saberlo y veo que es algo que tengo que saber.
Y otra cosa nada que ver, hice ésta misma pregunta en un foro de
programación web. Pusé el código como lo puse acá para que se
entendiera más a que apuntaba mi pregunta. Un usuario me respondió
(una cosa nada que ver con mi problema pero creo que tiene razón)
preguntandome para qué creaba variables y asignaba las variables que
entraban por el vector $_POST, ya que ésto consume memoria. Es algo
lógico y tiene razón éste usuario, pero al mismo tiempo pensé que si
en lugar de escribir por ejemplo:
$nom = $_POST['nom'];
$ape = $_POST['ape'];
$tel = $_POST['tel'];
$dir = $_POST['dir'];
alta($nom, $ape, $tel, $dir);
hiciera:
alta($_POST['nom'], $_POST['ape'], $_POST['tel'], $_POST['dir']);
el código se vé menos legible, es decir, de la otra manera, creando
variables, queda más prolijo. ¿Es conveniente, si tuviera 200 o 300
variables en el vector $_POST o $_GET o el que fuera (cito un ejemplo
exepcional ya que lo veo complicado tener tantas variables en éstos
vectores), crear variables para asignar los valores de las variables
del vector en cuestión a variables que yo creo o en ese caso que son
tantas variables dentro del vector conviene utilizarlas directamente?.
Gracias por la ayuda!.
Lucas.
El día 22 de abril de 2010 00:43, Leonardo Tadei - Pegasus Tech Supply
<leonardot en pegasusnet.com.ar> escribió:
> 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
>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
Más información sobre la lista de distribución Php-avanzado