-1

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

这是我的表格:

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 循环之后回显我的 $query,我会看到如下查询: INSERT INTO Company SET Name='1', Address='2', Zipcode='3', City='4', Country ='5',电话='6',口号='7',CatchAllEmail='8',Logo1='',LogoSmall='',Logo2=''

但是仍然没有插入任何内容,我已经在 2 台服务器上尝试过此操作,并且我知道用户具有插入权限,但是没有插入任何内容。

4

3 回答 3

1

请以最友好的方式接受这一点,我建议您拿起一本书或阅读有关 PHP/MySQL/HTML/JavaScript 的教程。
在不超出本问答网站范围的情况下,我会尽力解释这一点。

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

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

如何解决您的问题?

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

$cmpny = new Company();
$cmpny->insertRecord($_POST);
于 2012-10-23T14:22:05.430 回答
1

无需使用功能,但您可以这样做,action =""<form>.

然后检查,

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

享受!

于 2012-10-23T14:15:39.450 回答
0

您需要有某种方法将您的 POST 数据放入 $fieldarray。可能很简单:

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

insertRecord($_POST);

当然,这取决于 insertRecord 函数的设置方式以及它是否会以您设置的方式识别所有 POST 数据。

于 2012-10-23T14:16:49.040 回答