我目前正在尝试创建一个带有下拉列表和提交按钮的表单的 mediawiki 扩展。在这种形式中,我想在下拉列表中读取我所有的数据库对象(表)。如果我将它作为单个 php 脚本运行,它可以正常工作,并且它具有以下语法。
<?php
...
$stid = oci_parse($conn,$query);
oci_execute($stid);
?>
//Form
<form method="get" action="generateScript.php">
<select name="getTable">
</form>
<?php
while ($row = oci_fetch_array($stid)) {
echo "<option value=".$row[0].">".$row[0];
}
...
对于 mediawiki 扩展,您必须将其放入函数中并使用 mediawiki 核心全局变量进行输出。
因此,我创建了 3 个函数:
1 个功能 - 建立与数据库服务器的连接
2 函数 - 执行我的 SQL 查询并在数组中返回结果:
public function readData () {
global $wgOracleUser;
//@$_SESSION['getTable'] = $getTableValue;
$ora_conn = $this -> getConnect ();
$schema_name = strtoupper($wgOracleUser);
$stid = oci_parse($this -> getConnect()," SELECT table_name
FROM dba_tables
WHERE owner ='" .$schema_name ."'
ORDER BY table_name");
if(!$ora_conn) {
return "No connection";
}
else {
oci_execute($stid);
while ($row = oci_fetch_array($stid)) {
//fetches into an array
$values[] = $row;
return $values;
//echo var_dump($values);
}
//Close Oracle connection
oci_close($ora_conn);
}
}
3 功能 - 显示带有下拉列表的 mediawiki html-form 并提交:
function showForm() {
global $wgScript, $wgOut;
$msgTabList = $this -> readData();
$wgOut->addHTML('
<tr style="margin-top: 2em">
<td align="right">' . $msgSelTable . '</td>
<td> <select name="formTables"> <option value="">'.$msgTabList.'</option>
</select></td>
</tr>
<tr style="margin-top: 2em">
<td align="right"></td>
<td style="padding-top: 1em" align="right">
<input type="submit" name="Generate wiki script" ' .
'value="' . $msgSubmitButton . '" />
</td>
</tr> :);
在 3 函数内,我尝试调用第二个函数,而我的服务器向我抛出错误“数组到字符串转换”
如何让我的数组值显示在下拉列表中?还是有另一种方式在表单中显示它?
我将不胜感激任何帮助。