我在将数据从表单发送到函数时遇到了一些麻烦
这是我的表格:
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台服务器上试过这个,并且我知道的用户有插入权限但是没有插入任何内容。
答案 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数据。