Hallo zusammen,
aktuell kämpfe ich mit einem grösseren Problem, wo ich einfach nicht weiter komme.
Daher benötige ich eure Hilfe erneut.
Im angehängten Code möchte ich aus dem Backend von WP, Einträge in eine Tabelle namens "Employees"
Schreiben. Das Formular hat oben eine Auswahl aller Benutzer von WP mit einem Dropdownmenu.
Nach Auswahl im Dropdown soll der Eintrag unter dessen ID in die Tabelle geschrieben werden.
Zu meinem Ärger :mad:erhalte ich nach dem submit eine Weiterleitung auf /wp-admin/admin-post.php und einem Whitescreen.
Es werden keine Einträge gemacht.
Hat einer eine Idee? Wie kann ich das Debugen? Die Debug von WP spukt nix raus.
PHP
<form action="" method="post">
<?php
global $wpdb;
$table_name_users = $wpdb->prefix . "users";
$users = $wpdb->get_results("SELECT ID, user_login FROM $table_name_users");
?>
<label for="user_id">Name:</label>
<select name="user_id" id="user_id">
<?php
foreach ($users as $user) {
echo '<option value="' . $user->ID . '">' . $user->user_login . '</option>';
}
?>
</select>
<br><br>
<label for="date">Date:</label>
<input type="date" name="date" id="date" required>
<br><br>
<label for="start_time">Start Time:</label>
<input type="time" name="start_time" id="start_time" required>
<br><br>
<label for="end_time">End Time:</label>
<input type="time" name="end_time" id="end_time" required>
<br><br>
<label for="working_hours">Working Hours:</label>
<input type="number" name="working_hours" id="working_hours">
<br><br>
<label for="overtime_hours">Overtime Hours:</label>
<input type="number" name="overtime_hours" id="overtime_hours">
<br><br>
<label for="pensum_hours">Pensum Hours:</label>
<input type="number" name="pensum_hours" id="pensum_hours">
<br><br>
<label for="vacation_days">Vacation Days:</label>
<input type="number" name="vacation_days" id="vacation_days">
<br><br>
<input type="submit" value="Submit">
</form>
<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
global $wpdb;
$table_name = $wpdb->prefix . DMT_DBTABLE_NAME_EMPLOYEES;
$user_id = $wpdb->get_var($wpdb->prepare(
"SELECT ID FROM {$wpdb->prefix}users WHERE user_email = %s", $user_email
));
$user_id = !empty(sanitize_text_field($_POST["user_id"])) ? sanitize_text_field($_POST["user_id"]) : null;
$date = !empty(sanitize_text_field($_POST["date"])) ? sanitize_text_field($_POST["date"]) : null;
$start_time = !empty(sanitize_text_field($_POST["start_time"])) ? sanitize_text_field($_POST["start_time"]) : null;
$end_time = !empty(sanitize_text_field($_POST["end_time"])) ? sanitize_text_field($_POST["end_time"]) : null;
$working_hours = !empty(sanitize_text_field($_POST["working_hours"])) ? sanitize_text_field($_POST["working_hours"]) : null;
$overtime_hours = !empty(sanitize_text_field($_POST["overtime_hours"])) ? sanitize_text_field($_POST["overtime_hours"]) : null;
$pensum_hours = !empty(sanitize_text_field($_POST["pensum_hours"])) ? sanitize_text_field($_POST["pensum_hours"]) : null;
$vacation_days = !empty(sanitize_text_field($_POST["vacation_days"])) ? sanitize_text_field($_POST["vacation_days"]) : null;
$log_time = current_time('mysql');
$wpdb->insert(
$table_name,
array(
'user_id' => $user_id,
'date' => $date,
'start_time' => $start_time,
'end_time' => $end_time,
'working_hours' => $working_hours,
'overtime_hours' => $overtime_hours,
'pensum_hours' => $pensum_hours,
'vacation_days' => $vacation_days,
'log_time' => $log_time
),
array(
'%d',
'%s',
'%s',
'%s',
'%d',
'%d',
'%d',
'%d',
'%s'
)
);
echo "Datensatz erfolgreich eingefügt";
}
?>
Alles anzeigen