Hallo
Ich bin noch relativ neu in WP unterwegs.
Mit wpForms und ACF habe ich ein Formular erstellt und versuche nun die Werte ic eine angelegte Tabelle in Mysql zu speichern.
Leider wird das Datum gar nicht gespeichert und die anderen Werte sind immer nur "1".
Mein Hintergrund ist, ich möchte für eine Gartenanlage werte für Wasser und Strom monatlich als admin eingeben. Die Mitglieder können dann " nur " Ihre Werte einsehen.
Ich würde mich freuen wenn mir jemand weiter helfen könnte .
Unter functions PHP habe ich dies eingefügt.
PHP
function create_garden_values_table() {
global $wpdb;
$table_name = $wpdb->prefix . 'garden_values';
$charset_collate = $wpdb->get_charset_collate();
$sql = "CREATE TABLE $table_name (
id mediumint(9) NOT NULL AUTO_INCREMENT,
user_id bigint(20) NOT NULL,
garten_nr float NOT NULL,
datum date NOT NULL,
wasserstand float NOT NULL,
stromverbrauch float NOT NULL,
PRIMARY KEY (id)
) $charset_collate;";
require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
dbDelta( $sql );
}
add_action('after_setup_theme', 'create_garden_values_table');
function save_garden_values($fields, $entry, $form_data) {
global $wpdb;
$table_name = $wpdb->prefix . 'garden_values';
// Passen Sie diese Schlüssel an die tatsächlichen Feld-IDs in Ihrem WPForms-Formular an
$garten_nr_field_id = '2'; // Ersetzen Sie '2' durch die tatsächliche Feld-ID für Garten Nr.
$datum_field_id = '3'; // Ersetzen Sie '3' durch die tatsächliche Feld-ID für Datum
$wasserstand_field_id = '4'; // Ersetzen Sie '4' durch die tatsächliche Feld-ID für Wasserstand
$stromverbrauch_field_id = '5'; // Ersetzen Sie '5' durch die tatsächliche Feld-ID für Stromverbrauch
// Debugging: Alle Felder ausgeben
error_log('All fields: ' . print_r($fields, true));
// Holen der WPForms-Feldwerte aus dem Formulareintrag
$user_id = get_current_user_id(); // Beispiel: Benutzer-ID des aktuellen Benutzers
$garten_nr = isset($fields[$garten_nr_field_id]) ? floatval($fields[$garten_nr_field_id]) : '';
$datum = isset($fields[$datum_field_id]) ? floatval($fields[$datum_field_id]) : '';
$wasserstand = isset($fields[$wasserstand_field_id]) ? floatval($fields[$wasserstand_field_id]) : 0;
$stromverbrauch = isset($fields[$stromverbrauch_field_id]) ? floatval($fields[$stromverbrauch_field_id]) : 0;
// Datum ins richtige Format konvertieren (von DD.MM.YYYY zu YYYY-MM-DD)
if ($datum) {
$date_parts = explode('.', $datum);
if (count($date_parts) === 3) {
$datum = sprintf('%04d-%02d-%02d', $date_parts[2], $date_parts[1], $date_parts[0]);
} else {
error_log('Invalid date format: ' . $datum);
}
}
// Debugging-Ausgabe für die übergebenen Werte
error_log('User ID: ' . $user_id);
error_log('Garten Nr.: ' . $garten_nr);
error_log('Datum: ' . $datum);
error_log('Wasserstand: ' . $wasserstand);
error_log('Stromverbrauch: ' . $stromverbrauch);
// Insert the values into the custom table
$insert_result = $wpdb->insert(
$table_name,
array(
'user_id' => $user_id,
'garten_nr' => $garten_nr,
'datum' => $datum,
'wasserstand' => $wasserstand,
'stromverbrauch' => $stromverbrauch,
),
array(
'%d',
'%s',
'%s',
'%f',
'%f'
)
);
// Debugging-Ausgabe für SQL-Fehler
if ($wpdb->last_error) {
error_log('Database Error: ' . $wpdb->last_error);
} else {
error_log('Data inserted successfully.');
}
// Fehlerbehandlung für das Einfügen der Daten
if ($insert_result === false) {
error_log('Insert failed: ' . $wpdb->last_error);
}
}
add_action('wpforms_process_complete', 'save_garden_values', 10, 3);
function display_garden_values() {
global $wpdb;
$table_name = $wpdb->prefix . 'garden_values';
$results = $wpdb->get_results( "SELECT * FROM $table_name" );
if ( $results ) {
ob_start(); ?>
<table class="wp-list-table widefat fixed striped">
<thead>
<tr>
<th>Garten Nr.</th>
<th>Datum</th>
<th>Wasserstand</th>
<th>Stromverbrauch</th>
</tr>
</thead>
<tbody>
<?php foreach ( $results as $row ) { ?>
<tr>
<td><?php echo esc_html( $row->garten_nr ); ?></td>
<td><?php echo esc_html( $row->datum ); ?></td>
<td><?php echo esc_html( $row->wasserstand ); ?></td>
<td><?php echo esc_html( $row->stromverbrauch ); ?></td>
</tr>
<?php } ?>
</tbody>
</table>
<?php
return ob_get_clean();
} else {
return '<p>Keine Daten gefunden.</p>';
}
}
add_shortcode('display_garden_values', 'display_garden_values');
Alles anzeigen