Formular personalizat care stochează datele în baza de date

26 dec. 2012, 00:15:16
Vizualizări: 158K
Voturi: 7

Nu am folosit niciodată WordPress înainte, dar am multă experiență în programare. Întrebarea mea este, cum pot crea formulare personalizate în WordPress?

Am nevoie să creez un formular în care un utilizator completează câteva câmpuri de intrare și la trimitere datele să fie stocate în baza de date. Nu am nevoie de nicio notificare la salvare.

De asemenea, trebuie să pot interoga datele și să obțin rezultatul într-un tabel HTML.

Mulțumesc

1
Comentarii

Aici este un exemplu de date ale utilizatorului.

fuxia fuxia
26 dec. 2012 01:49:55
Toate răspunsurile la întrebare 7
2

Am găsit singur soluția problemei. Vezi codul de mai jos, acesta va face exact asta.

Pune codul în interiorul șablonului personalizat pe care l-ai creat recent.

<?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 'datele au fost salvate' ; 
        }
    } else {
        ?>
        <form method="post">
            <input type="text" name="yourname">
            <textarea name="chord"></textarea>
            <input type="submit">
        </form>
        <?php 
    }  
?>
30 iul. 2013 20:06:09
Comentarii

Dumnezeule mare. Nici măcar o singură formă de validare.

Jürgen Paul Jürgen Paul
10 mai 2015 13:53:01

Această soluție este susceptibilă la atacuri de tip SQL injection. Te rog validează datele introduse.

Jon Winstanley Jon Winstanley
23 feb. 2018 17:16:08
4

Sugestia mea:

Folosește Contact Form 7 plus Contact Form DB. Poți "proiecta" formularul în backend și să-l adaugi în frontend folosind un simplu shortcode.

Extensia Contact Form DB îți permite să salvezi datele în baza de date și îți oferă shortcode-uri pentru a le afișa (sau poți interoga direct datele din baza de date dacă preferi)

26 dec. 2012 01:40:42
Comentarii

Am încercat Contact Form 7 și arată excelent, dar am câteva întrebări. Este posibil să adaug o coloană incrementală/identificatoare în tabel. De asemenea, am nevoie să setez valorile dropdown-ului bazate pe valorile unui tabel. Nu am lucrat niciodată cu un CMS înainte și nu știu cât de mult ar trebui și ai nevoie să personalizezi singur.

boje boje
26 dec. 2012 22:48:44

@boje poți cu extensia Post My CF7 Form, ea reorganizează tabelul din dashboard-ul CF7, permițându-ți să folosești funcționalitatea standard WP pentru a adăuga o coloană personalizată în tabel.

Aurovrata Aurovrata
17 oct. 2016 11:25:52

Pot afișa înregistrările CF7 de pe un site pe alt site?

Mohammad Fareed Mohammad Fareed
29 mai 2017 13:30:01

Acesta rămâne o soluție validă. CFDB suportă chiar și mai multe plugin-uri pentru generarea de formulare.

mrmut mrmut
1 feb. 2020 01:04:45
2

Am să folosesc această soluție, dar pare a fi foarte personalizată și ar putea fi o problemă cu temele și actualizările?

27 dec. 2012 00:48:07
Comentarii

Din punctul meu de vedere, ar trebui să separi logica de fișierul de șablon. Metoda ta care gestionează datele POST ar trebui să fie localizată în functions.php și inițializată printr-un hook de inițializare.

Pentru a gestiona doar datele trimise pentru un anumit șablon de pagină, ai putea verifica existența unui câmp de input numit (opțional ascuns) care este unic pentru acel șablon. De asemenea, ai putea beneficia de utilizarea funcției is_page_template()

estrar estrar
11 iul. 2014 09:50:30

URL foarte util

Rohit Rohit
3 ian. 2020 08:26:33
6

Există diferite metode de stocare a datelor. Pentru opțiuni, se folosește tabelul de opțiuni, API-ul de opțiuni, locul potrivit cu o intrare și un array ca element de stocare. Dar pentru a stoca datele care urmează să fie folosite ca postări și pentru fiecare cerere din formular, este mai bine să le salvați tot ca postări. Dar și aici există diferite posibilități. Puteți salva pentru diferite tipuri de postări. Implicit este 'post' și de asemenea puteți salva într-un tip de postare personalizat. Folosiți funcția wp_insert_post() pentru a salva pentru toate tipurile de postări după trimiterea formularului de la utilizatori. Veți găsi răspunsuri foarte bune aici pentru această funcție, acest subiect și de asemenea pe internet. Puteți vedea și un mic exemplu în acest răspuns 73653, care include atașamente în formular.

26 dec. 2012 01:39:57
Comentarii

folosind 'wp_insert_post()' nu este doar pentru comentarii. Și dacă nu, de ce este bine să-l folosești? Nu înțeleg ideea tabelului de opțiuni. O căutare rapidă pe Google nu mă ajută :(

boje boje
26 dec. 2012 22:59:09

wp_insert_post() nu este pentru comentarii, este pentru conținutul postărilor, pentru a crea o postare nouă. Am actualizat acum răspunsul meu, am fost de pe telefon; nu prea ușor pe WPSE. Celălalt răspuns cu sugestia pentru plugin-uri este același, Contact Form 7 sau altele creează postări noi, dar ai cerința unui plugin. Dacă vrei să controlezi asta, inclusiv sursa și ai suficiente cunoștințe de codare, atunci un plugin personalizat pentru a crea postări este cea mai bună variantă.

bueltge bueltge
27 dec. 2012 14:29:27

Mulțumesc pentru ajutor până acum, Bueltge. Înțelegerea mea despre wp_insertpost este că este o funcție de ajutor pentru a insera rapid și în siguranță ceva într-un tabel de baze de date. Dacă am un tabel(nume=Curs) cu aceste coloane(id, numecurs, participanti, datastart, datasfarsit). Unde definesc numele tabelului? Poate am înțeles complet greșit. Exemplu de cod link

boje boje
28 dec. 2012 11:50:09

Nu, funcția creează date în tabelele implicite WordPress; cel puțin în _posts și dacă aveți atașamente sau metadate ale postărilor, și în celelalte tabele care sunt în relație cu postarea. Dar tu ai cerut să salvezi date din formular în WordPress și cred că aceasta este cea mai bună metodă. Ai, fără efort suplimentar, o interfață de utilizator cu multe soluții pentru editarea și întreținerea elementelor din formular. Dacă vezi codul din link-ul meu din comportament, atunci vei vedea soluția.

bueltge bueltge
28 dec. 2012 13:41:04

Mulțumesc, cred că trebuie să mai citesc sau să găsesc niște tutoriale pentru a înțelege mai bine configurarea

boje boje
28 dec. 2012 14:02:56

Da, precum link-ul meu din celălalt răspuns sau un link de pe web, precum acesta.

bueltge bueltge
28 dec. 2012 14:27:08
Arată celelalte 1 comentarii
0

De asemenea, puteți utiliza excelentul plugin Contact Form 7 împreună cu extensia Post My CF7 Form, care vă va permite să salvați orice formulare personalizate într-un articol, inclusiv imagini ca atașamente principale și selectări/casete de bifare/butoane radio ca taxonomii.

Pluginul Post My CF7 Form are o funcționalitate bogată care poate fi utilizată pentru a personaliza și ajusta în continuare modul în care formularele dvs. ar trebui să fie salvate. Există și o secțiune detaliată de documentație.

17 oct. 2016 11:26:56
2
-1

Soluția dumneavoastră este bună și poate funcționa foarte bine. Dar, există câteva limitări. De exemplu:

1) Ce se întâmplă cu căutarea și sortarea intrărilor care sunt postate prin formularul dumneavoastră? 2) Cum rămâne cu exportul datelor completate în formularul dumneavoastră în Excel, CSV sau PDF? 3) Ce se întâmplă dacă doriți să tipăriți datele introduse.

Toate acestea pot fi realizate cu plugin-urile Contact Form 7 + Save Contact Form 7.

Ambele sunt plugin-uri gratuite și utilizate pe scară largă: http://savecontactform7.com/ http://contactform7.com/

20 mai 2016 16:44:49
Comentarii

Te rog să menționezi afilierea ta și să faci răspunsul specific cerințelor întrebării. Acest text pare mai mult o reclamă decât o soluție autentică.

Rarst Rarst
20 mai 2016 17:55:10

Sunt de acord, pare o reclamă, și sunt proprietarul Save Contact Form 7. Dar, soluția și răspunsul se aliniază perfect cu cerințele întrebării. Deci, acest lucru va ajuta cu siguranță persoana care a pus întrebarea.

Nimblechapps Nimblechapps
22 mai 2016 10:34:37
0
-1
<?php
/**
Folosește aceste linii de cod, funcționează în peste 100% din cazuri
 */
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 'datele au fost salvate' ; 
}
}
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 }  ?>
7 feb. 2017 14:55:43