-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'、Phone='6'、Slogan='7'、CatchAllEmail='8'、Logo1=''、LogoSmall=''、Logo2=''

しかし、まだ何も挿入されていません.2つのサーバーでこれを試しましたが、挿入権限があることがわかっているユーザーと一緒に試しましたが、何も挿入されていません.

4

3 に答える 3

1

関数を使用する必要はありませんが、のように、action ="" から削除することができます<form>

次に、次のように確認します。

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

楽しみ!

于 2012-10-23T14:15:39.450 に答える
1

本を手に取るか、PHP/MySQL/HTML/JavaScript に関するチュートリアルを読むことをお勧めします。
これについては、この Q&A サイトの範囲から逸脱することなく説明できるよう最善を尽くします。

コードの最初の部分にあるのはecho、PHP スクリプトによって編集された HTML フォームであるため、HTML フォームはクライアントのブラウザーに表示されます。

あなたがしようとしているonclick=insertRecord()のは、PHP (サーバー側) で記述されたイベント ハンドラーを、ブラウザー (クライアント側) で発生したイベントにバインドすることです。

あなたの問題を解決する方法?

POST関数を含む PHP スクリプトに対してこのフォームを作成する必要がありinsertRecord()ます。まずaction、あなたの属性を変更し、この関数を持つスクリプトを<form>指すようにする必要があり.phpます。次に、次のようにします。

$cmpny = new Company();
$cmpny->insertRecord($_POST);
于 2012-10-23T14:22:05.430 に答える
0

$fieldarray に POST データを取得する何らかの方法が必要です。次のような単純なものになる可能性があります。

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

insertRecord($_POST);

もちろん、これは、insertRecord 関数がどのように機能するように設定されているか、および設定した方法ですべての POST データを認識できるかどうかによって異なります。

于 2012-10-23T14:16:49.040 に答える