Вставка данных в пользовательские таблицы

Я пытаюсь создать пользовательские таблицы ввода для отправки данных в пользовательские таблицы в базе данных wp. Я не могу заставить свой скрипт ничего делать. Пользователь вводит тип напитка, например, водку или виски, предоставляет описание и отправляет его в базу данных, где в базе данных WordPress есть пользовательские таблицы. У меня есть html-код на странице wordpress и php в файле с именем setLiquorType.php, который находится в основной папке wordpress.

Форма HTML

<form method = "post" action = "setLiquorType.php"> Add a New Liquor Type</br></br> <p>Name: <input type="text" name="name"/></p> <p>Description <input type="text" name="description"/></p> ---------------------------------------------- <input type="submit" value="Submit"/> </form> </br> 

Мой скрипт php

 <?php $name = $_POST['name']; $global $wpdb, $name, $description; $table_name = $wpdb->prefix . "Liquor Type"; $wpdb->insert($table_name, array( 'lq_name' => $lq_name, 'description' => $lq_descrip ),array( '%s', '%d') ); } ?> 

Любая помощь будет отличной

Solutions Collecting From Web of "Вставка данных в пользовательские таблицы"

Вы сказали, что ваша форма находится в главной папке? Думаю, вам нужно установить правильный URL для action="" . Вы можете попробовать:

 action="<?php echo site_url() . '/setLiquorType.php'; ?>" 

Лучше всего поместить ваш код формы в functions.php, а затем оставить form action = "" пустым. Затем вы можете активировать функцию формы при отправке формы.

Ваша форма HTML:

 <form method = "post" action = ""> //edited form action <h3>Add a New Liquor Type</h3> //wrapped title with <h3> tags and removed <br> because h3 element will have padding that will separate it from form (if not provided in your style.css it will be assigned by the browser) <p> //wraping field with paragraph to generate automatic space between them without styling it <label for="name">Name:</label> //removed <p> element and used <label> instead <input type="text" name="name"/> </p> <p> <label for="description">Description</label> <input type="text" name="description"/> </p> <hr> //replaced unnecessary --- lines <input type="submit" value="Submit" name="liquor_submit"/> // added name attribute that will be used to check if the form is submitted </form> </br> 

Теперь в вас functions.php вы можете добавить что-то вроде:

  //setting up the form function themename_add_new_liquor() { $name = $_POST['name']; $description = $_POST['description']; //You forgot to collect data from "description" field global $wpdb; //removed $name and $description there is no need to assign them to a global variable $table_name = $wpdb->prefix . "liquor_type"; //try not using Uppercase letters or blank spaces when naming db tables $wpdb->insert($table_name, array( 'lq_name' => $name, //replaced non-existing variables $lq_name, and $lq_descrip, with the ones we set to collect the data - $name and $description 'description' => $description ),array( '%s', '%s') //replaced %d with %s - I guess that your description field will hold strings not decimals ); } } //And now to connect the two: if( isset($_POST['liquor_submit']) ) themename_add_new_liquor(); 

Надеюсь, это поможет. Кроме того, это не будет работать, если вы не создали таблицу базы данных в первую очередь (функция $ wpdb-> insert используется для вставки данных в существующую таблицу).

Ура! 🙂