<?php echo $text; ?> Выдает абракадабру - PHP

Димитрий2

Новичок
Добрый день.

Изучаю PHP прошу подсказать специалистов, что я делаю не так. Создал страницу на добавление электронной почты в базу.
По коду - в случае если не заполнена тема или содержание письма выдается ошибка. Но сохраняется текст, что был введен в ячейки. <?php echo $text ?>.
По факту при загрузке страницы в ячейках появляется текст - <br /><b>Notice</b>: Undefined variable: subject in <b>C:\Server\data\htdocs\html.loc\PHP\sendmail.php</b> on line <b>71</b><br />

и во второй - <br />
<b>Notice</b>: Undefined variable: text in <b>C:\Server\data\htdocs\html.loc\PHP\sendmail.php</b> on line <b>74</b><br />

Подскажите, что я делаю не так


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Рассылка предложений</title>
<link href="../css/Nadia.css" type="text/css" rel="stylesheet">

</head>

<body>
</body>

<br /><br />Персонально: ТОЛЬКО для самых близких клиентов<br />
Составьте и отправьте электронное письмо для покупателей, <br />
внесенный в лист рассылки <br /> <br />

<?php
if(isset($_POST['submit'])){
$from='[email protected]';
$output_form = false;
$subject=$_POST['subject'];
$text=$_POST['text'];

if (empty($subject) && empty($text)){
echo 'Вы не ввели тему и содержание электронного письма <br />';
$output_form = true;
}

if (empty($subject) && (!empty($text))){
echo 'Вы не ввели тему электронного письма <br />';
$output_form = true;
}

if ((!empty($subject)) && empty($text)){
echo 'Вы не ввели содержание электронного письма <br />';
$output_form = true;
}

if ((!empty($subject)) && (!empty($text))){
$dbc=mysqli_connect('localhost','root','root','fotosessia')
or die('Ошибка соединения с сервером');

$query="Select * from zakazy";
$result=mysqli_query($dbc,$query)
or die ('Ошибка доступа к базе');

while ($row=mysqli_fetch_array($result)){
$first_name=$row['first_name'];
$last_name=$row['last_name'];
$phone=$row['phone'];

$msg="Уважаемый $first_name $last_name! \n $text";
$to=$row['email'];
mail ($to,$subject,$msg, 'from:'. $from);

echo 'Электронное письмо: '.$first_name.' отправлено на адрес электронной почты '.$to.' а телефон у них '.$phone.'<br />';
}
mysqli_close($dbc);
}
}
else {
$output_form=true;
}
if ($output_form){
?>

<form method="POST" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label for="subject">Тема электронного письма:</label><br />
<input type="text" placeholder="О чем письмо" id="subject" name="subject" cols='60' value="<?php echo $subject ?>"><br /><br />

<label for="text">Содержание электронного письма:</label><br />
<textarea placeholder="Ваше сообщение" id="text" name="text" rows='8' cols="60" /><?php echo $text; ?></textarea><br /><br />
<input type="image" src="../image/bluebutton.png" name="submit">
</form>
<?php
}
?>

</body>
</html>
 

Фанат

oncle terrible
Команда форума
Это не абракадабра, а сообщение на английском языке, вполне логичное в данной ситуации.
 

angor

Новичок
У тебя область видимости $subject ограничено
if(isset($_POST['submit'])){
$from='[email protected]';
$output_form = false;
$subject=$_POST['subject'];
.....

а достучаться до $subject ты хочешь из-вне этого тела.
Объяви $subject вне if
Примерно вот-так:
$subject=null;
И уже потом начинай проверки:
if(isset($_POST['submit'])){
$from='[email protected]';
$output_form = false;
$subject=$_POST['subject'];
 
Сверху