Portada | Monotemáticos | Secciones | Desarrolladores | Comunidad | Servicios | Servicios profesionales | RSS
Desde 0 | HTML | CSS | ASP | PHP | AJAX | Javascript | Promoción de webs | Rentabilidad de webs
Directorio | Manuales | Scripts | FAQs | Programas | Artículos Copyleft | Actualidad | La Cosecha | Colabora
Registrarse | Vuestras páginas | Foros del web | Lista de correo | Boletín de novedades
Generador METAs | Compras | Busca cursos
Alojamiento | Dominios.es | Micropagos SMS | Buscadores | Patentes, marcas | Creación web | Multimedia | Videos
Desarrollo Freelance | Buscar proyectos | Buscar profesionales | Solicitar desarrollo

Recibir formulario con Ajax e insertar información en base de datos


Artículo en el que se realiza un envío de formulario con Ajax y PHP y se inserta la información en una base de datos MySQL.


18/5/07 - En este artículo vamos a resolver la duda de un usuario, que quería insertar en una base de datos la información recibida de un formulario con Ajax. En realidad es un tema que no revierte ninguna complicación, si ya conocemos el modo de trabajo de PHP con bases de datos, pues no varía nada que estemos realiando las acciones a través de Ajax. Pero bueno, puede ser de utilidad explicarlo.

La duda surgió a partir del artículo Enviar y procesar formulario con Ajax y PHP, por lo que será necesario leer el artículo anterior para entender bien las generalidades del envío de formularios con Ajax.

Nota: En esta serie de artículos estamos utilizando la librería xajax, que sirve para trabajar con Ajax en PHP de una manera muy simplificada. Las generalidades del uso de xajax las comentamos en el artículo xajax: Ajax y PHP.

Si quisiéramos, podríamos insertar la información recibida por el formulario en una base de datos. Esto sólo implicaría un pequeño cambio en la función procesar_formulario() (ver artículo anterior), para que realice el insert. En lugar de mostrar los datos por pantalla como hace en el ejemplo anterior, tendría que generar una sentencia SQL con el insert y ejecutarla.

Tendríamos también que realizar una conexión con la base de datos donde queremos hacer el insert. Esta conexión podríamos hacerla dentro de la misma función o fuera. En este pequeño código de la función procesar_formulario() se muestra como podría ser el proceso de inserción de la información en una base de datos MySQL:

function procesar_formulario($form_entrada){
   $connectid = mysql_connect("localhost", "root", "");
   mysql_select_db("nombre_base_datos",$connectid);
   $ssql = "insert into pais (nombre_pais) values ('" . $form_entrada["nombre"] . "')";
   
   if (mysql_query($ssql)){
      $salida = "Insertado correctamente";
   }else{
      $salida = "No se ha insertado. Este es el error: " . mysql_error();
   }
   
   //instanciamos el objeto para generar la respuesta con ajax
   $respuesta = new xajaxResponse();
   //escribimos en la capa con id="respuesta" el texto que aparece en $salida
   $respuesta->addAssign("mensaje","innerHTML",$salida);
   
   //tenemos que devolver la instanciación del objeto xajaxResponse
   return $respuesta;
}

Pero la sentencia de conexión con la base de datos podría estar en otro lugar del código de la página. En un supuesto que nuestra página realice accesos a base de datos en diversos lugares del código, nos convendría realizar una conexión a la base de datos de manera global, que podamos utilizar desde cualquier parte del código.

A continuación se muestra el ejemplo completo, de enviar datos de un formulario por Ajax e insertar el contenido en una base de datos MySQL. En este caso hemos hecho una variación en el código para que la conexión a la base de datos se realice como variable global a la página y no local a la función, así podríamos utilizar esa misma conexión en otros lugares del código PHP de la página.

<?
//incluímos la clase ajax
require ('xajax/xajax.inc.php');

//instanciamos el objeto de la clase xajax
$xajax = new xajax();

$connectid = mysql_connect("localhost", "root", "");
mysql_select_db("guiarte_backup",$connectid);

function procesar_formulario($form_entrada){
   $ssql = "insert into pais (nombre_pais) values ('" . $form_entrada["nombre"] . "')";
   
   if (mysql_query($ssql)){
      $salida = "Insertado correctamente";
   }else{
      $salida = "No se ha insertado. Este es el error: " . mysql_error();
   }
   
   //instanciamos el objeto para generar la respuesta con ajax
   $respuesta = new xajaxResponse();
   //escribimos en la capa con id="respuesta" el texto que aparece en $salida
   $respuesta->addAssign("mensaje","innerHTML",$salida);
   
   //tenemos que devolver la instanciación del objeto xajaxResponse
   return $respuesta;
}
//registramos la función creada anteriormente al objeto xajax
$xajax->registerFunction("procesar_formulario");

//El objeto xajax tiene que procesar cualquier petición
$xajax->processRequests();
?>
<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>
<h1>Recibir y procesar formulario con Ajax y PHP</h1>
<div id="mensaje">
<form id="formulario">
Nombre de país: <input type="text" name="nombre">
<br>
<input type="button" value="Enviar" onclick="xajax_procesar_formulario(xajax.getFormValues('formulario'))">
</form>
</div>

</body>
</html>

 Seguir navegando a partir aquí:
+ 1 manual relacionado
+ 2 categorias relacionadas
+ 2 comentarios (Añadir)
+ 1 comentario no revisado

 Autoría, licencia y acciones sobre este artículo

Informe de Miguel Angel Alvarez*
Director de DesarrolloWeb.com

Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.

* Para consultas técnicas utilizar la lista de correo.

Versión imprimible Versión imprimible del artículo
Enviar artículo por e-mail Enviar artículo por e-mail
Añadir un comentario al artículo Publicar un comentario del artículo

Manuales relacionados con este artículo
Dentro de Manual Xajax: trabajo con Ajax en PHP

Categorias relacionadas
A través de las categorías de nuestro directorio se pueden encontrar otro tipo de recursos relacionados con este artículo:
+ Entrar en Scripts en PHP
+ Entrar en Ajax


 Comentarios de los visitantes
Los comentarios de los visitantes son para ampliar la información del artículo. Cualquiera puede participar.
Se muestran 2 comentarios revisados

 Comentario de eduardo
06/9/07 
me gusto la idea de ocupar ajax en el ingreso de datos, intente de hacerlo pero tengo este error

Fatal error: Call to undefined method xajax::processRequests() in /var/www/SitioCarrera2/registrar.php on line 29

SI SABES SOLUCIONARLO POR FAVOR AYUDAR
GRACIAS

 Comentario de cesar gonzalez
13/9/07 
Eduardo, en vez de "requests" prueba con "request" (sin la "s" final) saludos !!!

Añadir un comentario al artículo Añadir un comentario del artículo
 Comentarios sin revisar
Entre los comentarios no revisados puede haber algunos interesantes que se hayan enviado recientemente.
 Se ha encontrado un comentario sin revisar

Ver el comentario no revisadoVer los comentarios no revisados
Añadir un comentario al artículo Añadir un comentario del artículo



Enlaces:
Maestrosdelweb
  Ir arriba

Manuales relacionados
+Manual Xajax: trabajo con Ajax en PHP
Categorías
+Scripts en PHP
+Ajax

Tienda DesarrolloWeb

DesarrolloWeb.com | Copyright | Anunciese | Acerca de | Datos legales | Contacta | Por GuiarteMultimedia