ユーザーが記入するフォームを作成しました。送信すると、フォームが処理され、処理が完了します。通常は単なるデータベースクエリです。
私が使用しているデータベースでは、一部のフィールドが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を実行し、コードが値を取得しようとしたときにサーバーが何も出力していないことを確認しました。いくつかの分野でのスペルミスでした。