在WordPress上,我们使用Gravity Forms来收集用户数据。我有时间有效或正确地显示结果,因此我可以操作它并创建客户列表页面。
我习惯于看到像这样的数据库:
1 |约翰| Doe | x | 12
但Gravity表格存储的数据如下:
1 | 8 | 3 |约翰
2 | 14 | 3 | DOE
当然有几个field_numbers与名字,姓氏,地址,电话等相对应,但我没有列出它们。
所以我想做的就是运行一个SELECT语句并显示结果很好并且组织如下:
John Doe(需要在循环中彼此相邻排列的两个字段)
地址(当然我可以在循环中放置一个中断) 等
我道歉但我没有以这种方式提取数据,我甚至不知道它叫什么。
下面的代码是显示事物的微弱尝试,但我知道它必须是完全低效和不正确的。提取数据的正确方法是什么?这种类型的存储被称为什么(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;
}
}
答案 0 :(得分:0)
不幸的是,我没有为您提供干净的解决方案,除了真正的邪恶之外,我不知道这种存储形式是什么。也就是说,我认为已经过了几个小时没有回复,你可能会欣赏一些新的想法作为可能的试验途径。我在这里包括2条思路,它们应该与其他数据的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;