Как редактировать данные пользовательской таблицы на фронтенде

Вопрос или проблема

Я пытаюсь редактировать данные из таблицы на фронтенде. Когда я кликаю на редактирование, форма не делает ничего, она показывает только пустые поля.

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-формах. Из вашего описания и предоставленного кода я вижу, что вы сталкиваетесь с проблемой, когда при нажатии на кнопку редактирования форма отображает пустые поля. Давайте рассмотрим шаги, необходимые для успешного редактирования данных.

Шаги для редактирования данных таблицы на фронтенде

  1. Получение данных из базы: Убедитесь, что вы правильно извлекаете данные из базы данных. У вас уже есть код, который получает записи по 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 возвращает массив, а не объект.

  2. Заполнение полей формы значениями: После извлечения данных, их необходимо вставить в качестве значений в соответствующие поля формы. Например, так:

    <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-атак и обеспечения корректности отображения специальных символов.

  3. Обработка данных при отправке формы: После редактирования данных, убедитесь, что у вас правильная обработка данных, отправляемых формой. Например:

    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) // условие обновления
       );
    }

Заключение

Следуя вышеуказанным шагам, вы сможете успешно отображать и редактировать данные из своей пользовательской таблицы в реальном времени. Убедитесь, что у вас прописаны правильные условия для извлечения и обновления данных, а также что вы должным образом защищаете свои входные данные.

Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь спрашивать. Надеюсь, это поможет вам успешно реализовать функционал редактирования на фронтенде.

Оцените материал
Добавить комментарий

Капча загружается...