我的目标是有两种方法来过滤显示的数据。第一个是显示多少天。另一个允许用户选择要显示的组。他们应该彼此独立工作。但也是串联,为组NSV选择20天后,仅显示具有两个标准的记录。但是为所有团体选择20天后也是如此。
第一个下拉菜单是一个简单的HTML选择/选项设置,在屏幕上显示为“显示10天后”。 另一个在页面上被视为“所有组”,并且是从MySQL表创建的。要做到这一点,我有这个功能;
function GroupSelect() {
$g_query = "SELECT DISTINCT b.g_code, concat(b.g_code, ' ', b.g_name) as theGroups FROM skeds AS a, Groups AS b
WHERE a.g_code = b.g_code
ORDER BY b.g_name"; //echo $g_query;
foreach($db_found->query($g_query) as $g_row) {
$bg_code = $g_row['g_code'];
$theGroups = $g_row['theGroups'];
$theGroupsSelect .= "<option value=\"$bg_code\">".$theGroups."</option>";
}
echo $theGroupsSelect;
} // End GroupSelect
此功能或至少查询工作正常,并从表中选择正确的记录。和语句是HTML格式。
我想要在选择“过滤器”按钮时运行其中一个/或两个。两个下拉列表都在相同的DIV标记(selectDIV)中,并且都使用相同的名称为“过滤器”。更改两个下拉菜单中的任何一个,然后单击“过滤器”将导致显示更改。
对GroupSelect函数的调用在第434行附近出现,看起来像这样;
问题在于我将PDO数据库分配放在哪里,在'GroupSelect'函数中或在'buildlist'页面的主函数中我得到致命错误。唯一的区别在于它指向导致它们的代码。
致命错误:在第12行的/ / arhab / hab_launch_list_new.php中的非对象上调用成员函数query()
所以我的第一个问题是放置PDO数据库的位置,以便它适用于这两个函数。我已经在两个函数中单独尝试过,也在两个函数之上。无论我把它放在哪里,我都会得到上面的致命错误,只有行号发生变化。
我认为我的问题与不了解如何使用PDO提取两组信息有关。它们都在相同的MySQL数据库中,并且都使用“skeds”表。但是,较大的函数也使用另外两个表。我还尝试将GroupSelect函数单独放在自己的文件中,并使用require_once调用它。但是这个概念也存在问题。
我仍在尝试学习用PHP做事的最佳方式,但我真的没有任何本地人可以问。如果你有时间,请看一看并告诉我这段代码出了什么问题。
是的,我知道GroupSelect()函数目前已被注释掉。这是给您整体感觉页面的唯一方法。 经验告诉我你们有些人会批评我写这个问题的方式,其他因为我忘了一些细节,请善待,我会尽力回答所有问题。
提前谢谢你!
答案 0 :(得分:3)
$db_found
未定义,您可以在该函数内创建新连接:
function GroupSelect() {
$db_found = new PDO('mysql:host=localhost;dbname=test', 'userName','Password'
array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
//.......
}
或将其作为参数传递:
function GroupSelect($db_found) {....}
您也可以将其设为属性并访问它$this->db_found