форма выбора выбора всегда удаляет запрос sql

У меня есть эта форма:

<tr class="user-statusz-wrap"> <th><label for="statusz"><?php _e('Státusz') ?></label></th> <td> <select type="text" name="statusz" id="statusz"> <option value disabled selected> -- válassz egyet -- </option> <option value="<?php echo esc_attr( 'Kezdő', get_the_author_meta( 'statusz', $user->ID ) ); ?>">Kezdő</option> <option value="<?php echo esc_attr( 'Aktív', get_the_author_meta( 'statusz', $user->ID ) ); ?>">Aktív</option> <option value="<?php echo esc_attr( 'Pártoló', get_the_author_meta( 'statusz', $user->ID ) ); ?>">Pártoló</option> </select> </td> </tr> 

Что делает этот SQL-запрос:

 add_action( 'personal_options_update', 'klubadatok_vezetoseg_sql' ); add_action( 'edit_user_profile_update', 'klubadatok_vezetoseg_sql' ); function klubadatok_vezetoseg_sql( $user_id ) { if ( !current_user_can( 'edit_users', $user_id ) ) // "edit_users" means it has to be administrator or editor! return false; update_user_meta( $user_id, 'statusz', $_POST['statusz'] ); } 

И есть это поле, которое указано для пользователей в профиле:

 <tr class="user-statusz-wrap"> <th><label for="statusz"><?php _e('Státusz') ?></label></th> <td><p><?php echo $user->statusz . '<br />';?></p> <p class="description"><?php _e('Jelenlegi státuszod a klubban: Kezdő, Aktív, Pártoló.'); ?></p></td> </tr> 

Моя проблема заключается в том, что если я сначала уберу первый вариант выбора по умолчанию, когда я его сохраню, он перезапишет SQL-данные в базе данных с пустым. 🙁

РЕШИТЬ!

 <tr class="user-statusz-wrap"> <th><label for="statusz"><?php _e('Státusz') ?></label></th> <td> <select type="text" name="statusz" id="statusz"> <option value="<?php echo esc_attr( get_the_author_meta( 'statusz', $user->ID ) ); ?>"> -- válassz egyet -- </option> <option value="<?php echo esc_attr( 'Kezdő', get_the_author_meta( 'statusz', $user->ID ) ); ?>">Kezdő</option> <option value="<?php echo esc_attr( 'Aktív', get_the_author_meta( 'statusz', $user->ID ) ); ?>">Aktív</option> <option value="<?php echo esc_attr( 'Pártoló', get_the_author_meta( 'statusz', $user->ID ) ); ?>">Pártoló</option> </select> <!--<input type="hidden" name="statusz" value=" -- válassz egyet -- " disabled />--> </td> </tr> 

Не помечайте свой вариант как selected если вы не хотите его выбирать, а это значит, что вы, вероятно, должны использовать selected() чтобы динамически выбирать любое значение, которое уже было установлено. Это должно решить проблему.

Но это можно было бы очистить много:

  1. esc_attr() принимает единственный параметр. Вы отправляете два.
  2. Было бы проще и чище вытащить пользователя мета один раз и сохранить его в переменной.
  3. Как уже упоминалось, используется selected()

Так…

 $statusz = get_the_author_meta( 'statusz', $user->ID ); ?> <tr class="user-statusz-wrap"> <th><label for="statusz"><?php _e('Státusz') ?></label></th> <td> <select type="text" name="statusz" id="statusz"> <option value disabled selected> -- válassz egyet -- </option> <option value="<?php echo esc_attr('Kezdő'); ?>" <?php selected( 'Kezdő', $statusz);?> >Kezdő</option> <option value="<?php echo esc_attr('Aktív'); ?>" <?php selected( 'Aktív', $statusz);?>>Aktív</option> <option value="<?php echo esc_attr( 'Pártoló'); ?>" <?php selected( 'Pártoló', $statusz);?>>Pártoló</option> </select> </td> </tr>