Zurück   WordPress Deutschland Forum > Support > Plugins und Widgets > Plugin-Entwicklung

Antwort
 
Themen-Optionen Ansicht
Alt 25.06.2008, 12:28   #1 (permalink)
PostRank: 0
 
Registriert seit: 25.06.2008
Ort: Menden (Sauerland)
Beiträge: 8
MySQL-Verbindung aufbauen

Hallo

Ich möchte ein Newsletter-Plugin schreiben. Nun soll sich der User in der Sidebar anmelden können, die E-Mail-Adresse wird per AJAX an eine Datei weitergeleitet. In dieser Datei soll die E-Mail-Adresse in die MySQL-Datenbank eingefügt werden, die im Admin-Menü erzeugt wird. Problem ist nun aber, dass der normale MySQL-Befehl mysql_query(); nicht funktioniert. Im Admin-Menü aber schon?! Woran liegt das, wie kann ich außerhalb des Admin-Menüs eine MySQL-Verbindung aufbauen?

Danke für eure Hilfe schonmal im voraus

Lg, Andy

Achja, mysql_error() liefert: Access denied for user 'ODBC'@'localhost' (using password: NO). Kein Passwort, weil alles lokal läuft.

Geändert von TechnoLogiY (25.06.2008 um 12:36 Uhr).
TechnoLogiY ist offline   Mit Zitat antworten
Alt 25.06.2008, 13:01   #2 (permalink)
WPD-Team
 
Benutzerbild von jottlieb
 
Registriert seit: 20.08.2005
Ort: Berlin
Beiträge: 10.992
Nimm' einfach wpdb, dann brauchst du dich um den Aufbau der Verbindung nicht kümmern.

Mal ein Themenfremdes Beispiel:
PHP-Code:
<?php $comments $wpdb->get_results("SELECT comment_post_ID, comment_author, comment_author_email, comment_content, comment_date, DATE_FORMAT(comment_date,'%d.%m.%Y %H:%i') AS new_comment_date
  FROM $wpdb->comments
  WHERE comment_type = ''
  && comment_approved = '1'
  ORDER BY comment_date
 DESC LIMIT 3"
); ?>
__________________
Wordpress FAQ (Häufig gestellte Fragen) | Themepool
"Eine gut gestellte Frage ist schon halb beantwortet."
jottlieb ist offline   Mit Zitat antworten
Alt 25.06.2008, 13:02   #3 (permalink)
PostRank: 0
 
Registriert seit: 25.06.2008
Ort: Menden (Sauerland)
Beiträge: 8
Und wie kann man mit $wpdb etwas in eine Datenbank eintragen?

Danke schonmal für deine Hilfe

EDIT: mit $wpdb->query(); gehts nicht: Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\wordpress\wp-content\plugins\newsletter\sendMail.php on line 4
EDIT2: Nun, wp-db.php wurde inkludiert, jetzt kommt: Unknown MySQL server host 'DB_HOST' (11001)
EDIT3: Hier noch die Funktion:
Code:
$query = $wpdb->query("INSERT INTO `newsletter_mails` (
`id` ,
`mail` ,
`status`
)
VALUES (
NULL , '".$_GET["mail"]."', 'active'
);");

Geändert von TechnoLogiY (25.06.2008 um 13:05 Uhr).
TechnoLogiY ist offline   Mit Zitat antworten
Alt 25.06.2008, 13:37   #4 (permalink)
WPD-Team
 
Benutzerbild von marX
 
Registriert seit: 05.10.2006
Beiträge: 7.874
Hol dir die bestehende DB-Verbing in dein Plugin-Script:
PHP-Code:
global $wpdb
dann klappts auch mit $wpdb->query().
marX ist gerade online   Mit Zitat antworten
Alt 25.06.2008, 13:41   #5 (permalink)
PostRank: 0
 
Registriert seit: 25.06.2008
Ort: Menden (Sauerland)
Beiträge: 8
Guck mal in EDIT2 :P
TechnoLogiY ist offline   Mit Zitat antworten
Alt 25.06.2008, 13:58   #6 (permalink)
WPD-Team
 
Benutzerbild von marX
 
Registriert seit: 05.10.2006
Beiträge: 7.874
In Edit2 seh ich kein "global"... ich wette da ist $wpdb nicht initialisert bzw. NULL, und damit gibts natürlich auch keine query-methode. Ich rede von der Instanz $wpdb, nicht von der Klasse wp_db. Nur um Missverständnisse zu vermeiden

PHP-Code:
global $wpdb;
$query $wpdb->query("INSERT INTO `newsletter_mails` (
`id` ,
`mail` ,
`status`
)
VALUES (
NULL , '"
.$_GET["mail"]."', 'active'
);"
); 

Geändert von marX (25.06.2008 um 14:00 Uhr).
marX ist gerade online   Mit Zitat antworten
Alt 25.06.2008, 14:03   #7 (permalink)
PostRank: 0
 
Registriert seit: 25.06.2008
Ort: Menden (Sauerland)
Beiträge: 8
Mh, so sieht mein Script bis jetzt aus (ist noch unvollständig, geht mir erstmal darum, dass das eintragen geht...

PHP-Code:
<?php
    
include_once('../../../wp-includes/wp-db.php');
    global 
$wpdb;
    
    if(isset(
$_GET["mail"]) && isset($_GET["type"])) {
        if(
$_GET["type"] == "in") {
            
$query $wpdb->query("INSERT INTO `newsletter_mails` (
`id` ,
`mail` ,
`status`
)
VALUES (
NULL , '"
.$_GET["mail"]."', 'active'
);"
);
            if(
$query) {
                echo 
"Vielen Dank, du wurdest erfolgreich eingetragen!";
            }
            else {
                
//echo "Ein Fehler ist aufgetreten. Bitte versuche es erneut oder melde diesen Fehler beim Admin.";
                
echo mysql_error();
            }
        }
    }
?>
Aber es geht einfach nicht?! Kommt immernoch dieser Fehler: Unknown MySQL server host 'DB_HOST' (11001)

Kann es sein, dass versucht wird, auf den Server "DB_HOST" (anstatt localhost) zuzugreifen? Wenn ja, wie kann ich das ändern?
TechnoLogiY ist offline   Mit Zitat antworten
Alt 25.06.2008, 14:17   #8 (permalink)
WPD-Team
 
Benutzerbild von marX
 
Registriert seit: 05.10.2006
Beiträge: 7.874
Zitat:
Zitat von TechnoLogiY Beitrag anzeigen
Aber es geht einfach nicht?! Kommt immernoch dieser Fehler: Unknown MySQL server host 'DB_HOST' (11001)
Lass mal das include da weg. Du willt ja keine neue DB-Verbindung aufbauen, sondern die bestehende nutzen.
marX ist gerade online   Mit Zitat antworten
Alt 25.06.2008, 14:21   #9 (permalink)
PostRank: 0
 
Registriert seit: 25.06.2008
Ort: Menden (Sauerland)
Beiträge: 8
Mh, ne, dann kommt das hier wieder:

Fatal error: Call to a member function query() on a non-object in C:\xampp\htdocs\wordpress\wp-content\plugins\newsletter\sendMail.php on line 7

Ist ja auch logisch, woher soll er die Funktion auch sonst kennen? Blöder Fehler =/

GELÖST! Ich Idiot habe vergessen die wp-config.php Datei zu inkludieren, sprich, er wusste nich was "DB_HOST" ist... Oh mann, sorry für das Gedöns hier xD

Geändert von TechnoLogiY (25.06.2008 um 14:34 Uhr).
TechnoLogiY ist offline   Mit Zitat antworten
Alt 25.06.2008, 14:30   #10 (permalink)
WPD-Team
 
Benutzerbild von marX
 
Registriert seit: 05.10.2006
Beiträge: 7.874
Wo bindest du das Script denn ein? Muss natürlich irgendwo im WP-context sein, z.B. Plugin oder Theme. Was sagt
PHP-Code:
<?php var_dump$wpdb ); ?>
marX ist gerade online   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist aus.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:32 Uhr.


Powered by vBulletin® Version 3.7.4 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 | Impressum | Ein Inpsyde.com Projekt