Plugin Development

  • 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.

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

    • Wo genau wird der Code integiert?
    • Die im [FONT=Courier New]SELECT ID FROM[/FONT] verwendete Variable [FONT=Courier New]$user_email[/FONT] existiert nicht.
    • Ob [FONT=Courier New]DMT_DBTABLE_NAME_EMPLOYEES[/FONT] irgendwo definiert ist, ist auch unklar.
  • Hallo b3317133 wieder einmal du. ;)

    Hast recht die $user_email habe ich angepasst. Dies hat mir nicht mal einen Fehler angezeigt.

    Habe immer noch einen Whitescreen.
    Die "DMT_DBTABLE_NAME_EMPLOYEES;" kommt von vorne da ich die flexibilität habe möchte diese zu ändern.

    Hat es ev. mit den rechten zu tun? Kann es mir zwar nicht vorstellen, da WP die Tabelle erstellt.

    Bin da echt Ratlos.:confused:

    Hier die DB Struktur: Habe da noch die user_id in bigint(20) geändert.

    2 Mal editiert, zuletzt von TomStarSky (13. Februar 2023 um 12:53)

  • Entferne alles aus Deinem [FONT=Courier New]REQUEST_METHOD[/FONT] Codeblock und füge die Zeilen einzeln hinzu, um das Problem weiter einzugrenzen.

    Code
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
       global $wpdb;
       $table_name = $wpdb->prefix . DMT_DBTABLE_NAME_EMPLOYEES;
    echo $table_name;
    
    
    .. alles sonst raus .. und dann zeilenweise mit entspr. Ausgabe des aktuellen Werts am Ende dazu bis der Whitescreen erscheint, dann hast Du das Problem gefunden.


    Wenn nichts über [FONT=Courier New]WP_DEBUG[/FONT] im [FONT=Courier New]wp-content/debug.log[/FONT] landet, schau in die Server Error Logs.

    Beantworte alle Fragen, z.B.

    • Wo genau wird der Code integiert?
  • Code
    <form action="" method="post">

    hier fehlt mir das passende PHP Script

    du kannst dir ja an sehnen, wie andere dies machen, einfach bei deiner Installation nach <form action

    Mit offenen Augen träumen

  • hier hast du leichtest Chaos

    Code
    $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;

    erst suchst du mit $user_email, die nicht vorhanden ist eine $user_id und dann überschreibst du die $user_id mit null?!

    Mit offenen Augen träumen

  • in deinem Code - Ausschnitt fehlt DMT_DBTABLE_NAME_EMPLOYEES für $table_name

    ;

    Mit offenen Augen träumen


  • Uff... Da habe ich mich wohl etwas verzettelt.

    nein - eigentlich nicht - verzetteln kann eigentlich nur ich und dies in Perfektion.

    welchen Insert SQL Befehl bekommst du, wenn aus $wpdb->insert .. echo machst? Den entsprechenden Tipp hattest du ja schon erhalten.

    Mit offenen Augen träumen

  • Hi,hi - Mal eine Pause bringt etwas Luft in das Gehirn.

    :eek:Bitte um Gnade bin noch recht frisch in PHP, SQL und WP. War gestern Abend auch schon zu spät, um so ein Formular zu schreiben.

    Ich erhalte immer einen Whitescreen.
    Habe mal testweise alles rausgelöscht ausser das Formular.
    Vondaher glaube ich liegt mein Problem ertmal an dem Formular und dem Button.

    Werde mich noch etwas bilden müssen. ;)

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!