Php Wordpress查询formcraft表回显字段到屏幕
第一次使用Php Wordpress查询formcraft表回显字段到屏幕,php,wordpress,Php,Wordpress,第一次使用Wordpress。我希望从formcraft表中随机获得一行,这样我就可以在一个页面上发布一组注册中的抽签结果 我想从formcraft表中获取的内容如下存储在content列中,该列位于wp\u formcraft\u 3\u submissions表中: [ {\"label\":\"Name\",\"value\":\"Annette\",\"identifier\":\"field1\",\"type\":\"oneLineText\",\"page\":1,\"page_n
Wordpress
。我希望从formcraft
表中随机获得一行,这样我就可以在一个页面上发布一组注册中的抽签结果
我想从formcraft
表中获取的内容如下存储在content
列中,该列位于wp\u formcraft\u 3\u submissions
表中:
[
{\"label\":\"Name\",\"value\":\"Annette\",\"identifier\":\"field1\",\"type\":\"oneLineText\",\"page\":1,\"page_name\":\"Step 1\",\"width\":\"100%\",\"altLabel\":\"Name\"},
{\"label\":\"Company Name\",\"value\":\"My Co \",\"identifier\":\"field3\",\"type\":\"oneLineText\",\"page\":1,\"page_name\":\"Step 1\",\"width\":\"100%\",\"altLabel\":\"Company Name\"},
{\"label\":\"Email\",\"value\":\"annette@email.com\",\"identifier\":\"field6\",\"type\":\"email\",\"page\":1,\"page_name\":\"Step 1\",\"width\":\"100%\",\"altLabel\":\"Email\"}
]
我试图随机抽取一行,然后发布名称
,公司名称
我被卡住了,wordpress
没有记录任何错误,尽管我已经打开了错误记录。我是通过一个快捷码来实现这一点的。首先,我想回显屏幕上的内容,但最终只回显这三个字段
function wa_awards_winner() {
global $wpdb;
$sql = $wpdb->query("
SELECT *
FROM wp_formcraft_3_submissions
ORDER BY RAND()
LIMIT 1
");
$result = $wpdb->get_results( $sql );
if ( ! $result ) { return false; }
$winner = json_encode($result[0]->content);
echo $winner;
}
add_shortcode( 'get_wa_awards_winner', 'wa_awards_winner' );
直到我试图得到这些值,但它不起作用:
// NAME
echo '<h3 class="col">' . $winner[0][0] . '</h3>';
// COMPANY NAME
echo '<h3 class="col">' . $winner[1][0] . '</h3>';
// EMAIL
echo '<h3 class="col">' . $winner[2][0] . '</h3>';
这是由于以下建议:
$sql = "
SELECT *
FROM wp_formcraft_3_submissions
ORDER BY RAND()
LIMIT 1
";
$result = $wpdb->get_results( $sql );
然后,我尝试访问以下信息:
$winner = json_decode(stripslashes($result[0]->content),true);
echo var_dump($winner);
echo '<h3 style="color: white;">NAME: ' . $winner[0]["Name"] . '</h3>';
echo '<h3 style="color: white;">COMPANY: ' . $winner[1]["Company Name"] . '</h3>';
echo '<h3 style="color: white;">EMAIL: ' . $winner[2]["Email"] . '</h3>';
但我的变量返回为空:
NAME:
COMPANY NAME:
EMAIL:
首先,您需要进行“stripslashing”,并将给定的字符串转换为JSON数据。然后你需要解码,而不是编码
这是:
$winner = json_decode(stripslashes($result[0]->content),true);
echo $winner[0]["value"];
还有一件事$wpdb->query不能在get\u结果中使用。取下这些,改用这个
$sql = "
SELECT *
FROM wp_formcraft_3_submissions
ORDER BY RAND()
LIMIT 1
";
$result = $wpdb->get_results( $sql );
嗨@Elvin Haci,请看我的更新。谢谢你的建议。你确定你的SQL查询是正确的吗?f、 表名应该是wp_formcraft_3_submissions,但您编写了wp_formcraft_3_表单。如果这也没有帮助,尝试var_dump($result);看看它打印了什么。哦,复制粘贴错误,修复了我的问题。是的,表名是正确的。我可以使用MySQLWorkbench
查看表中的一行;请告诉我打印的是什么。(在$result=$wpdb->get_results($sql);)之后,我注意到了另一个错误,这就是代码无法工作的原因。我已经更新了我的答案,检查iTunesdefined offset并尝试获取属性意味着您的$result
变量不是您所期望的。为了便于调试,请将它移到您的快捷码之外,并使用var_dump()
Man,我爱Laravel!这是一个全新的世界。如何将变量移出快捷码?对于您在WP下执行的所有未来任务,您可以通过以下方式轻松调试:1)在当前(活动)主题文件夹中创建一个文件,例如mytestpage.php 2)将此注释放在文件模板名称:我的测试页面(这是一个php注释,因此带有//或/**/)3)将您喜欢的任何代码放入该文件中,例如echo'hello world'代码>4)进入管理面板,创建新页面并选择模板我的测试页面5)访问pageHi@GMarco,谢谢。伟大的建议
NAME:
COMPANY NAME:
EMAIL:
$winner = json_decode(stripslashes($result[0]->content),true);
echo $winner[0]["value"];
$sql = "
SELECT *
FROM wp_formcraft_3_submissions
ORDER BY RAND()
LIMIT 1
";
$result = $wpdb->get_results( $sql );