Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Php + Formulario + Xajax

Estas en el tema de Php + Formulario + Xajax en el foro de Frameworks JS en Foros del Web. Hola que tal como estan? Pues primero que nada quiero aclararles que estoy entrando en el mundo XAJAX, y de antemano les doy las gracias ...
  #1 (permalink)  
Antiguo 14/01/2011, 15:58
Avatar de rivasxavier  
Fecha de Ingreso: enero-2011
Ubicación: Caracas
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
Pregunta Php + Formulario + Xajax

Hola que tal como estan?

Pues primero que nada quiero aclararles que estoy entrando en el mundo XAJAX, y de antemano les doy las gracias por la ayuda que puedan darme.

Mi problemita es este:

Tengo un archivo llamado f_form_registrar.php, donde tengo mi codigo Xajax en donde me valida el formulario que le paso por parametro,a continuacion el codigo

f_form_registrar.php
Código PHP:

<?php
require ('xajax/xajax_core/xajax.inc.php');
[
COLOR="Red"]include ('admin/clad.php');[/COLOR]

$xajax = new xajax();

function 
form_crearUsuario($formulario){
   
//creo el xajaxResponse para generar una salida
   
$respuesta = new xajaxResponse();

   
//validación
   
$error_form "";
   
    if (
$formulario["cedula"] == "")
      
$error_form "El campo C&eacute;dula est&aacute; vacio. Verifique e intente de nuevo.";
    elseif (
$formulario["nombre"] == "")
      
$error_form "El campo N&oacute;mbre est&aacute; vacio. Verifique e intente de nuevo.";
    elseif (
$formulario["apellido"] == "")
      
$error_form "El campo Apellido est&aacute; vacio. Verifique e intente de nuevo.";
    elseif (
$formulario["username"] == "")
      
$error_form "El campo Nombre de registro est&aacute; vacio. Verifique e intente de nuevo.";
    elseif (
$formulario["password"] == "")
      
$error_form "El campo Clave est&aacute; vacio. Verifique e intente de nuevo.";
    elseif (
$formulario["repassword"] == "")
      
$error_form "Vuelva a introducir su clave.";
    elseif (
$formulario["repassword"] != $formulario["password"])
      
$error_form "Las claves introducidas son diferentes. Verifique e intente de nuevo.";
    elseif (
$formulario["email"] == "")
      
$error_form "E-Mail invalido. Verifique e intente de nuevo.";    
    
    [
COLOR="Red"]if((existe_empleado($formulario["cedula"])) > 0){
        
$error_form "Ya existe un usuario registrado con este numero de c&eacute;dula;";    
    }[/
COLOR]
    
   
//compruebo resultado de la validación
   
if ($error_form != ""){
      
//Hubo un error en el formulario
      //en la capa donde se muestran mensajes, muestro el error
      
$respuesta->Assign("mensajes","innerHTML","<p class='msjerror'>$error_form</p>");
   }else{                                        
      
//es que no hubo error en el formulario
      
$salida "Datos Procesados Con Exito.";
      
      
//mostramos en capa mensaje el texto que está todo correcto
      
$respuesta->Assign("mensajes","innerHTML","<p class='mensaje'>$salida</p>");
      
      
//tenemos que devolver la instanciación del objeto xajaxResponse
   
}
   return 
$respuesta;
}
//registramos la función creada anteriormente al objeto xajax
$xajax->register(XAJAX_FUNCTION'form_crearUsuario');
//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequest();
?>
Ok,ya que hemos visto el codigo, les comento que si le quito lo que esta en rojo todo lo demas funciona correctamente y no me da problema alguno.

Ahora bien, la funcion: existe_empleado($formulario["cedula"]) ubicada en esta parte del codigo:

Código PHP:
[COLOR="Red"]if((existe_empleado($formulario["cedula"])) > 0){
        
$error_form "Ya existe un usuario registrado con este numero de c&eacute;dula;";    
    }[/
COLOR
Esta ubicada en el archivo clad.php (que contiene todo lo relacionado a las consultas SQL del sistema),este archivo lo incluyo a principio de pagina include ('admin/clad.php'); y este es su codigo:

clad.php
Código PHP:

<?php

    
include "conexionMySQL.php";    

    
/*
        Solamente en este archivo debe estar todo lo relacionado con las consultas SQL del Sistema, y
        no debe haber funciones particulares de conexion a bases de datos como por ejemplo pg_connect o mysql_connect.
        Si alguna de estas funciones se encuentra en este archivo, o hay alguna consulta SQL fuera de éste se rompería
        la estructura de separación de capas por lo que llevaría a un mal diseño.

        NOTA: ESTOS ARCHIVOS PUEDEN SER OPTIMIZADOS Y MODIFICADOS
    */

    /*
        La función existe_empleado tiene como objetivo consultar datos en la tabla t_empleado en la base de datos,
        recibe un parámetro, cédula.
        Se programó para que los posibles valores de retorno sean:
            -2: Hubo un error en la conexión
            0 ó 1: cantidad de registros en la base de datos.

    */

    
    
function existe_empleado($cedula){
        
$conexion bd_conectar(DIRECCION,USUARIO,CLAVE,BASEDEDATOS);
        if (!
$conexion)
            return -
2;
        
        
$sql "SELECT count(*) as cuenta FROM t_empleado e WHERE e.ci_empleado = '".$cedula."'";
        
        
$r bd_ejecutar_DQL($conexion,$sql);

        return (
mysql_num_rows($r));
    }
?>
Quisiera saber si esto se puede hacer,y si no se puede hacer asi cual seria la forma correcta,muchisimas gracias
  #2 (permalink)  
Antiguo 16/01/2011, 20:58
Avatar de ecarlevaro  
Fecha de Ingreso: octubre-2010
Ubicación: Paraná, Argentina
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 13
Respuesta: Php + Formulario + Xajax

Sí se puede hacer, se puede realizar un include o require de un archivo con funciones y luego llamar a esas funciones desde la función que registras con XAJAX.

Quizás el problema ande con la consulta SQL, ¿a qué te refieres cuando dices "que no funciona"?¿recibes algún mensaje de error?. Prueba usar FireBug para ver si PHP o la base de datos te tira algún error.
  #3 (permalink)  
Antiguo 18/01/2011, 13:44
Avatar de rivasxavier  
Fecha de Ingreso: enero-2011
Ubicación: Caracas
Mensajes: 3
Antigüedad: 13 años, 3 meses
Puntos: 0
De acuerdo Respuesta: Php + Formulario + Xajax

Hola ecarlevaro, de verdad muchisimas gracias por preocuparte en responder,y si ciertamente estaba haciendo algo mal, en donde registro mi funcion XAJAX estaba incluyendo el archivo (con las funciones "precargadas") fuera de la funcion,es decir...


<?php

include("direc_arcivo");

function nom_funcion(){
-----
-----
-----
}

?>


Y como bien tu lo dijiste,debe estar dentro de la funcion para que lo reconozca,quedaria asi:


<?php

function nom_funcion(){

include("direc_arcivo");

-----
-----
-----
}

?>

Mil gracias ecarlevaro, +10 para ti xD
  #4 (permalink)  
Antiguo 18/01/2011, 14:59
Avatar de ecarlevaro  
Fecha de Ingreso: octubre-2010
Ubicación: Paraná, Argentina
Mensajes: 80
Antigüedad: 13 años, 6 meses
Puntos: 13
Pregunta Respuesta: Php + Formulario + Xajax

Yo el otro día estuve peleando con el mismo problema, por eso lo tengo fresco en la cabeza.

Te debería funcionar igual, el include esté dentro o fuera de la función.
El manual de PHP lo deja claro,
"Cuando se incluye un archivo, el código que contiene hereda el ámbito de las variables de la línea en la cual ocurre la inclusión. Cualquier variable disponible en esa línea del archivo que hace el llamado, estará disponible en el archivo llamado, desde ese punto en adelante. Sin embargo, todas las funciones y clases definidas en el archivo incluido tienen el ámbito global.".

Yo acabo de probar este ejemplo (que tiene cosas de Smarty, que no importan):
Código PHP:
Ver original
  1. require_once("xajax/xajax_core/xajax.inc.php");
  2. include "funciones.php";
  3. $xajax = new xajax();                                                    
  4. $xajax->configure('javascript URI','xajax/');
  5. require "../smarty/libs/Smarty.class.php";
  6. $smarty = new Smarty;
  7. $smarty->template_dir = "../smarty/templates";
  8. $smarty->compile_dir = "../smarty/templates_c";
  9. $xajax->register(XAJAX_FUNCTION,"test");
  10. //Load the xajax js into a Smarty variable
  11. $smarty->assign("xajax_javascript",$xajax->getJavascript()); //Note: use get not print...
  12.  
  13. $xajax->processRequest();
  14.  
  15. //Simple xajax registered function
  16. function test()
  17. {
  18.  $resp=new xajaxResponse();  
  19.  $resp->alert("RESPUESTA:".suma());
  20.  return $resp;
  21. }

Y el archivo funciones.php que llamo solo tiene una función llamada suma que devuelve un número nada mas.
A mí me funciona bien, yo hago click en el vínculo (que está en el template de Smarty) y XAJAX llama a xajax_test() y test() llama a suma(), suma devuelve un número y test() lo envía a xajax.

Lo que me ha pasado es que llamo al enlace de MySQL ($enlace = mysql_connect...) que está en otro archivo PHP, desde la función y ahí no funciona porque "el código que contiene hereda el ámbito de las variables" debo antes declarar como global en la función a $enlace.
Código PHP:
Ver original
  1. function loca()
  2. {
  3.  global $enlace; //Declaro que $enlace es la variable $enlace que esta fuera de la función
  4.  //Ahora puedo usar $enlace como si fue declarada dentro de la funcion
  5.  return $enlce;
  6. }

Etiquetas: mysql, php, xajax, formulario
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 06:09.