Вставьте данные в базу данных, используя форму
-
-
Вы добавили какой-нибудь префикс в таблицу рассылки?Have you added any prefix to newsletter table?
- 0
- 2013-03-14
- Vinod Dalvi
-
добавление префикса где именно?таблица в базе данных имеет префиксadding prefix where exactly? the table in database have prefix
- 0
- 2013-03-14
- pixelweb
-
перед именем таблицы,потому что вы использовали этот префикс $table_name=$ wpdb->."Новостная рассылка";в вашем коде,который добавляет префикс wordpress перед информационным бюллетенем имени таблицы,поэтому,если вы не добавляли префикс к имени таблицы,используйте только имя таблицы,подобное этому $table_name="newsletter";before table name because you have used this $table_name = $wpdb->prefix . "newsletter"; in your code which adds wordpress prefix before the table name newsletter so if you have not added any prefix to table name than only use table name like this $table_name = "newsletter";
- 0
- 2013-03-14
- Vinod Dalvi
-
Две переменные `name` и`email` ** неизвестны ** внутри функции.Вы должны либо определить их внутри функции,либо,если они понадобятся где-то еще,объявить их «глобальными» (как _outside_,так и _inside_ функции).The two variables `name` and `email` are **unknown** inside the function. You have to either define them inside the function, or if they are needed elsewhere, declare them `global` (both _outside_ and _inside_ the function).
- 0
- 2013-03-14
- tfrommen
-
@VinodDalvi: я добавил префикс для таблицы в базе данных.@VinodDalvi : i added th eprefix for table in database.
- 0
- 2013-03-14
- pixelweb
-
Я определил имя и адрес электронной почты внутри функции,но ничего не произошло.i defined the name and email inside function but nothing happen.
- 0
- 2013-03-14
- pixelweb
-
Какой префикс вы добавили в таблицу?скажите мне полное имя таблицы с префиксом.What is the prefix you have added to the table? tell me the full table name with prefix.
- 0
- 2013-03-15
- Vinod Dalvi
-
1 ответ
- голосов
-
- 2013-03-14
Две переменные
$name
и$email
неизвестны внутри функции. Вы должны сделать их глобально доступными внутри него,заменивglobal $wpdb
на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();
Или вы можете поместить переменные в аргументы функции:
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 );
Или без функции:
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 ) );
The two variables
$name
and$email
are unknown inside the function. You have to make them globally available inside it by changingglobal $wpdb
intoglobal $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();
Or, you can put the variables in the function's arguments:
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 );
Or, without function:
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 ) );
-
Вот что я написал.;) У меня все еще возникают проблемы с тем,когда писать комментарий,а когда этого достаточно для ответа.;) Однако переменные все равно должны быть объявлены как `глобальные` вне функции.That's what I wrote. ;) I'm still having issues with when to write a comment and when it's enough for an answer. ;) The variables still have to be declared `global` _outside_ the function, though.
- 0
- 2013-03-14
- tfrommen
-
Ха-ха,да,я увидел ваш комментарий после того,как опубликовал свой ответ :-) мое правило комментирования/ответа: если OP должен изменить более одного правила в коде,всегда отвечайте ;-) Я добавлю `global` впеременные `$name` и` $email`Haha, yes I saw your comment after I posted my answer :-) my rule of commenting/answering is, if OP has to change more than one rule in the code, always answer ;-) I'll add `global` to the variables `$name` and `$email`
- 1
- 2013-03-14
- Mike Madern
-
Ах,ладно,похоже,вы правы с областью видимости (потому что в этом случае _ внешняя_ функция ** ** является глобальной областью,а не классом).Однако,если вы объявляете переменные глобальными (что вы решили сделать сейчас),вам сначала нужно объявить,а затем (в следующей строке или после точки с запятой) установить значение.Ah, okay, you seem to be right with the scope (because in this case, _outside_ the function **is** the global scope, and not a class). However, if you declare the variables global (what you decided to do now), you first have to declare, and then (in the next line, or after a semicolon) set a value.
- 0
- 2013-03-14
- tfrommen
-
когда пользователь нажимает на форму отправки,действие формы относится к вызову файла: regiostration-form.php в этом файле,теперь у меня есть этот код: `."Новостная рассылка"; $ wpdb->insert ($table_name,array ('name'=> $name,'email'=> $email)); } ?> ` но опять не работает.ничего плохого?when user click on submit form the form's action refer to an file call :regiostration-form.php in this file i have this code now: `prefix . "newsletter"; $wpdb->insert($table_name, array('name' => $name, 'email' => $email) ); } ?> ` but it does not work again. anything wrong?
- 0
- 2013-03-14
- pixelweb
-
Вы действительно вызываете функцию `insertuser ()` после объявления функции?You do call the `insertuser()` function after you declare the function?
- 0
- 2013-03-14
- Mike Madern
-
@MikeMadern нужно ли мне писать: 'insertuser ()' после функции?@MikeMadern do i have to write: 'insertuser()' after function?
- 0
- 2013-03-14
- pixelweb
-
определение функции не выполняет ее автоматически.Вы должны вызвать функцию для выполнения.Смотрите код в моем ответе ;-)defining a function doesn't automatically executes it. You have to call the function in order to execute. See the code in my answer ;-)
- 0
- 2013-03-14
- Mike Madern
-
Я использовал ваш код,но получил две ошибки: Примечание: «Попытка получить свойство не-объекта в строке 8» и «Неустранимая ошибка: вызов функции-членаinsert () для не-объекта в строке 9»i used your code but i got two errors: Notice: `Trying to get property of non-object in line 8` and `Fatal error: Call to a member function insert() on a non-object in line 9`
- 0
- 2013-03-14
- pixelweb
-
Это не файл,загруженный WordPress,верно?`require` файл` wp-load.php` поверх вашего скрипта для загрузки библиотеки WordPress.It isn't a file loaded by WordPress right? `require` the `wp-load.php` file on top of your script to load the WordPress library.
- 0
- 2013-03-14
- Mike Madern
-
я использовал этот код и работал нормально: `."Новостная рассылка"; $ wpdb->insert ($table_name,array ('name'=> $name,'email'=> $email)); ?> `Спасибо всем ребятам,особенно Майку Мадернуi used this code and worked fine: `prefix . "newsletter"; $wpdb->insert( $table_name, array( 'name' => $name, 'email' => $email ) ); ?> ` Thanks all guys specially Mike Madern
- 0
- 2013-03-14
- pixelweb
-
да,обновите ответ полным ответом,и я приму его.искреннеyes, please update the answer with complete answer then i will accept it. Sincererly
- 0
- 2013-03-14
- pixelweb
-
Я обновил свой ответ для вас;)I updated my answer for you ;)
- 0
- 2013-03-15
- Mike Madern
Я пишу простой плагин,который создает таблицу с именем "информационный бюллетень" в базе данных и предоставляет короткий код для размещения регистрационной формы на страницах. форма содержит «имя» и «адрес электронной почты». У меня проблема с вставкой данных формы (имя + адрес электронной почты) в базу данных. я написал это:
но идентификатор не работает.что мне делать,чтобы получить данные из формы и вставить в таблицу?