Werte in WP-Datenbank aktualisieren mittels Formular


#1
Hallo zusammen,

ich versuche gerade, verschiedene Werte mittels Frontend Formular in eine Tabelle innerhalb der Wordpress Datenbank zu schreiben / aktualisieren.

Folgenden Ansatz an Code habe ich bereits versucht:


PHP:
<?php
/*
Template Name: FormTest
Template Post Type: post, page, event
*/
?>
<?php get_header();?>

<div class="l-main">
<div class="l-main-h i-cf">
<main class="l-content" itemprop="mainContentOfPage">
    <section class="l-section">
        <div class="l-section-h i-cf">
            <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
                <div class="entry-content">

<?php
        if (!empty($_POST)) {
        global $wpdb;
            $table = $wpdb->prefix . "formtest";
            $data = array(
                'Vorname' => $_POST['Vorname'],
                'Nachname'    => $_POST['Nachname'],
                'Adresse' => $_POST['Adresse'],
                'Zahlenkombi'    => $_POST['Zahlenkombi']
            );
            $format = array(
                '%s',
                '%s'
            );
            $success=$wpdb->insert( $table, $data, $format );
            if($success){
            echo 'Daten wurden erfolgreich gespeichert / aktualisiert!' ;
}
}
else   {
?>
        <form action="<?php echo get_option('siteurl'); ?>/formtest/" method="post">
        <input type="text" name="Vorname">
         <input type="text" name="Nachname">
          <input type="text" name="Adresse">
        <input type="text" name="Zahlenkombi">

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

       <?php } ini_set('error_reporting', E_ALL); ?>
               
                </div>
            </article>
        </div>
    </section>
</main>
</div>
</div>
<?php get_footer(); ?>
Habt Ihr eine Idee woran es hierbei scheitert das keine Daten gespeichert werden, bzw. welche Funktion ist die richtige, damit ich diese Daten bei vorhandenen Dateien überschreiben bzw. aktualisieren kann?

Anbei noch die aktuelle DB Struktur:

1536142213847.png

Zusatzfrage: Wie sieht es mit der Sicherheit des Frontend Formulares aus, gibt es hierzu auch noch Verbesserungsvorschläge?

Vielen Dank im Voraus.
 

Kalito

Erfahrenes Mitglied
#2
Hallo,

kommt den eine Fehlermeldung?

Ich kenn mich nicht so in Wordpress aus, aber $format muss anders aussehen:

PHP:
$format = array(
                '%s',
                '%s',
                '%s',
                '%d',
            );
Noch zu den Validierungen. Da du in der DB NULL ausschließt, muss du prüfen, dass bei den Feldern auch wirklich was eingetragen ist. Ebenso musst du prüfen, dass Zahlenkombi auch eine Zahl ist.