在WordPress上,我们使用Gravity Forms来收集用户数据。我有时间高效或正确地显示结果,这样我就可以操作它并创建一个客户端列表页面。
我习惯于看到这样的数据库:
id | firstname | lastname | etc.| form_id
1|John|Doe|x|12
但是Gravity表单存储的数据是这样的:
id|field_number|form_id|value
1|8|3|John
2|14|3|Doe
当然,有几个字段编号与名字、姓氏、地址、电话等相对应,但我没有列出它们。
所以我想做的就是运行一个SELECT语句,并显示良好且有组织的结果,比如:
John Doe(需要在循环中相邻排列2个字段)
地址(当然,我可以在循环中放入
来中断)等
我很抱歉,但我没有用这种方式提取数据,我甚至不知道它叫什么。
我下面的代码是一个很弱的显示尝试,但我知道它必须是完全低效和不正确的。提取数据的正确方法是什么?这种类型的存储被称为什么(Gravity Forms的方法)?
global $wpdb;
$rows = $wpdb->get_results( "SELECT form_id, value, field_number FROM
wp_rg_lead_detail WHERE form_id=3" );
foreach( $rows as $row ) {
if($row->field_number==1) {
echo $row->value;
}
if($row->field_number==8) {
echo $row->value;
}
}
不幸的是,我没有一个干净的解决方案,我不知道这种形式的存储被称为什么,除了真正的邪恶。也就是说,我想,考虑到已经有几个小时没有回应了,你可能会欣赏一些新想法作为可能的实验途径。我在这里包括了两条思路,它们应该与MOD一起工作,用于您的其余数据,尽管仍然很恶心。祝你好运
select distinct
f.form_id,
concat(first.val, ' ', last.val) as name
from
form f
inner join
(select f1.form_id, f1.val from form f1 where f1.field_number = 8) as first
on f.form_id = first.form_id
inner join
(select f2.form_id, f2.val from form f2 where f2.field_number = 14) as last
on f.form_id = last.form_id
where f.form_id = 3;
select distinct
f.form_id,
n.name
from
form f
inner join
(select
form_id,
group_concat(distinct val order by field_number asc separator ' ') as name
from
form
where
field_number = 8
or field_number = 14
group by form_id) n
on f.form_id = n.form_id
where f.form_id = 3;