Salvarea datelor dintr-un formular personalizat în baza de date

31 iul. 2018, 23:18:46
Vizualizări: 22.6K
Voturi: 3

Sunt începător în WordPress. Am creat un formular personalizat în WordPress și trebuie să știu unde să pun codul PHP WPDB pentru a salva datele din formular.

Am încercat să-l pun direct în pagina mea dar nu a funcționat.

Toate cercetările pe care le-am făcut spun să nu îl introduc în fișierul functions.php, așa că unde ar trebui să-l pun?

Iată codul pe care l-am pus în pagina mea:

Codul formularului

<form id="myForm" name="myform">
    <select id="brandSel" size="1">
        <option selected="selected" value="">-- Selectează Brand --</option>
        <option>Abba</option>
        <option>AG Hair</option>
    </select>

    <input type="submit" value="Trimite" />

</form>

Codul PHP

<?php
    // Declarăm variabila globală wpdb
    global $wpdb; 
    // Preluăm valoarea din POST
    $inputValue = $_POST['newValue']; 
    // Inserăm în tabelul catalog
    $wpdb->insert( 
        'catalog', 
        array( 
            'brandSel' => $inputValue 
        ), 
        array( '%s' // dacă tipul câmpului este string ) 
    );
?>
6
Comentarii

Poți să actualizezi întrebarea și să adaugi codul tău curent?

Krzysiek Dróżdż Krzysiek Dróżdż
31 iul. 2018 23:31:07

<form id="myForm" name="myform"><select id="brandSel" size="1"> <option selected="selected" value="">-- Selectează Brand --</option> <option>Abba</option> <option>AG Hair</option> <option>Agave</option>

</select>

<input type="submit" value="submit" />

</form>

Abel Sanz Abel Sanz
31 iul. 2018 23:42:47

OK, și unde vrei să stochezi aceste date?

Krzysiek Dróżdż Krzysiek Dróżdż
31 iul. 2018 23:44:13

Într-un tabel personalizat pe care l-am creat în baza mea de date WordPress

Abel Sanz Abel Sanz
31 iul. 2018 23:45:39

Poți adăuga și codul pe care îl folosești pentru salvarea în acel tabel personalizat?

Krzysiek Dróżdż Krzysiek Dróżdż
31 iul. 2018 23:46:34

global $wpdb; $inputValue = $_POST['newValue']; $wpdb->insert( 'catalog', array( 'brandSel' => $inputValue ), array( '%s' // dacă tipul câmpului este string ) );

Abel Sanz Abel Sanz
31 iul. 2018 23:51:12
Arată celelalte 1 comentarii
Toate răspunsurile la întrebare 1
4

OK, deci iată cum ar trebui să faci acest lucru corect...

În fișierul tău de template, puneți formularul:

<form id="myForm" name="myform" action="<?php echo esc_attr( admin_url('admin-post.php') ); ?>" method="POST">
    <input type="hidden" name="action" value="save_my_custom_form" />
    <select id="brandSel" size="1">
        <option selected="selected" value="">-- Selectează Brand --</option>
        <option>Abba</option>
        <option>AG Hair</option>
    </select>

    <input type="submit" value="trimite" />
</form>

Și în fișierul functions.php (sau în plugin-ul tău) va trebui să adaugi admin_post_{action}:

function my_save_custom_form() {
    global $wpdb;

    $inputValue = $_POST['newValue'];
    $wpdb->insert(
        'catalog',
        array( 'brandSel' => $inputValue ),
        array( '%s' ),
    );

    wp_redirect( site_url('/') ); // <-- aici se adaugă adresa site-ului către care ar trebui redirecționat utilizatorul după trimiterea formularului
    die;
}

add_action( 'admin_post_nopriv_save_my_custom_form', 'my_save_custom_form' );
add_action( 'admin_post_save_my_custom_form', 'my_save_custom_form' );
1 aug. 2018 00:07:55
Comentarii

Voi folosi un plugin, dar unde anume trebuie să pun "admin_post_{action}:"?

Abel Sanz Abel Sanz
1 aug. 2018 00:16:15

Îl poți pune în functions.php al temei tale. Dar dacă acel formular ar trebui procesat de un plugin, atunci acest cod ar trebui să fie în plugin-ul tău...

Krzysiek Dróżdż Krzysiek Dróżdż
1 aug. 2018 00:18:54

@AbelSanz Salut, te-a ajutat?

Krzysiek Dróżdż Krzysiek Dróżdż
1 aug. 2018 12:38:09

Nu pot să-mi dau seama unde să introduc funcția. Folosesc plugin-ul "Header and Footer". Ai vreo sugestie?

Abel Sanz Abel Sanz
3 aug. 2018 19:35:32