空输入类型未在html中发布

时间:2013-03-09 01:23:56

标签: php html post input

我创建了一个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)调用有关?)

1 个答案:

答案 0 :(得分:0)

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

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

只需在表单标记中加入onsubmit="return validateForm()"