我正在尝试用html创建一个表单,它有一个组合框和一个从SQL表自动创建的列表。我已经设法在课堂上制作了一个集成的组合框,在这里我使用了所有的数据库语句。但是,如何在另一个编写表单的位置使用代码?我还在学习php,这对我来说有点新鲜,所以我希望我的问题能清楚地理解。
代码:
class Lesdb
{
private static $lesdbInstantie = null;
private $dbh;
private function __construct($server, $username, $password, $database)
{
try
{
$this->dbh = new PDO("mysql:host=$server; dbname=$database", $username, $password);
//Bij error: exception opwerpen
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch (PDOException $e)
{
die($e->getMessage());
}
}
public static function getLesdbInstantie($server, $username, $password, $database)
{
if(is_null(self::$lesdbInstantie))
{
self::$lesdbInstantie = new Lesdb($server, $username, $password, $database);
}
return self::$lesdbInstantie;
}
public function testComboBox()
{
echo "<h1> ComboBox functienamen </h1>";
$sql = "SELECT DISTINCT ftienaam FROM werknemers";
$stmt = $this->dbh->prepare($sql);
$stmt->execute();
$dropdown = "<select name='ftienaam'>";
foreach ($stmt as $row)
{
$dropdown .= "'r'n<option value='{$row['ftienaam']}'>{$row['ftienaam']}</option>";
}
$dropdown .= "'r'n</select>";
echo $dropdown;
}
}
?>
函数TestCombobox确实有效,但它应该在我的表单中实现,该表单不在类Lesdb中。示例:
function ShowForm()
{
?>
<form action="Index.php?actie=zoekInLijst" method=post>
<label for=ComboBox>ComboBox</label>
<select name = "the_name">
<option value="name">SQL STATEMENTS
</select>
</form>
<?php
}
因此,我只想在我的表单中从类Lesdb中调用函数testComboBox。
您必须创建该类的一个新实例。然后,您必须在该实例上加载函数。
不要忘记将类包含在文件的顶部。
$theLesDB = new Lesdb();
$theLesDB->testComboBox();
假设你的类在一个文件中,我们称之为Lesdb.php,而你的表单在另一个文件(例如form.php)中,那么你必须将你的类包括在表单文件中(就在顶部,在其他代码之前),
include_once "<PATH_TO_YOUR_FILE>'Lesdb.php";
创建一个类的实例(在您想要使用该实例的地方),
Lesdb db = new Lesdb();
并在ShowForm函数中使用该函数。
db->testComboBox();