0

我创建了一个 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 列(名称、链接、描述),我填写顶部 2 而不是底部,查询生成如下......

QUERY=INSERT INTO LinksWebsites(name,link) VALUES (blah,blah,) 

如您所见,查询缺少列(名称,链接,描述),但是如果您看一下帖子,那会很奇怪...

POST =Array ( [column] => Array ( [name] => blah [link] => blah [description] => ) [tablename] => LinksWebsites )

它显示了所有的键,但是我提取键的 PHP 方法没有显示所有的键!(可能与 current($array) 和 key($array) 调用有关?)

4

1 回答 1

0

尝试在您的html中放置一个 java 脚本,您将在其中放置文本输入不能为空的 php 函数,然后再尝试提交它。

    <script>
    function validateForm()
    {
    if (inputbox==null || inputbox=="")
    {alert("Input should not be empty");
    return false; 
    }
    }
    </script>

只需onsubmit="return validateForm()"在表单标签中包含。

于 2013-12-18T08:39:25.073 回答