1

ラジオボタンからどの選択肢が選択されたかをチェックし、同じ名前のファイルに書き込む次のPHPコードがあります。

たとえば、「instrument」と呼ばれるラジオボタングループから、4つの選択肢があります

  1. 文字列
  2. パーカッション
  3. ボーカル

ユーザーが「Wind」を選択すると、「 wind_instrument.txt 」というファイルが作成されて書き込まれます。「strings」を選択すると、ファイル「string_instrument.txt」などが作成されます。

これが私のPHPコードです:

if ($_POST['instrument'] == "wind")
{


$lines = file('wind_instrument.txt');
$fopen = fopen("wind_instrument.txt", "w+");

}

elseif ($_POST['instrument'] == "strings")
{

$lines = file('strings_instrument.txt');
$fopen = fopen("strings_instrument.txt", "w+");

}

elseif ($_POST['instrument'] == "percussion")
{

$lines = file('percussion_instrument.txt');
$fopen = fopen("percussion_instrument.txt", "w+");

}

elseif ($_POST['instrument'] == "vocal")
{

$lines = file('vocal_instrument.txt');
$fopen = fopen("vocal_instrument.txt", "w+");

}

ここで、条件の1つが満たされた場合、コードの次のステップに進みます。

fwrite($fopen, ("Instrument: ")."");
fwrite($fopen, $_POST["instrument"]."\n");
fwrite($fopen, ("<br>")."\n");

これに関して私が抱えている問題は、ファイルが作成されておらず、アクセス許可が設定されていることです。

どんな助けでも大歓迎です、ありがとう。

4

2 に答える 2

3

実際には、保守を容易にするためにリファクタリングを行うことができますが、それはあなたの問題ではありませんでしたが、私はあなたを助けようとします.

<?php
  $instruments = array('wind', 'strings', 'percussion', 'vocal');

  if (in_array($_POST['instrument'], $instruments))
  {
    $instrument = $_POST['instrument'];
    $file_handle = fopen($instrument.'_instrument.txt', 'a+');
    $line = 'Instrument: '.$instrument."\n";
    fwrite($file_handle, $line);
  }
?>

知っておくべき重要なことは、ファイルを開く方法です。モードa+を使用します。ドキュメントによると

読み取りおよび書き込み用に開きます。ファイルポインタをファイルの最後に置きます。ファイルが存在しない場合は、作成してみてください。

それが役立つことを願っています。

于 2012-05-30T15:12:31.893 に答える
2

ファイルを開いて書き込む権限があることを確認した場合は、条件に基づいて実行しても問題はありません。$_POSTの内容を確認し、それinstrumentが存在し、条件の 1 つを満たしていることを確認することをお勧めします。elseまたは、有効な手段が受信されなかった場合に送信をエラー ファイルに書き込む句を追加することもできます。それが機能する場合、問題は fopen/fwrite ではなく、POST された変数にあることが確認されます。

箇条書きリストで指定したオプションがラジオ ボタンのリテラル値である場合、問題はそれらが大文字であり、ifステートメントでテストする値がそうでないことです。それらを一貫して大文字にするか、strtolower()比較する前にすべてを一貫したケースに変換するために使用します。

于 2012-05-30T15:09:13.063 に答える