J'écris un simple plugin qui crée une table avec le nom "newsletter" dans la base de données et fournit un shortcode pour mettre un formulaire d'inscription dans les pages. le formulaire contient "nom" et "email". J'ai du mal à insérer les données du formulaire (nom + email) dans la base de données. j'ai écrit ceci:
<?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) );
}
?>
mais id ne fonctionne pas. Que dois-je faire pour obtenir des données du formulaire et les insérer dans un tableau?
Les deux variables $name
et $email
sont inconnues dans la fonction. Vous devez les rendre globalement disponibles en modifiant 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();
Ou, vous pouvez mettre les variables dans les arguments de la fonction:
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 );
Ou, sans fonction:
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
) );