Написал плагин главный файл плагина Код (Text): <?php /* Plugin Name: test message Plugin URI: Description: test message Version: 1.0.1 Author: test Author URI: http://test */ include_once("inc/test-db.php"); include_once("inc/test-shortcode.php"); // Hook for adding admin menus add_action('admin_menu', 'test_add_pages'); // action function for above hook function test_add_pages(){ add_options_page('test Options', 'test Options', 8, 'test-options', 'test_options_page'); } // mt_options_page() displays the page content for the Test Options submenu function test_options_page() { echo "<h2>test Options</h2>"; echo '<hr>'; global $wpdb; $test_message = $wpdb->prefix.'test_message'; // Удаляем подписчика if(isset($_GET['delete_id'])){ $delid = $_GET['delete_id']; $wpdb->query("DELETE FROM ".$test_message." WHERE id=".$delid); } ?> <h1>Все подписчики</h1> <table width='100%' border='1' style='border-collapse: collapse;'> <tr> <th>№</th> <th>Имя</th> <th>Email</th> <th>Telegram</th> <th>Pass</th> <th> </th> </tr> <?php // Получаем записи и, если они есть, выводим $entriesList = $wpdb->get_results("SELECT * FROM ".$test_message." order by id desc"); if(count($entriesList) > 0){ $count = 1; foreach($entriesList as $entry){ $id = $entry->id; $name = $entry->name; $email = $entry->email; $telegram = $entry->telegram; $pass = $entry->pass; echo "<tr> <td>".$count."</td> <td>".$name."</td> <td>".$email."</td> <td>".$telegram."</td> <td>".$pass."</td> <td><a href='?page_id=410&delete_id=".$id."'>Удалить</a></td> </tr> "; $count++; } }else{ echo "<tr><td colspan='5'>Нет подписчиков</td></tr>"; } ?> </table> <?php } ?> дале папка inc в ней 2 файла test-db Код (Text): <?php require_once( ABSPATH . 'wp-admin/includes/upgrade.php' ); $test_message = $wpdb->prefix.'test_message'; $sql = "CREATE TABLE {$test_message} ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(255) NOT NULL, email varchar(255) NOT NULL, telegram varchar(255) NOT NULL, pass varchar(255) NOT NULL, PRIMARY KEY (id) ) {$charset_collate};"; dbDelta( $sql ); ?> Создади таблицу в базе данных далее шорткод test-shortcode Код (Text): <?php add_shortcode( 'test-message', 'test_message' ); function test_message() { global $wpdb; // Добавляем подписчика if(isset($_POST['submit'])){ $name = $_POST['name']; $email = $_POST['email']; $telegram = $_POST['telegram']; $pass = $_POST['pass']; $test_message = $wpdb->prefix.'test_message'; if($name != '' && $email != ''){ // Проверяем по полю email есть ли такой подписчик $check_data = $wpdb->get_results("SELECT * FROM ".$test_message." WHERE email='".$email."' "); if(count($check_data) == 0){ $insert_sql = "INSERT INTO ".$test_message."(name,email,telegram,pass) values('".$name."','".$email."','".$telegram."','".$pass."') "; $wpdb->query($insert_sql); echo "Подписчик добавлен!"; } } } ?> <h1>Добавить подписчика</h1> <form method="POST" action=""> <table> <tr> <td>Имя</td> <td><input type='text' name='name'></td> </tr> <tr> <td>Email</td> <td><input type='text' name='email'></td> </tr> <tr> <td>Telegram</td> <td><input type='text' name='telegram'></td> </tr> <tr> <td>Pass</td> <td><input type='text' name='pass'></td> </tr> <tr> <td> </td> <td><input type='submit' name='submit' value='Добавить'></td> </tr> </table> </form> <?php } ?> ставлю шорткод создаю страницу данные в таблицу добовляются но всегда видно что форма не работает и вот такое сообщение в экране Но форма не работает и пишет страница не найдена ...Что надо исправить то дорогие знатоки ?
платформу это сам движок вордпресс на какой то другой ? операционку ? хостинг ? )) что такое платформа ?)
Добрый день! Вот такое сообщение на экране - Выдаётся пустая страница? Включите error reporting. Возможно в коде фатальная ошибка. Уточните "форма не работает и пишет страница не найдена" По Вашей function test_message: 1. В поля формы добавил атрибут required 2. Добавил prepare (защита от SQL-инъекций) PHP: <?php add_shortcode( 'test-message', 'test_message' ); function test_message() { global $wpdb; // Добавляем подписчика if(isset($_POST['submit'])){ $test_message = $wpdb->prefix.'test_message'; // Проверяем по полю email есть ли такой подписчик $select_sql = "SELECT * FROM $test_message WHERE email= %s"; $check_data = $wpdb -> get_results($wpdb->prepare($select_sql, $_POST['email'])); if($check_data) { echo "Такой подписчик есть!"; } else { $insert_sql = "INSERT INTO $test_message (name, email, telegram, pass) values (%s, %s, %s, %s)"; $res = $wpdb->query($wpdb->prepare($insert_sql, $_POST['name'], $_POST['email'], $_POST['telegram'], $_POST['pass'])); if($res) echo "Подписчик добавлен!"; else echo "Подписчик не добавлен!"; } } echo <<<HTML <h1>Добавить подписчика</h1> <form method="POST" action=""> <table> <tr> <td>Имя</td> <td><input type='text' name='name' required></td> </tr> <tr> <td>Email</td> <td><input type='text' name='email' required></td> </tr> <tr> <td>Telegram</td> <td><input type='text' name='telegram' required></td> </tr> <tr> <td>Pass</td> <td><input type='text' name='pass' required></td> </tr> <tr> <td> </td> <td><input type='submit' name='submit' value='Добавить'></td> </tr> </table> </form> HTML; } ?> Удачи!
(дополнение) Забыл убрать * из Вашего SELECT * FROM. Для проверки есть ли такой подписчик по полю email не нужно выбирать все поля таблицы д.б. PHP: $select_sql = "SELECT 1 FROM $test_message WHERE email = %s";
Форум где действилельно помогут в интернете много воды и ни чего по существу. а вопрос следующий Есть ли какие фильтры чтобы записывать содиржимое json файла в свою таблицу данных ? тоесть сам поток данных идёт с уже установленными id а надо чтобы ид шли по своим id так как уже стоит auto_increment где автоматически присваивается ld и таблица забивается повторяющимися данными Тоесть поток id 4364 далее id 53568 а надо чтоб шли они по порядку id 1 2 и так далее