2

ユーザーが記入するフォームを作成しました。送信すると、フォームが処理され、処理が完了します。通常は単なるデータベースクエリです。

私が使用しているデータベースでは、一部のフィールドがNULLになる可能性があるため、ユーザーは一部のフィールドに空白のままにすることができます。ただし、これをテストするときに、1つ以上のフィールドを空にしてみましたが、フォームは実際には何も送信しませんでした。デバッグ中、POSTメソッドから値を取得すると、フィールドのほとんどすべての値(テキストが含まれているものも含む)がNULLになります。

重要なのは、完全に必要というわけではないので、ユーザーがいくつかのフィールドを空白にしてフォームを送信できるようにする必要があるということです。どうすればいいですか?

isset()で空白になる可能性のあるものすべてをチェックし、空白の場合はNULLに設定する必要がありますか?

前もって感謝します!

編集:これがフォームコードです。

    <form onsubmit="return confirm('Are you sure you want to save the edits?');" method="post" action="orgedit.php?id=<?php echo $organization_id?>" id="orgform" name="orgform" >
Parent Organization ID: <input type="text" name="parent_id" value="<?php echo $row['parent_id']; ?>"/> <br /><br />
Organization nm: <input type="text" name="org_nm" value="<?php echo $row['org_nm']; ?>"/> <br /><br />
TBR Organization Sysnm: <input type="text" name="tbr_sysnm" value="<?php echo $row['tbr_sysnm']; ?>"/> <br /><br />
Type: <input type="text" name="type" value="<?php echo $row['type']; ?>"/> <br /><br />
Contact nm: <input type="text" name="contact_nm" value="<?php echo $row['contact_nm']; ?>"/> <br /><br />
Financial Info: <input type="text" name="financial_info" value="<?php echo $row['financial_info']; ?>"/> <br /><br />
Other Info: <input type="text" name="other_info" value="<?php echo $row['other_info']; ?>"/> <br /><br />
Active: <input type="text" name="active" value="<?php echo $row['active']; ?>"/> <br /><br />
URL: <input type="text" name="url" value="<?php echo $row['url']; ?>"/> <br /><br />
<input type="submit" value="Save Entry" name="save" />
</form>

そしてここにphp処理コードがあります:)

if(isset($_GET['id']))
    {
    $organization_id = $_GET['id'];
    $parent_organization_id = $_POST['parent_organization_id'];
    $organization_nm = $_POST['organization_nm'];
    $tbr_organization_sysnm = $_POST['tbr_organization_sysnm'];
    $type = $_POST['type'];
    $contact_nm = $_POST['contact_nm'];
    $financial_info = $_POST['financial_info'];
    $other_info = $_POST['other_info'];
    $active = $_POST['active'];
    $url = $_POST['url'];

値を取得したら、それらをエスケープしてクエリを実行します。

私は問題を理解しました!

if(isset($_GET['id']))
    {
    $organization_id = $_GET['id'];
    $parent_organization_id = $_POST['parent_id'];
    $organization_nm = $_POST['org_nm'];
    $tbr_organization_sysnm = $_POST['tbr_sysnm'];
    $type = $_POST['type'];
    $contact_nm = $_POST['contact_nm'];
    $financial_info = $_POST['financial_info'];
    $other_info = $_POST['other_info'];
    $active = $_POST['active'];
    $url = $_POST['url'];

フォームから間違った値を取得していました。これは、phpコードまたはhtmlコードを変更することで修正できた可能性があります。

問題は、1つ以上のフィールドが空の問題がまだ続くことです。フィールドの1つが空白の場合、エントリは保存されません。ログを確認したところ、出力されたメッセージは次のとおりです。

PHP Notice: Undefined index: parent_id
PHP Notice: Undefined index: org_nm
PHP Notice: Undefined index: tbr_sysnm

これは、これらのフィールドのいずれにも何も書き込まず、フォームを保存しようとしたときに発生します。

編集2:問題はもう一度修正されました。var dumpを実行し、コードが値を取得しようとしたときにサーバーが何も出力していないことを確認しました。いくつかの分野でのスペルミスでした。

4

1 に答える 1

2

私の最初の推測は次のようになります:

おそらく、フォーム入力にはname属性がありません。入力データは、入力にname属性があり、PHP$_POSTキーが属性の名前になる場合にのみ送信されます。

OPのコードを見て、私の推測が正しいかどうかを確認しましょう。

于 2012-10-04T13:32:41.193 に答える