wpdb tabellen als user anlegen lassen

  • Hallo zusammen,
    ich bastel grade an einer Pluginerweiterung zum GeoAddress-plugin.
    Weiteres verwendetes Plugin: Registered Only

    Mein Ziel:
    Jeder Benutzer soll seine eigene Kontakt-Datenbank haben.

    Meine Ansatz:
    Ich lese die Userdaten via action "user_register" oder "wp_login" mit einer function aus:

    Ich hab schon mit echo getestet, was in der Variable steht: Tatsächlich der User. Wenn ich jetzt als Admin beim Login für einen Aufruf sorge, dann legt er auch brav die Tabelle an.
    Aber als User darf er das scheinbar nicht? Da ich auch ein User-level-plugin drin hab, hab ich einem Testuser mal das Level 10 verpasst - bringt nix. Aber echo bestätigt mir, dass in der Variable die tatsächlichen gewünschten Daten drin stehen.

    Was wäre die Lösung?
    Muss ich die Variablen irgendwo hin übergeben das der Admin die dann übernimmt oder bekommt man das hin, dass die User in die DB schreiben dürfen?

    Irgendwie stehe ich mittler Weile auf dem Schlauch. :confused:

    • 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

  • Komische Fehler?

    Hallo zusammen,

    hab jetzt mal Deinen Vorschlag ausprobiert und an verschiedenen Stellen im Page-Template das hier eingefügt:

    PHP
    <?php $wpdb->print_error(); ?>

    Dabei hab ich dann das hier bekommen:

    PHP
    WordPress Datenbank-Fehler: []
    SELECT * FROM erfahrung3_categories ORDER BY cat_name

    und zwar hier (reduziert):

    PHP
    <?php
    global $wpdb,$table_name; // muss das eigentlich global sein? - ne?
    $user_obj = wp_get_current_user();
    $user_info = get_userdata($user_obj->id);
    echo 'Hallo ' . $user_info->user_nicename . '!'; //test klappt: zeigt User
    ?><?php $wpdb->print_error(); ?>
    <div id="WFDForm" style="position:relative;left:0px;top:0px;width:407px;height:286px;background-color:#FFFFCE;">
    <form name="Download_form" action="<?php echo do_action('leed_speichern'); echo $wpdb->show_errors(); ?>" method="POST" enctype="application/x-www-form-urlencoded" onsubmit="<?php echo do_action('leed_speichern'); echo $wpdb->show_errors();?>" > // ... usw..

    :confused:
    Damit hab ich ja garnicht gerechnet - ich glaub dass das auch nix mit meinem Problem zu tun hat. Allerdings stellt sich dann die Frage: "Warum gibts keine passenden Fehlermeldungen?"

    Wenn mir hier keiner weiterhelfen kann, wäre ich dankbar für einen Tipp, wo ich mal versuchen könnte zu fragen...

    OK: Ich hab den $wpdb->print_error(); aufruf nochmal höher eingefügt. Das hat nix mit meinem Problem zu tun.

    Einmal editiert, zuletzt von BunzBunz (18. Juli 2008 um 03:53)

  • So klappts

    Hallo zusammen,

    hab das mit den User-DBs jetzt hinbekommen.

    Im Template (Fazit weiter unten...):

    Ich hab da glaub ich was nicht kapiert !!
    Kann mir mal jemand den Kopf waschen:

    Was muss ich machen, damit die $Variablen auch Werte haben, die dann in die DB gehen. Ich hab so die Vermutung, dass ich die entweder irgendwo übergeben muss, oder dass die einfach nicht übergeben werden dürfen?

    Die Anmeldung ins Forum ist etwas tricky: Ich arbeite mit Konqueror/Firefox und hab das Problem, dass ich beim Antworten immer gesagt bekomme dass ich nicht eingeloggt bin.(Ja - Cookies sind an)

    Bitte Bitte mach sich einer die Mühe und drücke nach dem Login nochmal F5 = Lösung (ich kann mir vorstellen, dass die meisten die eine Antwort hätten, einfach nicht antworten, weil sie nicht mit dem Login klarkommen?)

  • Hab die Lösung

    Hallo zusammen,

    auch wenn ich hier keine Antwort bekommen habe, will ich für zukünftige Deppen wie mich :oops: hier die Lösung präsentieren:

    Nach einem "Submit" eines Formulars (also wenn man auf den Knopf "Absenden" gedrückt hat), werden die Variablen in ein sogenanntes Array gespeichert ($_POST)
    Diese Daten kann man dann abrufen und mit eine Funktion verarbeiten - also z.B. in eine Datenbank schreiben...

    Dazu muss man aber wissen, wie das genau aussehen muss. Genau da war mein Problem, denn weil ich das nicht genau wusste, war ich unsicher und hab mich immer wieder verrant..

    cpName='". $_POST["cpName"]"', ist also die Lösung! $_POST ist der Name es Arrays und "cpName" ist ein Feld im Array. cpName= gehört zum SQL-String, der dann ausgeführt wird.

    Ach ja - leider kann man scheinbar nicht auf die "add_action" verzichten (momentan testweise auf wp_head). Man kann die Funktionen ja theoretisch auch mit do_action aufrufen. Die Funktion würde dann nicht im sogenannte "Loop" laufen und den Blog langsamer machen.
    Mein Plan war es, do_action an das absenden des Formulars zu knüpfen.

    Anmerkung:
    Natürlich merkt ein Blinder mit dem Krückstock, dass ich PHP nie wirklich aktiv genutzt habe - ich bin eine Bash-Kind.:-?

  • Nach einem "Submit" eines Formulars (also wenn man auf den Knopf "Absenden" gedrückt hat), werden die Variablen in ein sogenanntes Array gespeichert ($_POST)
    Diese Daten kann man dann abrufen und mit eine Funktion verarbeiten - also z.B. in eine Datenbank schreiben...


    Aaaaaahhhhh!!!! Bitte [COLOR="Red"]NIEMALS[/COLOR] ungeprüfte und ungefilterte Eingaben so verarbeiten!
    FAQ der Newsgroups de.comp.lang.php.* - 12.11.*Prüfe importierte Parameter. Traue niemandem

    Zitat

    Dazu muss man aber wissen, wie das genau aussehen muss. Genau da war mein Problem, denn weil ich das nicht genau wusste, war ich unsicher und hab mich immer wieder verrant..


    Dann Grundlagen PHP und Datenbankprogrammierung lernen. Tutorials gibts ohne Ende im Netz.
    (Übrigens war für mich aus deiner Ausgangsfrage nicht ersichtlich, dass du nicht weißt, wo Variablen nach einem Formular-Submit stehen.)

    Zitat

    Ach ja - leider kann man scheinbar nicht auf die "add_action" verzichten (momentan testweise auf wp_head).


    Doch schon, kommt drauf an wie du das ganze angehst. Ich würde ein Seitentemplate für das Ganze verwenden, dann ist der Code auch nur in diesem Template enthalten, und man spart sich die Actions und Filter.
    (In deinem Fall wäre übrigens der "wp"-Hook etwas sinnvoller, da bei wp_head() möglicherweise schon Ausgaben gemacht wurden und es so evtl. zu Fehlermeldungen kommen kann - je nachdem welche Daten du wie verarbeitest)

    Zitat

    Natürlich merkt ein Blinder mit dem Krückstock, dass ich PHP nie wirklich aktiv genutzt habe - ich bin eine Bash-Kind.:-?


    Wie gesagt, Grundlagen PHP. Sonst hast du nicht lange Freude an deinem Code bzw. an WordPress...

Jetzt mitmachen!

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