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>
Gracias a tod@s de antemano.
Salud'Os!