Как использовать несколько параметров в $ _POST - PullRequest
0 голосов
/ 02 декабря 2018

начинающий программист, поэтому я приношу свои извинения, если это пустая трата времени.

Я создал HTML-форму, которая выглядит следующим образом:

<form action="post.php" method="post">
    <label for="artist">Artist:</label><br>
    <input title="" type="text" name="artist" id="artist" value="Muse" required><br>
    <label for="album">Album:</label><br>
    <input title="" type="text" name="album" id="album" value="Live At Rome Olympic Stadium" required><br>
    <label for="genre">Genre:</label><br>
    <input title="" type="text" name="genre" id="genre" value="Rock" required><br>
    <label for="year">Year:</label><br>
    <input title="" type="number" name="year" id="year" value="2013" required><br>
    <label for="tracks">Tracks:</label><br>
    <input title="" type="number" name="tracks" id="tracks" value="13" required><br><br>
    <input title="" type="submit" name="submit" value="Submit">
</form>

Отправленная информация отправленав post.php, который выглядит следующим образом:

if ($_POST['artist'] ['album'] ['genre'] ['year'] ['tracks']) {
    echo "The artist name is " . $_POST['artist'];
    echo "<br>";
    echo "The album name is " . $_POST['album'];
    echo "<br>";
    echo "The genre is " . $_POST['genre'];
    echo "<br>";
    echo "The year of release is " . $_POST['year'];
    echo "<br>";
    echo "The number of tracks is " . $_POST['tracks'];
    echo "<br>";
} else {
    echo "You have not filled out all the forms";
}

(я не уверен, стоит ли использовать isset, или нет - но это другой вопрос)

Согласно моимредактор PHPStorm, нет ошибок в форматировании параметров в $ _POST, однако мой браузер выдает мне следующие ошибки:

Предупреждение: недопустимое смещение строки 'album' в C: \ xampp \ htdocs \ php1 \ week2test\ week2music \ post.php в строке 3

Предупреждение. Недопустимое смещение строки 'genre' в C: \ xampp \ htdocs \ php1 \ week2test \ week2music \ post.php в строке 3

Предупреждение: Недопустимое смещение строки 'year' в C: \ xampp \ htdocs \ php1 \ week2test \ week2music \ post.php в строке 3

Предупреждение: Недопустимое смещение строки 'track' в C: \ xampp \ htdocs \ php1\ week2test \ week2music \ post.php в строке 3

Как мне отформатировать мой параметрs в $ _POST, чтобы избавиться от этих ошибок?Или, если это не проблема, тогда я не знаю, в чем проблема, у вас есть какое-то понимание?

Должен ли я использовать isset в этом сценарии?

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 02 декабря 2018

Использование isset лучше, если вы хотите использовать ненулевые значения, полученные из POST

if (isset($_POST['artist'], $_POST['album'], $_POST['genre'], $_POST['year'], $_POST['tracks']))
0 голосов
/ 02 декабря 2018

isset() используется для проверки того, что переменная существует и она не равна нулю.

Следовательно, всегда предпочтительнее использовать ее.В вашем случае это может быть использовано как:

if (isset($_POST['artist']) && isset($_POST['album']) && isset($_POST['genre']) && isset($_POST['year']) && isset($_POST['tracks'])) {
    echo "The artist name is " . $_POST['artist'];
    echo "<br>";
    echo "The album name is " . $_POST['album'];
    echo "<br>";
    echo "The genre is " . $_POST['genre'];
    echo "<br>";
    echo "The year of release is " . $_POST['year'];
    echo "<br>";
    echo "The number of tracks is " . $_POST['tracks'];
    echo "<br>";
} else {
    echo "You have not filled out all the forms";
}
0 голосов
/ 02 декабря 2018

if ($_POST['artist'] ['album'] ['genre'] ['year'] ['tracks']) это не существует в вашем текущем контексте, это будет массив глубиной 5.

Вы имели в виду if ($_POST['artist'] && $_POST['album'] && $_POST['genre'] && $_POST['year'] && $_POST['tracks'])

Или, еще лучше, используя isset(): if (isset($_POST['artist']) && isset($_POST['album']) && isset($_POST['genre']) && isset($_POST['year']) && isset($_POST['tracks']))

Но я предпочитаю использовать более сексуальное решение, хранить в массиве ключи $_POST, которые я хочу проверить, а затем перебрать этот массив:

$KeysToCheck = array('artist', 'album', 'genre', 'year', 'tracks');
$AllFieldsAreGood = true;

foreach($KeysToCheck as $KeyToCheck)
    if (!isset($_POST[$KeyToCheck]))
        $AllFieldsAreGood = false;

if (!$AllFieldsAreGood)
    echo "You have not filled out all the forms";
else
{
    // success ! Manage it.
}

Обратите внимание, что использование isset() для флажка будет true, только если флажок установлен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...