Insertar datos en la base de datos usando el formulario

4

Estoy escribiendo un sencillo complemento que crea una tabla con el nombre "newsletter" en la base de datos y proporciona un código corto para colocar un formulario de registro en las páginas. el formulario contiene "nombre" y "correo electrónico". Tengo problemas para insertar los datos del formulario (nombre + correo electrónico) en la base de datos. Escribí esto:

<?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) ); 
}
?> 

pero la identificación no funciona. ¿Qué debo hacer para obtener datos del formulario e insertarlos en la tabla?

    
pregunta pixelweb 14.03.2013 - 14:16

1 respuesta

4

Las dos variables $name y $email son desconocidas dentro de la función. Debe hacer que estén disponibles globalmente dentro de él cambiando global $wpdb en global $wpdb, $name, $email :

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();

O, puede colocar las variables en los argumentos de la función:

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 );

O, sin función:

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
) );
    
respondido por el Mike Madern 14.03.2013 - 14:38

Lea otras preguntas en las etiquetas