Я беру курс PHP, использую учебник Head First PHP и MYSQL. Книга была написана еще в 2008 году, поэтому мне постоянно интересно, является ли то, что я изучаю, современным.
Учебник показывает html-форму с самообращением в комментариях php:
<?php
require_once('appvars.php');
require_once('connectvars.php');
if (isset($_GET['id']) && isset($_GET['date']) && isset($_GET['name']) && isset($_GET['score']) && isset($_GET['screenshot'])) {
// Grab the score data from the Get
$id = $_GET['id'];
$date = $_GET['date'];
$name = $_GET['name'];
$score = $_GET['score'];
$screenshot = $_GET['screenshot'];
}
else if (isset($_POST['id']) && isset($_POST['name']) && isset($_POST['score'])) {
// Grab the score data from the POST
$id = $_POST['id'];
$name = $_POST['name'];
$score = $_POST['score'];
}
else {
echo '<p class="error">Sorry, no high score was specified for removal.</p>';
}
if (isset($_POST['submit'])) {
if ($_POST['confirm'] == 'Yes') {
// Delete the screen shot image file from the server
@unlink(GW_UPLOADPATH . $screenshot);
//Connect to the database
$dbc = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
// Delete the score data from the database
$query = "DELETE FROM guitarwars WHERE id = $id LIMIT 1";
$data = mysqli_query($dbc, $query)
or die('Unable to complete query');
mysqli_close($dbc);
// Confirm success with the user
echo '<p>The high score of ' . $score . ' for ' . $name . ' was succesfully removed.';
}
else {
echo '<p class="error">The high score was not removed.</p>';
}
}
else if (isset($id) && isset($name) && isset($date) &&
isset($score) && isset($screenshot)) {
echo '<p>Are you sure you want to delete the following high score?</p>';
echo '<p><strong>Name: </strong>' . $name . '<br><strong>Date: </strong>' . $date .
'<br><strong>Score: </strong>' . $score . '</p>';
echo '<form method="post" action="removescore.php">';
echo '<input type="radio" name="confirm" value="Yes">Yes ';
echo '<input type="radio" name="confirm" value="No" checked="checked">No ';
echo '<input type="submit" value="Submit" name="submit">';
echo '<input type="hidden" name="id" value="' . $id . '">';
echo '<input type="hidden" name="score" value="' . $score . '">';
echo '<input type="hidden" name="screenshot" value="' . $screenshot . '">';
echo '</form>';
}
echo '<p><a href="admin.php"><< Back to admin page</a></p>';
?>
Я продолжал получать сообщение об ошибке о том, что моя переменная id не определена. Проведя некоторое исследование, я удалил текст внутри цитат из акции. Сейчас это работает, но мне все еще интересно, почему книга учит так. Они оба допустимые варианты?
Переменная выводится без кавычек, поэтому, если вы смешиваете ее с обычным HTML-кодом, вы используете кавычки для HTML-кода, а затем заканчиваете его другой кавычкой того же типа — в вашем случае одиночной кавычкой.
Но поскольку HTML-код должен содержать кавычки (для атрибута «значение»), вы можете смешивать одинарные и двойные кавычки, как вы это сделали.
Одинарная кавычка до того, как переменная завершает эхо HTML, точка позволяет соединить переменную, после того, как переменная точка делает то же самое, а затем снова одинарные кавычки для кода HTML.
Других решений пока нет …