选项选择表单始终删除SQL查询

时间:2015-06-14 作者:Lanti

我有以下表格:

<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>
我的问题是,如果我在保存时第一次将默认的select选项保持为活动状态,它将在数据库中重新写入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>

1 个回复
最合适的回答,由SO网友:s_ha_dum 整理而成

不要将您的选项标记为selected 如果您不想选择它,这意味着您可能应该使用selected() 动态选择已设置的任何值。这应该可以解决问题。

但这个问题可以解决很多:

  1. esc_attr() 接受单个参数。您将发送两个如上所述,已使用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>
    

结束

相关推荐

Share WordPress Database

WordPress安装是否必须使用专用数据库?我正在构建一个带有自定义页面的网站,可以访问MySQL数据库。但该网站还将安装WordPress。我可以为WordPress和自定义页面使用相同的唯一数据库吗?