webentwicklung-frage-antwort-db.com.de

Daten in Datenbank mit Formular einfügen

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?

4
pixelweb

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
) );
4
Mike Madern