我创建了一个PHP函数,它将为数据库中的任何表创建一个表单。此功能允许您指定表的名称以及html表单中所需的所有列的列表。如果用户为文本输入添加内容,则一切都很有效。如果他们不这样做,那么在尝试检索列名时会发生奇怪的事情。请参阅下面的功能...
function generateSubmissionFromTable($db, $tablename, $rowstoinclude,$action)
{
$query = 'SHOW COLUMNS from '.$tablename;
$colsresult = mysql_query($query,$db);
$table = array();
while($row = mysql_fetch_array($colsresult))
{
array_push($table,$row[0]);
}
$finalcolumns = array();
foreach($table as $row)
{
foreach($rowstoinclude as $inc)
{
if($row == $inc)
{
array_push($finalcolumns,$row);
}
}
}
echo '<form name="loginy" method="post" action="'.$action.'">';
foreach($finalcolumns as $column)
{
echo 'Please enter the '.$column.'<br/>';
echo '<input type=text name=column['.$column.'] value="blah"/><br/>';
}
echo '<input type="hidden" name="tablename" value="'.$tablename.'" />';
echo '<button type="button" size="4" style="font-size:35px;" onClick="document.loginy.submit()">Submit</button>';
echo '</form>';
}
现在,出现了奇怪的部分...我有另一个函数将根据自动表单生成生成查询语句。
function submitDataToTable($post)
{
$query = 'INSERT INTO '.$post['tablename'].'(';
$buf = "";
while($col = current($post['column']))
{
$query = $query.$buf.key($post['column']);
$buf=",";
next($post['column']);
}
$buf = "";
$query = $query.') VALUES (';
foreach($post['column'] as $val)
{
$query = $query.$buf.$val;
$buf = ",";
}
$query = $query.')';
echo 'QUERY='.$query;
}
现在举个例子我有一个表,我想输入3列(名称,链接,descritpion),我填写前2而不是底部,查询生成为...
QUERY=INSERT INTO LinksWebsites(name,link) VALUES (blah,blah,)
正如您所看到的,查询缺少列(名称,链接,descritption),但如果您查看帖子,那会有什么奇怪...
POST =Array ( [column] => Array ( [name] => blah [link] => blah [description] => ) [tablename] => LinksWebsites )
显示所有键,但我提取键的PHP方法没有显示所有键! (可能与当前($ array)和key($ array)调用有关?)
答案 0 :(得分:0)
尝试在您的 html 中放置一个java脚本,您将在尝试提交之前放置文本输入不能为空的php函数。
<script>
function validateForm()
{
if (inputbox==null || inputbox=="")
{alert("Input should not be empty");
return false;
}
}
</script>
只需在表单标记中加入onsubmit="return validateForm()"
。