Enviar un formulario usando

Estoy teniendo un pequeño problema con esto y no puedo ver lo que estoy haciendo mal. Tengo esta forma:

Entonces, cuando el usuario hace clic en el botón, debe enviar el formulario y luego tener este PHP para actuar sobre el formulario (sé que el sql no es una statement preparada y es vulnerable a las inyecciones, pero esto se hará más adelante):

  

Sin embargo, cuando reviso mis tablas, no se inserta información en la base de datos. Teniendo en cuenta que este código está en el mismo documento, por eso no he usado action = “file.type” dentro de la statement del formulario. Esto es porque no estoy seguro si ajax es apropiado aquí.

Cualquier ayuda es muy apreciada, gracias.

EDITAR

Lo que podría hacer es usar ajax con jQuery para escuchar el evento de clic de botón:

 $(document).ready(function() { $(".submitDetails").click(function(e) { e.preventDefault(); var userData = $("#?").val(); var dataToSend = '?=' + eNameData; $.ajax({ url: "userDetailTest.php", type: "POST", data: dataToSend, cache: false, success: function(php_output) { $(".overallSummary").html(php_output); } }); }); }); 

La idea aquí es usar este ajax para cuando se hace clic en el botón y llamar a la función ajax, pero no estoy seguro de qué poner como ID en la variable ‘userData’ y qué agregar en la variable ‘dataToSend’ para que funcione con mi forma.

En realidad, para enviar el formulario, su tipo de input debe enviarse, no el button .

Usar una etiqueta de button también funcionaría.

  

A menos que tengas algún código de javascript eso activa el envío del formulario.

El atributo de acción también se requiere según la especificación, pero incluso sin él, la mayoría de los navegadores asumen que la URL de acción es la página actual.

Editar : si desea enviar los datos del formulario sin volver a cargar la página, debe usar ajax o colocar todo el formulario debajo de un iframe . (Por favor, hazlo con ajax en su lugar).

De lo contrario, hacer clic en la input[type=button] no hará realmente nada.

Los datos del usuario son los datos reales de su formulario, puede capturarlos usando:

 $(document).ready(function() { $(".submitDetails").click(function(e) { e.preventDefault(); // See Teez answer, I wasn't aware of this. var dataToSend = $("#userDetails").serializeArray(); $.ajax({ url: "userDetailTest.php", type: "POST", data: dataToSend, cache: false, success: function(php_output) { $(".overallSummary").html(php_output); } }); }); }); 

Hay de una manera:

Simplemente use a continuación si no desea actualizar la página:

  var dataToSend = $('userDetails').serializeArray(); 

O intente utilizar el siguiente código para enviar el formulario con jquery:

 $("userDetails").submit(function(){ // do your stuff $.post( "post.php", // add all stuff for inserting data ); }); 

A continuación los enlaces te ayudarán mucho:

http://www.ryancoughlin.com/2008/11/04/use-jquery-to-submit-form/

Agregue acción en el formulario y use submit.

 

También para facilitar la depuración, puede hacer eco primero de los campos antes de guardarlos en el archivo db. De esta forma, puede jugar con los datos sin tener que recurrir a la tabla de administración de la base de datos.

Editar: como realmente quieres un botón, este ajax podría ser útil

 $('.submitDetails').click(function(e) { e.preventDefault(); var dataString = ""; //this will get all the data of your form separated by & $("form input:text").each(function(index, element) { dataString += $(this).attr("id")+"="+$(this).val()+"&"; }); dataString = '?' + dataString; //added the needed ? $.ajax({ url: "userDetailTest.php", type: "POST", data: dataString, cache: false, success: function(php_output) { $(".overallSummary").html(php_output); } }); });//end submitDetails 

Básicamente respondiste tu propia pregunta. Debe colocar la acción en el formulario que apunta al script que maneja el formulario. Comience con eso y si decide utilizar AJAX más tarde, siempre puede modificar el código un poco para hacerlo.

Aún necesitas una acción. Si el PHP está en la misma página, puede usar algo como:

 action=" 

Las tres respuestas anteriores deben combinarse para dar una respuesta, ya que en realidad le faltan dos elementos de un formulario HTML, acción y envío que se pueden utilizar:

 
....add input fields...