Вопрос или проблема
Я пытаюсь редактировать данные из таблицы на фронтенде. Когда я кликаю на редактирование, форма не делает ничего, она показывает только пустые поля.
Html Код
<form action="" id="postjob" method="post">
<table>
<tr>
<td><label for="team_uniqueid">UniqueID:</label></td>
<td><input type="text" name="team_uniqueid" id="team_uniqueid" value=""/></td>
</tr>
<tr>
<td><label for="team_firstname">Имя:</label></td>
<td><input type="text" name="team_firstname" id="team_firstname" value="" /></td>
</tr>
<tr>
<td><label for="team_lastname">Фамилия:</label></td>
<td><input type="text" name="team_lastname" id="team_lastname" /></td>
</tr>
<tr>
<td><label for="team_emailid">EmailId:</label></td>
<td><input type="text" name="team_emailid" id="team_emailid" /></td>
</tr>
<tr>
<div class="full_wrap">
<div class="sub_wrap">
<select name="page_id" id="page_id">
<?php
global $post;
$args = array( 'numberposts' => -1);
$posts = get_posts($args);
foreach( $posts as $post ) : setup_postdata($post); ?>
<option value="<?php echo $post->ID; ?>"><?php the_title(); ?></option>
<?php endforeach; ?>
</select>
<select>
<option class="au">Австралия</option>
<option class="Ind">Индия</option>
<option class="US">Соединенные Штаты</option>
<option class="UK">Великобритания</option>
</select>
</div>
</div>
</tr>
<tr>
<td><button type="submit" name="insert_member">Отправить</button></td>
</tr>
</table>
</form>
Код редактирования
if (isset($_GET['edit'])) {
$id = $_GET['edit'];
$update = true;
$record = $wpdb->get_results("SELECT * FROM $tablename WHERE team_emailid = '".$id."'");
if($record->num_rows){
$n = $record->fetch_array();
$team_uniqueid = $n['team_uniqueid'];
$team_firstname = $n['team_firstname'];
$team_lastname = $n['team_lastname'];
$team_emailid1 = $n['team_emailid'];
}
}
Добрый день!
Чтобы отредактировать существующее поле, вам нужно вставить значения в ваши поля ввода. Вы можете сделать это следующим образом –
<tr>
<td><label for="team_uniqueid">UniqueID:</label></td>
<td><input type="text" name="team_uniqueid" id="team_uniqueid" value="<?php echo $team_uniqueid; ?>"/></td>
</tr>
Надеюсь, это поможет.
Ответ или решение
Чтобы редактировать данные в пользовательской таблице на фронтенде, вам нужно убедиться, что значения записей из базы данных правильно отображаются в HTML-формах. Из вашего описания и предоставленного кода я вижу, что вы сталкиваетесь с проблемой, когда при нажатии на кнопку редактирования форма отображает пустые поля. Давайте рассмотрим шаги, необходимые для успешного редактирования данных.
Шаги для редактирования данных таблицы на фронтенде
-
Получение данных из базы: Убедитесь, что вы правильно извлекаете данные из базы данных. У вас уже есть код, который получает записи по email, но есть нюансы, которые стоит учесть.
if (isset($_GET['edit'])) { $id = $_GET['edit']; $record = $wpdb->get_results("SELECT * FROM $tablename WHERE team_emailid = '$id'"); if (count($record) > 0) { $n = $record[0]; // Извлекаем первую запись $team_uniqueid = $n->team_uniqueid; $team_firstname = $n->team_firstname; $team_lastname = $n->team_lastname; $team_emailid1 = $n->team_emailid; } }
Здесь важно использовать
count($record) > 0
вместо$record->num_rows
, так какget_results
возвращает массив, а не объект. -
Заполнение полей формы значениями: После извлечения данных, их необходимо вставить в качестве значений в соответствующие поля формы. Например, так:
<tr> <td><label for="team_uniqueid">UniqueID:</label></td> <td><input type="text" name="team_uniqueid" id="team_uniqueid" value="<?php echo isset($team_uniqueid) ? esc_attr($team_uniqueid) : ''; ?>"/></td> </tr> <tr> <td><label for="team_firstname">FirstName:</label></td> <td><input type="text" name="team_firstname" id="team_firstname" value="<?php echo isset($team_firstname) ? esc_attr($team_firstname) : ''; ?>"/></td> </tr> <tr> <td><label for="team_lastname">LastName:</label></td> <td><input type="text" name="team_lastname" id="team_lastname" value="<?php echo isset($team_lastname) ? esc_attr($team_lastname) : ''; ?>"/></td> </tr> <tr> <td><label for="team_emailid">EmailId:</label></td> <td><input type="text" name="team_emailid" id="team_emailid" value="<?php echo isset($team_emailid1) ? esc_attr($team_emailid1) : ''; ?>"/></td> </tr>
Используйте функцию
esc_attr()
для защиты от XSS-атак и обеспечения корректности отображения специальных символов. -
Обработка данных при отправке формы: После редактирования данных, убедитесь, что у вас правильная обработка данных, отправляемых формой. Например:
if (isset($_POST['insert_member'])) { $team_uniqueid = $_POST['team_uniqueid']; $team_firstname = $_POST['team_firstname']; $team_lastname = $_POST['team_lastname']; $team_emailid = $_POST['team_emailid']; $wpdb->update( $tablename, array( 'team_uniqueid' => $team_uniqueid, 'team_firstname' => $team_firstname, 'team_lastname' => $team_lastname, 'team_emailid' => $team_emailid, ), array('team_emailid' => $id) // условие обновления ); }
Заключение
Следуя вышеуказанным шагам, вы сможете успешно отображать и редактировать данные из своей пользовательской таблицы в реальном времени. Убедитесь, что у вас прописаны правильные условия для извлечения и обновления данных, а также что вы должным образом защищаете свои входные данные.
Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь спрашивать. Надеюсь, это поможет вам успешно реализовать функционал редактирования на фронтенде.