Несколько операторов if для нескольких переменных

Решение найдено! Спасибо!


Вот решение, я должен был создать оператор IF для каждого из $_POST переменные.


Оригинальный вопрос

Итак, у меня есть HTML-форма, которая при отправке моего PHP-файла добавляет данные в новый файл, в чем заключается моя проблема в моих операторах if. Вот мой текущий код;

HTML (форма)

<form id="msform" action="result.php" method="post">
<!-- progressbar -->
<ul id="progressbar">
<li class="active">Basic Details</li>
<li>Server Options</li>
<li>Final Touches</li>
</ul>
<!-- fieldsets -->
<fieldset>
<h2 class="fs-title">Add some basic details...</h2>
<h3 class="fs-subtitle">This is step 1</h3>
<input type="text" name="levelName" placeholder="Level Name" />
<input type="text" name="messageOFTD" placeholder="Message of The Day" />
<input type="text" name="port" placeholder="Server Port (Default is 25565)" />
<input type="button" name="next" class="next action-button" value="Next" />
</fieldset>
<fieldset>
<h2 class="fs-title">Customize your server...</h2>
<label for="players">Max No. of Players</label>
<input type="text" name="maxPlayers" placeholder="Maximum No. of Players" />
<label for="select">Default Gamemode</label>
<select value="select" name="defaultGamemode">
<option value="SURVIVAL" name="survival">Survival</option>
<option value="CREATIVE" name="creative">Creative</option>
<option value="ADVENTURE" name="adventure">Adventure</option>
<option value="SPECTATOR" name="spectator">Spectator</option>
</select>
<p>Force Gamemode</p>
<input type="checkbox" name="gplus" />
<p>Difficulty</p>
<select value="select">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<p>Allow Flight</p>
<input type="checkbox" name="allowFlight" />
<p>Enable PvP</p>
<input type="checkbox" name="gplus" />
<p>Enable Command Blocks</p>
<input type="checkbox" name="gplus"  />
<p>Spawn Animals</p>
<input type="checkbox" name="gplus"  />
<p>Spawn NPC's</p>
<input type="checkbox" name="gplus" />
<p>Spawn Monsters</p>
<input type="checkbox" name="gplus" />

<p>Hardcore Mode</p>
<input type="checkbox" name="gplus" />

<p>Allow Nether</p>
<input type="checkbox" name="gplus" />

<p>Generate Structures</p>
<input type="checkbox" name="gplus" />
<p>Announce Achievements</p>
<input type="checkbox" name="gplus" /><input type="button" name="previous" class="previous action-button" value="Previous" />
<input type="button" name="next" class="next action-button" value="Next" />
</fieldset>
<fieldset>
<h2 class="fs-title">A few more settings</h2>
<h3 class="fs-subtitle">You're almost done!</h3>

<p>Online Mode</p>
<input type="checkbox" name="gplus" />
<p>Enable Query</p>
<input type="checkbox" name="gplus" />

<p>Enable Snooper</p>
<input type="checkbox" name="gplus" />

<p>Enable RCON</p>
<input type="checkbox" name="gplus" />

<p>View Distance</p>
<input type="text" name="viewDistance" placeholder="Default is 10" />
<p>Level Seed</p>
<input type="text" name="levelSeed" />
<p>Resource Pack</p>
<input type="text" name="pack" placeholder="Place URL of Pack Here" />

<input type="button" name="previous" class="previous action-button" value="Previous" />
<input type="submit" value="Submit" />
</fieldset>
</form>

PHP

if (isset($_POST["levelName"])){
$txt = $levelname . $_POST["levelName"] . "\n";
fwrite($myfile, $txt);
} else {
$txt = "level-name=NO_NAME_GIVEN";
fwrite($myfile, $txt);
}

Как видите, я хочу проверить, является ли форма ввода из HTML-формы пустой, если это так, я хочу присвоить ей строку и добавить эту строку в файл, если он содержит данные, он добавит эти данные , Он добавляет данные в порядке, но если нет данных, он ничего не показывает. Так в чем здесь проблема? Также! Как бы я создал несколько этих операторов IF для разных форм ввода?

Спасибо за любую помощь 🙂 Я извиняюсь, если этот вопрос кажется расплывчатым, я добавлю необходимую информацию, если потребуется 🙂 Спасибо еще раз!

0

Решение

Попробуй это

if (isset($_POST["levelName"])){
if($_POST["levelName"] != ""){
$txt = $levelname . $_POST["levelName"] . "\n";
fwrite($myfile, $txt);
} else {
$txt = "level-name=NO_NAME_GIVEN";
fwrite($myfile, $txt);
}
}//submit close
1

Другие решения

Для нескольких операторов if используются операторы else-if, это позволит вам иметь несколько критериев и 1 сообщение по умолчанию. пример:

if (isset($_POST["levelName"]))
{
$txt = $levelname . $_POST["levelName"] . "\n";
fwrite($myfile, $txt);
}
else if (isset($_POST["levelName2"]))
{
$txt2 = $levelname2 . $_POST["levelName2"] . "\n";
fwrite($myfile, $txt2);
}
else
{
$txt = "level-name=NO_NAME_GIVEN";
fwrite($myfile, $txt);
}

Чтобы проверить, не было ли что-то введено или пусто, вы можете использовать это:

if(!isset($_POST["levelName"]) || isset($_POST["levelName"]) == '')
{
echo "You did not fill out the required fields.";
}

Изменить: Но из того, что вы прокомментировали, вам потребуются отдельные операторы if-else (как вы делали в оригинальном посте) 1 для каждого отдельного поля, которое необходимо проверить, чтобы проверить различные условия для этого поля.

1

На твоем месте,

Я сделаю это следующим образом

            <?php
$heading_text = array(
'levelName' => 'Lelvel-name',
/**
Your other text for various fileds,just make sure that the
array keymatch with your form elements name
...
*/
);

$_POST = array_filter( function($v){
if( !$v || ctype_space( $v))
return false;

return true;
}, $_POST);

$default_values = array(
'levelName' => 'NO_NAME_GIVEN'
/**
set the value if not a vali value is provided
array keymatch with your form elements name
...
*/
);

$filtered_arr = array_merge( $default_values, $_POST);

foreach($filtered_arr as $k => $v){
$text = $heading_text[$k].'--'.$v;
fwrite( $myfile, $text);
}
?>
0

Вы должны проверить не пустоту вместо существования. Итак, попробуйте изменить isset в !empty

if (!empty($_POST["levelName"])){
-1
По вопросам рекламы [email protected]