0

i フォームを作成するときは、次のようにします。

<form name="form-name" method="post" action="?<?=$_SERVER['QUERY_STRING']?>">
    [...some elements...]
    <input type="submit" name="form-name" value="button">
</form>

name=""ここで、実際の ではなく、送信ボタンのの値を取得する必要がありますvalue=""。この場合:「フォーム名」。

その理由は次のとおり
です。フォームを送信するとき。アクションをデータベースに書き込みます。そのため、送信されたフォームの名前が必要です。

フォーム名の非表示フィールドを作成できることはわかっています。しかし、テンプレート システムを機能させるために作成するすべてのフォームに追加する必要がある他の非表示のフォーム要素がいくつかあるため、送信ボタンから名前を抽出するだけで簡単にしたいと思います。

そして、javascriptはありません...

4

2 に答える 2

1

したがって、HTML フォームが次のようになっているとします。

<form name="form-name" method="post" action="">
    <input type="submit" name="form-name" value="button">
</form>

name="form-name"この場合、中身を取得したいのはform-name

さて、PHP 側では、$_POSTグローバルを連想配列として扱い、次のようにキーを抽出できます。

<?php

  if(isset($_POST)){

  foreach($_POST as $key=>$each){
    echo $key; // this will output "form-name"
  } 
}
于 2013-06-12T00:11:59.923 に答える
0

私は私の質問に対する解決策を思いついたかもしれません...

フォームの例を次に示します。

<form name="vehicle-vinNr" method="post" action="?<?=$_SERVER['QUERY_STRING']?>">
    <input type="hidden" name="hello" value="world" readonly>
    <input type="text" name="element">
    <input type="submit" name="vehicle-vinNr" value="send">
</form>

まず、要素名を抽出して新しい配列に配置する必要があります。

<?php
if ($_POST){
    foreach($_POST as $_FORM_ELEMENT_name => $_FORM_ELEMENT_value){
        $_FORM_ELEMENT_names[] = $_FORM_ELEMENT_name;
    }
}
?>

この場合、配列には以下が含まれます。

hello
element
vehicle-vinNr

送信ボタンが常にフォームの最後の要素である場合、これは機能します。

$_FORM_name = end($_FORM_ELEMENT_names);  //  vehicle-vinNr

ただし、送信ボタンが最後の要素ではない場合があるため、変更を加える必要がありました。

送信ボタンの名前を常にsubmit_-たとえば、または/submit__vehicle-vinNrのようなさまざまなアクションの複数の送信ボタンで始める場合、これを行うことができます:submit_update__vehicle-vinNrsubmit_delete_vehicle-vinNr

if ($_POST){
    foreach($_POST as $_FORM_ELEMENT_name => $_FORM_ELEMENT_value){     
        if(strstr($_FORM_ELEMENT_name,'submit_')){
            $_FORM_ELEMENT_submit_name = explode('__',$_FORM_ELEMENT_name);
            $_FORM_name = $_FORM_ELEMENT_submit_name[1];  //  vehicle-vinNr
        }
    }
}

これが私が思いついた解決策です - 何か考えはありますか?

于 2013-06-12T01:45:12.763 に答える