【问题标题】:PHP update database with data-value from a formPHP 使用表单中的数据值更新数据库
【发布时间】:2015-12-10 03:32:55
【问题描述】:

我正在构建一个在页面上显示表单的 wordpress 插件。表单中是一个动态填充的歌手下拉列表(歌手是一种自定义帖子类型,管理员在其中输入歌手姓名和歌手性别 - 作为变量存储在 wp_postmeta "singer_name" 和 "singer_gender" 中)。

在表格中,我已经在选项中添加了歌手性别作为数据变量,例如:

<select name="about_performance_lead_singer" id="about_performance_lead_singer" value="">

<option disabled="" selected=""> -- Choose a singer -- </option>
<option data-gender="female" value="Toni">Toni</option>
<option data-gender="male" value="Jack">Jack</option>
<option data-gender="male" value="James">James</option>        

</select>

此代码是使用以下 php 生成的:

$singers = get_posts(
    array(
        'post_type'  => 'singers',
        'numberposts' => -1
    )
    );
    // Array of WP_User objects.
    foreach ( $singers as $singer ) {
        echo "<option data-gender='".esc_html( $singer->singer_gender )."' value='".esc_html( $singer->singer_name )."' >" . esc_html( $singer->singer_name ) . "</option>"; 
    }

提交表单后,我想更新 wp_postmeta 表中名为“wedding_singer_gender”的行 - 此行特定于正在填写的预订表单。这是我更新特定行的方法,我不知道如何用“数据性别”变量填充它

// Get booking form ID from URL query string
$booking_form_id = get_query_var( 'booking-id' );

update_post_meta($booking_form_id, 'wedding_singer_gender', *WEDDING SINGER GENDER*);

【问题讨论】:

  • 为什么不直接在提交表格的时候再找歌手,然后这样找到性别呢?此外,歌手没有特定的 ID,因此您可能有多个同名的歌手。
  • @RyanWillis 因为“singers”是一种自定义帖子类型,它们确实有一个唯一的 id - 您是否建议我将其添加为另一个数据变量,即 data-singer-id?或者我应该将值更改为 ID?
  • 是的,选择框的值应该始终是唯一的。 Rakib 的回答是可靠的

标签: php wordpress forms


【解决方案1】:

处理这个问题的最佳方法是...... 1. 在提交表单时,将 $singer_id 存储到 wp_postmeta 并使用 $booking_id

<select name="about_performance_lead_singer" id="about_performance_lead_singer" value="">

<option disabled="" selected=""> -- Choose a singer -- </option>
<option  value="1">Toni</option>
<option  value="2">Jack</option>
<option value="3">James</option>        
</select>

其中 1,2,3 等将是 $artist_id 使用此代码生成

$singers = get_posts(
    array(
        'post_type'  => 'singers',
        'numberposts' => -1
    )
    );
    // Array of WP_User objects.
    foreach ( $singers as $singer ) {
        echo "<option  value='".esc_html( $singer->ID )."' >" . esc_html( $singer->singer_name ) . "</option>"; 
    }

当您需要检索艺术家详细信息时。 1.使用从post meta中获取艺术家/歌手ID get_post_meta ($booking_id, 'singer_id') 2. 使用歌手id获取歌手详细信息 get_post_meta ($singer_id, 'singer_gender')

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-04
    • 2013-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 2016-10-12
    相关资源
    最近更新 更多