Support » Allgemeine Fragen » Probleme mit $wpdb, eigenes Plugin

  • Gelöst christianlusser

    (@christianlusser)


    Hallo, für spezielle Bedürfnisse schreibe ich mir ein (kleines) plugin.
    Dazu möchte ich Daten in eigenen tables in der WP-SQL-Datenbank speichern.

    Habe die eigenen Tables im $wpdb objekt erstellt.

    Nun verhalten sich die Funktionen $wpdb->insert und $wpdb->delete eigenartig…

    Ein leerer Table wird zunächst richtig mit Zeilen gefüllt:

    function cl_sssb_admin_neue_person () {
    
         
           global $wpdb;
           $table_name = $wpdb->prefix . 'sssb_Personen';
            $ins = array();
            unset ( $ins);
    #       $col_names = cl_sssb_getColumn_Names($table_name);
          # $col_names = array ('anrede','firstname','lastname','username','passwort','email','adresse','geburtstag','geburtsort','nation','passnumer','passgueltigbis');
         
    #            foreach ($col_names as $col_name) {
    #                if (strtolower($col_name) == "id") {continue;}
    #      #    echo $col_name.'  post '. $_POST[$col_name] ;
    #       
    #            $ins[$col_name] = htmlspecialchars(stripslashes_deep($_POST[$col_name])) ;
    #            }
           
           $ins = array(
               'anrede'         => htmlspecialchars(stripslashes($_POST['anrede'])),
               'lastname'       => htmlspecialchars(stripslashes($_POST['lastname'])),
               'firstname'      => htmlspecialchars(stripslashes($_POST['firstname'])),
               'username'       => htmlspecialchars(stripslashes($_POST['username'])),
               'passwort'       => htmlspecialchars(stripslashes($_POST['passwort'])),
               'email'          => htmlspecialchars(stripslashes($_POST['email'])),
               'adresse'        => htmlspecialchars(stripslashes($_POST['adresse'])),
               'geburtstag'     => htmlspecialchars(stripslashes($_POST['geburtstag'])),
               'geburtsort'     => htmlspecialchars(stripslashes($_POST['geburtsort'])),
               'nation'         => htmlspecialchars(stripslashes($_POST['nation'])),
               'passnummer'     => htmlspecialchars(stripslashes($_POST['passnummer'])),
               'passgueltigbis' => htmlspecialchars(stripslashes($_POST['passgueltigbis']))
                   
               
           );
    
           $wpdb->insert( $table_name, $ins );
            update_option('admin_message','Person gespeichert. ['.$ins['lastname'].']');
    #         $wpdb->update($table_name, array(),array('id'=>$wpdb->insert_id));
             
            
            wp_redirect(esc_url( admin_url('admin.php?page=cl-sssb-admin-personen-settings') ));
            exit; 
    }
    add_action('admin_post_cl_sssb_admin_neue_person', 'cl_sssb_admin_neue_person');

    DIES FUNKTIONIERT ZUNÄCHST!

    Wenn ich dann einzelne Zeilen lösche:

    function cl_sssb_delete_person() {
        global $wpdb;
        $table_name = $wpdb->prefix . 'sssb_Personen';
        $id = (int)htmlspecialchars(stripslashes_deep( $_POST['id']));
        
        $wpdb->delete($table_name , array( 'id' => $id ),array('%d'));
     #   $wpdb->update($table_name, array(),array('id'=>$wpdb->insert_id));
           
       $msg = 'Person gelöscht(id:'.$id.')';
        update_option('admin_message',$msg);
         
     #  $wpdb->query("DELETE FROM $table_name ;");   
     # $wpdb->query("DROP TABLE IF EXISTS $table_name ;");
     # cl_sssb_create_plugin_tables();
     # echo $msg;
        wp_redirect(esc_url( admin_url('admin.php?page=cl-sssb-admin-personen-settings') ));
        exit;
        
    }
    add_action('admin_post_cl_sssb_delete_person', 'cl_sssb_delete_person');

    WIRD ZUVIEL GELÖSCHT! AUSSERDEM funktionieren anschließende INSERTS nicht mehr, das heißt:
    Beim nächsten Insert wird eine leere Zeile ‚x‘ eingefügt, die Felder können nicht ausgelesen werden ???
    Beim nächsten darauffolgenden Insert fehlt die neu eingefügte Zeile, doch die zuletzt eingefügte Zeile (die zuerst keine Werte hatte) erscheint plötzlich ????

    Was ist da los, ich sehe mir jetzt schon seit 2 Tagen den code an, und finde keinen Fehler!
    Bitte Hilfe, DANKE, Christian

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Thread-Starter christianlusser

    (@christianlusser)

    Hallo, niemand da, der mir helfen kann/möchte?
    Falls ich im falschen Forum gelandet bin, bitte mitteilen…

    Moderationshinweis: Bumping ist hier unerwünscht. Da wir hier alle freiwillig und unentgeltlich helfen, musst du entweder etwas Geduld mitbringen oder einen Dienstleister beauftragen. Danke für dein Verständnis. Grüße, Bego

    Hi. Habe den Code mal überflogen, aber das was ich hier sehe, sieht stark danach aus, als könntest du es simpel mit einem Custom Post Type und den dazugehörigen custom meta fields lösen. Plugins in diese Richtungen wären zB ACF oder pods.

    Thread-Starter christianlusser

    (@christianlusser)

    Danke für die Antwort, ich habe mittlerweile den Fehler gefunden, der versteckte sich in einem anderen file…
    Sorry für das „Bumping“, diesen Begriff kannte ich vorher nicht.

    Problem gelöst 🙂 Danke nochmals

    Trotzdem … ich würde mir nochmal überlegen, ob die direkten Zugriffe auf die Datenbank wirklich nötig sind.

Ansicht von 4 Antworten - 1 bis 4 (von insgesamt 4)
  • Das Thema „Probleme mit $wpdb, eigenes Plugin“ ist für neue Antworten geschlossen.