Formulario personalizado que almacena la entrada en la base de datos
-
-
Aquí hay un [ejemplo de datos de usuario] (http://wordpress.stackexchange.com/questions/75723/get-user-input-from-a-form/75737#75737).Here is an [example for user data](http://wordpress.stackexchange.com/questions/75723/get-user-input-from-a-form/75737#75737).
- 1
- 2012-12-25
- fuxia
-
7 respuestas
- votos
-
- 2012-12-26
Voy a utilizaresta solución,peroparece sermuypersonalizada y ¿puede ser unproblema con lostemas y las actualizaciones?
I am going to use this solution, but it seams to be very customize and can that be a problem with themes and upgrades?
-
Ami modo de ver,debes separar la lógica del archivo deplantilla.Sumétodo quemaneja los datos POST debeestar ubicadoen functions.phpe inicializadopor un [gancho deinicialización] (http://codex.wordpress.org/Plugin_API/Action_Reference/init). Paramanejar solo los datosenviadospara unaplantilla depáginaespecífica,puedebuscar un campo deentrada connombre (opcionalmente oculto) que sea únicoparaesaplantilla.Tambiénpodríabeneficiarse de usar [is_page_template ()] (http://codex.wordpress.org/Function_Reference/is_page_template)The way I see it, you should separate the logic from the template file. Your method that handles the POST data should be located in functions.php and initialized by a [initialization hook](http://codex.wordpress.org/Plugin_API/Action_Reference/init). To only handle the submitted data for a specific page template, you could check for a named (optionally hidden) input field that's unique for that template. You could also benefit of using [is_page_template()](http://codex.wordpress.org/Function_Reference/is_page_template)
- 0
- 2014-07-11
- estrar
-
URL realmente útilreally helpful url
- 0
- 2020-01-03
- Rohit
-
- 2013-07-30
Yomismo obtuve la solución delproblema.Veael código a continuación,esto haráeso.
Coloqueel código dentro de su plantillapersonalizada recién creada.
<?php if (!empty($_POST)) { global $wpdb; $table = wp_achord; $data = array( 'name' => $_POST['yourname'], 'chord' => $_POST['chord'] ); $format = array( '%s', '%s' ); $success=$wpdb->insert( $table, $data, $format ); if($success){ echo 'data has been save' ; } } else { ?> <form method="post"> <input type="text" name="yourname"> <textarea name="chord"></textarea> <input type="submit"> </form> <?php } ?>
I got the problem solution myself. See the code below this will do that.
Put the code inside your newly created custom template.
<?php if (!empty($_POST)) { global $wpdb; $table = wp_achord; $data = array( 'name' => $_POST['yourname'], 'chord' => $_POST['chord'] ); $format = array( '%s', '%s' ); $success=$wpdb->insert( $table, $data, $format ); if($success){ echo 'data has been save' ; } } else { ?> <form method="post"> <input type="text" name="yourname"> <textarea name="chord"></textarea> <input type="submit"> </form> <?php } ?>
-
Oh Diosmío.ni siquiera una únicaforma de validación.Oh my god. not even a single form of validation.
- 11
- 2015-05-10
- Jürgen Paul
-
Esta soluciónes susceptible al ataque deinyección SQL.Valide laentrada.This solution is susceptible to SQL injection attack. Please validate the input.
- 3
- 2018-02-23
- Jon Winstanley
-
- 2012-12-25
Mi sugerencia:
Utilice Formulario de contacto 7 más
Formulario de contacto DB .Puede "diseñar" suformularioen elbackend yponerloen elfrontendmediante un simple shortcode. Laextensión Contact Form DB lepermiteponer sus datosen labase de datos y le ofrece códigos cortosparamostrarlos (opuede consultar los datos directamente desde labase de datos si loprefiere)
My suggestion:
Use Contact Form 7 plus Contact Form DB. You can "design" your form in the backend and putting in the frontend via a simple shortcode.
The Contact Form DB extension let you put your data in the database and offers to you shortcodes to display it (or you can query the data directly from the database if you prefer)
-
Probéel Formulario de contacto 7 y se vemuybien,perotengo algunaspreguntas.¿Esposible agregar unidentificador/incremental como columna a latabla?Tambiénnecesitoestablecer los valores delmenú desplegableen función de los valores de unatabla.Nunca antes habíatrabajado con un CMS yno sé cuánto debería ynecesitaparapersonalizarse.I have tried Contact Form 7 and it look great but I do have some question. Is it possible to add a incremental/identifier as column to the table. I also need to set the dropdown values based on a tables values. I have never works with a CMS before and don't know how much you should and need to customize your self.
- 0
- 2012-12-26
- boje
-
@boje,puede conel complemento deextensión [Post My CF7 Form] (https://wordpress.org/plugins/post-my-contact-form-7/),reorganiza latabla deltablero CF7,lo que lepermite usar std [Funcionalidad WP] (http://justintadlock.com/archives/2011/06/27/custom-columns-for-custom-post-types)para agregar una columnapersonalizada a latabla.@boje you can with the [Post My CF7 Form](https://wordpress.org/plugins/post-my-contact-form-7/) extension plugin, it reorganises the CF7 dashboard table, allowing you to use std [WP functionality](http://justintadlock.com/archives/2011/06/27/custom-columns-for-custom-post-types) to add a custom column to the table.
- 0
- 2016-10-17
- Aurovrata
-
¿Puedomostrar los registros CF7 de un sitioen otro sitio?Can I display the CF7 Records of One Site in Another Site .?
- 0
- 2017-05-29
- Developer
-
Esta sigue siendo una solución válida.CFDB admite aúnmás complementos degenerador deformularios.This is still a valid solution. CFDB supports even more form generator plugins.
- 0
- 2020-01-31
- mrmut
-
- 2012-12-25
Da diferentesformas. Para los datos de latienda,las opciones similares son latabla de opciones, la API de opciones ,el lugar correcto con unaentrada y unamatriz comoelemento detienda. Peropara que los datos de latienda lo utilicen comopublicaciones y cada solicitud delformulario,esmejorguardartambién comopublicación. Perotambién aquí diferentesposibilidades. Puedeguardarpara diferentestipos depublicaciones. El valorpredeterminadoes 'publicación' ytambiénpuedeguardaren untipo depublicaciónpersonalizada. Utilice lafunción
wp_insert_post()
paraguardartodos lostipos depublicaciónposterioresenviarformulario de usuarios. Aquíencontrarámuybuenas respuestas aestafunción,estetema ytambiénen lanaturaleza de www. Tambiénpuede ver unpequeñoejemploen esta respuesta 73653 ,incluye archivos adjuntosen elformulario.It give different ways. For store data, like options is the options table, the options API, the right place with a entry and a array as store element. But for store data to use it like posts and each request from the form is it better to save also like post. But also here different possibilities. You can save for different post types. The default is 'post' and also you can save in a custom post type. Use the function
wp_insert_post()
to save for all post type after send Form from users. You find very fine answers here to this function, this topic ans also in the wild of www. You can also see a small example in this answer 73653, inlcude attachments in the form.-
al usar 'wp_insert_post ()'noes solopara comentar.Y sino,¿por quéesbueno usarese?Noentiendo laidea de la **tabla de opciones **.Unabúsqueda rápidaen Googlenome ayuda :(by using the 'wp_insert_post()' is that not only for comment. And if not why do is it good to use that one? I don't get the **options table** idea. A quick search on Google don't help me :(
- 0
- 2012-12-26
- boje
-
El `wp_insert_post ()`noespara comentarios,espara contenido depublicaciones,crea unanuevapublicación.Actualizomi respuesta ahora,era desdeelmóvil;noes realmentefácilen WPSE.La otra respuesta con lapistapara los complementoses lamisma,Formulario de contacto 7 u otropara crearnuevaspublicaciones,perotiene los requisitos de un complemento.Si controlaesto,también lafuente ytiene suficiente conocimiento sobre codificación,entonceses un complementopersonalizadopara crearpublicaciones de lamejormanera.The `wp_insert_post()` is not for comments, is for post content, create an new post. I update my answer now, was from mobile; not realy easy on WPSE. The other answer with the hint to plugins is the same, Contact Form 7 or other create new posts, but you have the requirements of a plugin. If you will control this, also the source and have enough knowhow about coding, then is a custom plugin to create posts the best way.
- 0
- 2012-12-27
- bueltge
-
Graciasportu ayuda hasta ahora Bueltge.Mi comprensión de `wp_insertpost`es quees unafunción de ayudaparainsertar algo rápido yguardaren unatabla debase de datos.Sitengo unatabla (nombre=curso) conestas columnas (id,nombre del curso,participante,fecha deinicio,fecha definalización).¿Dónde definoelnombre de latabla?Tal vez loentendí completamentemal.Ejemplo de código [enlace] (http://collabedit.com/b6vye)Thanks for your help so far Bueltge. My understanding of `wp_insertpost` is that it is a help-function for quick and save insert something into a database-table. If i have a table(name=Course) with these column(id, coursename, paricipant, startdate, enddate). Where do i define the tablename? Maybe I understood it comeplety wrong. Code example [link](http://collabedit.com/b6vye)
- 0
- 2012-12-28
- boje
-
No,lafunción crea datosen lastablaspredeterminadas de wordpress;mínimoen `_posts` y sitiene archivos adjuntos opublicametadatostambiénen las otrastablas,los hayen nabership conpost.Peropidesguardar datos delformularioen wordpress y creo queestaes lamejormanera.Tienes sintrabajo una UI conmuchas solucionesparaeditar ymantener loselementos desdeelformulario.Si veel código delenlace demi comportamiento,verá la solución.No, the function create data in the default wordpress tables; minimum in `_posts` and if you have attachments or post meta data also in the other tables, there are in nabership with post. But you ask for save data from form in wordpress and I think, this is the best way. You have without work a UI with many solutions for edit and maintenance the items from form. If you see the code from my behaviour link, then you see the solution.
- 0
- 2012-12-28
- bueltge
-
Gracias,creo quenecesito leer unpocomás oencontrar algunostutorialespara comprendermejor la configuraciónThanks, think i need to read some more or find some tutorials to understand the setup better
- 0
- 2012-12-28
- boje
-
Sí,comomi enlaceen la otra respuesta o unenlace de la web,como [esto] (http://clarklab.com/posts/wordpress-front-end-post-form-using-wp_insert_post/).Yes, like my link in the other answer or a link from web, like [this](http://clarklab.com/posts/wordpress-front-end-post-form-using-wp_insert_post/).
- 0
- 2012-12-28
- bueltge
-
- 2016-10-17
Tambiénpuede utilizarelexcelente complemento Contact Form 7junto con PublicaciónEl complemento My CF7 Formextension que lepermitiráguardar cualquierformulariopersonalizadoen unapublicación,incluidasimágenes como archivos adjuntos destacados,y seleccionar/checkbox/entradas de radio comotaxonomías.
El complemento Post My CF7 Formtiene unagranfuncionalidad que sepuede aprovecharparapersonalizar ymodificar aúnmás laformaen que se debenguardar susformularios.También hay una sección de documentación detallada.
You could also use the excellent Contact Form 7 plugin along with the Post My CF7 Form extension plugin which will allow you to save any custom forms to a post, including images as featured attachments, and select/checkbox/radio inputs as taxonomies.
The Post My CF7 Form plugin has a rich functionality that can be leveraged to further customise and tweak the way your forms should be saved. There is a detailed documentation section too.
-
- 2016-05-20
Su soluciónesbuena ypuedefuncionarmuybien.Peroexistenpocas limitaciones.porejemplo:
1) ¿Quépasa con labúsqueda y clasificación de lasentradas que sepublican através de suformulario? 2) ¿Qué hay deexportar los datos llenadosen suformulario a Excel o CSV o PDF? 3) ¿Qué sucede si deseaimprimir los datosinsertados?
Todoeso sepuede lograr con los complementos Contact Form 7 + Save Contact Form 7.
Ambos son complementosgratuitos de usogeneralizado: http://savecontactform7.com/ http://contactform7.com/
Your solution is good and may work very well. But, there are few limitations. eg:
1) What about searching and sorting entries which are posted through your form? 2) What about exporting the data filled into your form to Excel or CSV or PDF? 3) What if you want to print the inserted data.
All that can be achieved with Contact Form 7 + Save Contact Form 7 plugins.
both are free widely used plugins: http://savecontactform7.com/ http://contactform7.com/
-
Porfavor,revele su afiliación y haga una respuestaespecífica a los requisitos de lapregunta.Estoparecemás un anuncio que una solucióngenuina.Please disclose your affiliation and make answer specific to the requirements of the question. This reads more like advertisement than genuine solution.
- 0
- 2016-05-20
- Rarst
-
Estoy de acuerdo,estoparece un anuncio,y soyelpropietario delformulario Save Contact 7. Pero la solución y la respuesta se alineanperfectamente conel requisito de lapregunta.Entonces,esto definitivamente ayudará a lapersona que hizo lapregunta.I agree, this looks like an advertisement, and I am an owner of the Save Contact Form 7. But, the solution and answer perfectly aligns with the requirement of the question. So, this is definitely going to help the person who asked the question.
- 0
- 2016-05-22
- Nimblechapps
-
- 2017-02-07
<?php /** Use these line of codes, its working more than 100% */ get_header();?> <?php if (!empty($_POST)) { global $wpdb; $table = wp_contact; $data = array( 'name' => $_POST['aname'], 'email' => $_POST['aemail'], 'subject' => $_POST['asubject'], 'msg' => $_POST['amsg'] ); $format = array( '%s', '%s' ); $success=$wpdb->insert( $table, $data, $format ); if($success){ echo 'data has been saved' ; } } else { ?> <form action="<?php echo get_option('siteurl'); ?>/form/" method="post"> <input type="text" name="aname"> <input type="text" name="aemail"> <input type="text" name="asubject"> <textarea type="text" name="amsg"></textarea> <input type="submit"> </form> <?php } ?>
<?php /** Use these line of codes, its working more than 100% */ get_header();?> <?php if (!empty($_POST)) { global $wpdb; $table = wp_contact; $data = array( 'name' => $_POST['aname'], 'email' => $_POST['aemail'], 'subject' => $_POST['asubject'], 'msg' => $_POST['amsg'] ); $format = array( '%s', '%s' ); $success=$wpdb->insert( $table, $data, $format ); if($success){ echo 'data has been saved' ; } } else { ?> <form action="<?php echo get_option('siteurl'); ?>/form/" method="post"> <input type="text" name="aname"> <input type="text" name="aemail"> <input type="text" name="asubject"> <textarea type="text" name="amsg"></textarea> <input type="submit"> </form> <?php } ?>
Nunca antes había usado WordPress,perotengomuchaexperienciaen programación.Mipreguntaes,¿cómo crearformularios de aduanaen WordPress?
Necesito crear unformulario donde un usuario llene algunos campos deentrada y,alenviar,los datos deben almacenarseen labase de datos.Nonecesitoningunanotificaciónparaguardar.
Tambiénnecesito consultar los datos y obtenerel resultadoen unatabla HTML.
Gracias