Ich schreibe ein einfaches Plugin, das eine Tabelle mit dem Namen "Newsletter" in der Datenbank erstellt und einen Shortcode zum Einfügen eines Registrierungsformulars in Seiten bereitstellt. Das Formular enthält "Name" und "E-Mail". Ich habe Probleme beim Einfügen der Formulardaten (Name + E-Mail) in die Datenbank. Ich habe das geschrieben:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
function insertuser(){
global $wpdb;
$table_name = $wpdb->prefix . "newsletter";
$wpdb->insert($table_name, array('name' => $name, 'email' => $email) );
}
?>
aber es funktioniert nicht. Was soll ich tun, um Daten aus dem Formular abzurufen und in die Tabelle einzufügen?
Die beiden Variablen $name
und $email
sind in der Funktion unbekannt. Sie müssen sie global verfügbar machen, indem Sie global $wpdb
in global $wpdb, $name, $email
ändern:
require_once('../../../wp-load.php');
/**
* After t f's comment about putting global before the variable.
* Not necessary (http://php.net/manual/en/language.variables.scope.php)
*/
global $name = $_POST['name'];
global $email = $_POST['email'];
function insertuser(){
global $wpdb, $name, $email;
$table_name = $wpdb->prefix . "newsletter";
$wpdb->insert($table_name, array('name' => $name, 'email' => $email) );
}
insertuser();
Oder Sie können die Variablen in die Argumente der Funktion einfügen:
require_once('../../../wp-load.php');
$name = $_POST['name'];
$email = $_POST['email']
function insertuser( $name, $email ) {
global $wpdb;
$table_name = $wpdb->prefix . 'newsletter';
$wpdb->insert( $table_name, array(
'name' => $name,
'email' => $email
) );
}
insertuser( $name, $email );
Oder ohne Funktion:
require_once('../../../wp-load.php');
global $wpdb;
$name = $_POST['name'];
$email = $_POST['email'];
$table_name = $wpdb->prefix . "newsletter";
$wpdb->insert( $table_name, array(
'name' => $name,
'email' => $email
) );