如何 - 如果满足条件,则将选择写入文件


How to - if condition is met, then write selection to file

我有以下PHP代码,用于检查从单选按钮中选择哪个选项,然后写入同名文件。

例如,来自名为"instrument"的单选按钮组,其中 4 个选项是

  1. 字符串
  2. 击发
  3. 声乐

如果用户选择"Wind",那么它将创建并写入名为"wind_instrument.txt"的文件。如果选择"字符串",它将创建文件"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+");
}

现在,如果满足其中一个条件,则将继续执行代码中的下一步,即:

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

遇到的问题是它没有创建文件,而且我确实设置了权限。

任何帮助将不胜感激,谢谢。

您实际上可以进行一些重构以使其更易于维护,但这不是您的问题,但我会尽力帮助您。

<?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+。文件说

打开以进行读取和写入;将文件指针放在文件的末尾。如果该文件不存在,请尝试创建它。

希望有帮助。

如果您已验证您有权打开和写入文件,那么基于条件执行此操作应该没有问题。我建议检查$_POST的内容,并确保instrument存在并符合您的条件之一。或者,您可以添加一个 else 子句,如果未收到有效的仪器,该子句会将提交写入错误文件。如果这有效,它将确认问题出在 POSTed 变量上,而不是 fopen/fwrite 上。

如果您在项目符号列表中提供的选项是单选按钮的文本值,那么您的问题是它们是大写的,而您在 if 语句中测试的值不是大写的。要么一致地将它们大写,要么在比较之前使用 strtolower() 将所有内容转换为一致的大小写。