私は今のところ間違った道を進んでいるかもしれませんが(疲れています..)、コードをデバッグするのに4時間かそれに似たものを渡しました。ラジオボタンをクリックすると自動送信されるフォームがあり、クリックすると次のフォームが表示され、顧客情報を入力できます。しかし、他のフォームを表示するためにページをリロードすると、変数 $CustomerType が設定され、正しくなり、入力フォーム (2 番目のフォーム) を完了すると、php はその中のすべてが正しいように見えるかどうかをチェックしますが、私の変数と表示されます。 $CustomerType が見つからない場合は、ページをリロードして、タイプを設定するようにもう一度尋ねてください。
すべてのコードをここに貼り付けることはできませんが (~300 行)、コアは次のとおりです。
<?php $_POST['CustomerType']="SOMEONE"; ?> // Ok so this was the trick, it solved the main bug but it now fix my choice to SOMEONE only. Can't change to another type
<form method="post" action="<?php echo escaped_html($_SERVER['PHP_SELF'],'URL');?>">
<?php
$array=show_enum("customer", "CustomerType");
$checked="";
foreach($array as $CustomerType)
{
$checked="";
if(isset($_POST['CustomerType']))
{
if($_POST['CustomerType']==$CustomerType) $checked="checked";
}
echo "<input type='radio' name='CustomerType' value=".$CustomerType." ".$checked." onClick='this.form.submit()'>".$CustomerType."</input>";
}
?> </form>
編集OK、いくつかのニュースがあります: だったトップを変更して:<?php $_POST['CustomerType']="SOMEONE"; ?>
に
if(!isset($_POST['CustomerType'])) $_POST['CustomerType']="SOMEONE";
フォームの 2 番目の問題 (タイプを変更できなかった (SOMEONE への自動ロールバック)) が解決されたようです。しかし今、フォームを送信すると、私の選択は常に [CustomerType] => SOMEBODY ではなく SOMEONE にロールバックされます (そして、SOMEBODY をチェックしました)。
これは、送信するページのリロード時に値 $_POST['CustomerType'] を保持できないことを意味します。
例: onsubmitの代わりに「保存」ボタンで送信されていることを除いて、同じように見えるこれは正常に機能しています。
$array=show_enum("customer", "Language");
foreach($array as $Language)
{
$checked="";
if(isset($_POST['Language']))
{
if($_POST['Language']==$Language) $checked="checked";
}
else if($Language=="FR") $checked="checked";
echo "<input type='radio' name='Language' value=".$Language." ".$checked." />";
string2languagepic($Language);
}
問題の図*OnSubmit = onClick='this.form.submit()