Probleme mit $wpdb, eigenes Plugin
-
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
- Das Thema „Probleme mit $wpdb, eigenes Plugin“ ist für neue Antworten geschlossen.