如何在HTML表单提交上调用PHP函数?

时间:2012-10-23 14:07:45

标签: php

我在将数据从表单发送到函数时遇到了一些麻烦

这是我的表格:

echo "<form id='AddCompany' action='' method=post>";
echo "<table>";
echo "<tr>";
            echo "<th colspan='2'>Opret nyt firma</th>";
            echo "</tr>";
            echo "<td>Firma Navn:<td><input type='text' name='Name' /></td>";
            echo "</td></tr>";
            echo "<td>Adresse:<td><input type='text' name='Address' /></td>";
            echo "</td></tr>";
            echo "<td>Postnr.:<td><input type='text' name='Zipcode' /></td>";
            echo "</td></tr>";
            echo "<td>By:<td><input type='text' name='City' /></td>";
            echo "</td></tr>";
            echo "<td>Land:<td><input type='text' name='Country' /></td>";
            echo "</td></tr>";
            echo "<td>Tlf:<td><input type='text' name='Phone' /></td>";
            echo "</td></tr>";
            echo "<td>Slogan:<td><input type='text' name='Slogan' /></td>";
            echo "</td></tr>";
            echo "<td>Catch All Email:<td><input type='text' name='Email' /></td>";
            echo "</td></tr>";
            echo "<td>Logo 1:<td><input type='FILE' name='Logo1' /></td>";
            echo "</td></tr>";
            echo "<td>Lille  Logo:<td><input type='FILE' name='SmallLogo' /></td>";
            echo "</td></tr>";
            echo "<td>Logo 2:<td><input type='FILE' name='Logo2' /></td>";
            echo "</td></tr>";
            echo "<td colspan='2'><input type='submit' value='Opret Firma' />";
            echo "</form>";
            echo "</td></tr>";
            echo "</tr>";
            echo "</table>";

我想将数据发送到此函数

function insertRecord ($fieldarray)
    {
        $this->errors = array();

        global $dbconnect, $query;
        $dbconnect = db_connect($this->dbname) or trigger_error("SQL", E_USER_ERROR);

        $fieldlist = $this->fieldlist;
        foreach ($fieldarray as $field => $fieldvalue) {
            if (!in_array($field, $fieldlist)) {
                unset ($fieldarray[$field]);
            } // if
        } // foreach

        $query = "INSERT INTO $this->tablename SET ";
        foreach ($fieldarray as $item => $value) {
            $query .= "$item='$value', ";
        } // foreach
        $query = rtrim($query, ', ');
        return;
    } // insertRecord

我刚刚意识到你可能还需要这段代码:

class Company extends Default_Table
{
    // additional class variables go here
    function __construct ()
    {
        $this->tablename       = 'Company';
        $this->dbname          = 'oop';
        $this->rows_per_page   = 15;
        $this->fieldlist       = array('ID', 'Name', 'Address','Zipcode','City','Country','Phone','Slogan','CatchAllEmail','Logo1','LogoSmall','Logo2');
        $this->fieldlist['ID'] = array('pkey' => 'y');
    } // __construct
} // Company

我应该在哪里调用该函数以及我应该随其发送哪些变量?

我已经尝试了onclick=insertRecord()似乎不起作用,我认为这是因为我需要插入一个变量,我认为该变量需要是一个表单数据的数组,因为声明了该函数用数组。

正如你所看到的,我对此非常温柔。

我发现了以下内容:

如果我在insertRecord函数中的foreach循环之后回显我的$查询,我会看到如下查询:     INSERT INTO公司SET Name ='1',Address ='2',Zipcode ='3',City ='4',Country ='5',Phone ='6',Slogan ='7',CatchAllEmail ='8 ',Logo1 ='',LogoSmall ='',Logo2 =''

然而,仍然没有插入任何东西,我在2台服务器上试过这个,并且我知道的用户有插入权限但是没有插入任何内容。

3 个答案:

答案 0 :(得分:1)

不需要使用功能,但你可以这样做,  从action =""移除<form>

然后检查,

    if($_POST){
     //your function logic
    // get variable data like 
      echo $_POST["Name"];
    }  

享受!

答案 1 :(得分:1)

请以最友好的方式进行此操作,我建议您选择一本书或阅读有关PHP / MySQL / HTML / JavaScript的教程。
我将尽力解释这一点,不超出本Q&amp; A网站的范围。

代码的第一部分中有一个PHP脚本echo的HTML表单,因此HTML表单现在位于客户端的浏览器中。

您正在尝试使用onclick=insertRecord()将用PHP编写的事件处理程序(服务器端)绑定到在浏览器(客户端)中触发的事件。

如何解决您的问题?

您需要POST此表单包含insertRecord()函数的PHP脚本。首先,您需要修改action中的<form>属性并将其指向具有此功能的.php脚本,然后您只需执行以下操作:

$cmpny = new Company();
$cmpny->insertRecord($_POST);

答案 2 :(得分:0)

您需要有一些方法将POST数据放入$ fieldarray。可能是一件简单的事情:

function insertRecord ($fieldarray) {
   //the function you have above
}

insertRecord($_POST);

当然这取决于insertRecord功能如何设置工作,以及它是否能够以您设置的方式识别所有POST数据。