Hola buenas, hace poco que estoy haciendo experimentos con xajax y no tengo mucha idea. Me descargue un ejemplo de validacion de formulario para probar justo cuando mi servidor habitual dio problemas y no pude probarlo. Así que me registre en otro sitio y subi el ejemplo para probarlo y funciono a la primera. El caso es que mi servidor a vuelto a funcionar y resulta que la misma pagina no funciona.
Mas concretamente el problema es que cuando le doy al boton de enviar del formulario la funcion "procesar_formulario" me dice que debo escribir el nombre como si estuviese vacio.
El código es:
Código PHP:
<?php require_once('Connections/comentarios.php'); ?>
<?
//incluímos la clase ajax
require ('xajax/xajax_core/xajax.inc.php');
//instanciamos el objeto de la clase xajax
$xajax = new xajax();
$xajax->setCharEncoding('ISO-8859-1');
$xajax->configure('decodeUTF8Input',true);
function muestra_formulario(){
//creo el xajaxResponse para generar una salida
$respuesta = new xajaxResponse();
$codigo_formul = '<form id="formulario">
Nombre: <input type="text" name="nombre" />
<br />
Apellidos: <input type="text" name="apellidos" />
<br />
<textarea name="cuerpo"></textarea>
<br />
<input type="button" value="Enviar" onclick="xajax_procesar_formulario(xajax.getFormValues(\'formulario\'))" />
</form>
';
//mostramos en capa capaformulario el texto código HTML del formulario
$respuesta->assign("capaformulario","innerHTML","$codigo_formul");
return $respuesta;
}
$connectid = mysql_pconnect($hostname_comentarios, $username_comentarios, $password_comentarios);
mysql_select_db($database_comentarios,$connectid);
function procesar_formulario($form_entrada){
//creo el xajaxResponse para generar una salida
$respuesta = new xajaxResponse();
//validación
$error_form = "";
if ($form_entrada["nombre"] == "")
$error_form = "Debes escribir tu nombre";
elseif ($form_entrada["apellidos"] == "")
$error_form = "Debes escribir tus apellidos";
elseif (strlen($form_entrada["cuerpo"]) < 10)
$error_form = "El comentario debe tener al menos 10 caracteres";
//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("mensaje","innerHTML","<span style='color:red;'>$error_form</span>");
}else{
//es que no hubo error en el formulario
$ssql = "insert into pruebas (nombre, apellidos, comentario) values ('" . $form_entrada["nombre"] . "', '" . $form_entrada["apellidos"] . "', '" . $form_entrada["cuerpo"] . "')";
if (mysql_query($ssql)){
$salida = "Hemos procesado esto:<p>";
$salida .= "Nombre: " . $form_entrada["nombre"];
$salida .= "<br>Apellidos: " . $form_entrada["apellidos"];
$salida .= "<br>Comentario: " . $form_entrada["cuerpo"];
$salida = "Insertado correctamente";
}else{
$salida = "No se ha insertado. Este es el error: " . mysql_error();
}
//mostramos en capa mensaje el texto que está todo correcto
$respuesta->assign("mensaje","innerHTML","<span style='color:blue;'>Todo correcto... Muchas gracias!</span>");
//escribimos en la capa con id="capaformulario" el texto que aparece en $salida
$respuesta->assign("capaformulario","innerHTML",$salida);
//tenemos que devolver la instanciación del objeto xajaxResponse
}
return $respuesta;
}
//registramos la función creada anteriormente al objeto xajax
$xajax->registerFunction("muestra_formulario");
$xajax->registerFunction("procesar_formulario");
//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequest();
?>
<html>
<head>
<title>Enviar y procesar un formulario con Ajax y PHP</title>
<?
//En el <head> indicamos al objeto xajax se encargue de generar el javascript necesario
$xajax->printJavascript("xajax/");
?>
</head>
<body>
<div id="mensaje"></div>
<br />
<div id="capaformulario">
<a href="#" onClick="xajax_muestra_formulario()">Escribe un comentario del artículo</a>.
</div>
</body>
</html>
Lo primero que se me ocurrió es que por lo que sea mi sevidor no me permite hacer esto pero el caso es que el ejemplo del "thewall" de la página de Xajax si que me funciona. Seguro que es alguna tonteria pero, que es lo que hago mal?
Gracias a tod@s de antemano.
Salud'Os!