Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá,
Criei um formulário em PHP auto-referente. A lógica é que os dados digitados anteriormente sejam preservados quando o formulário é reexibido. O código é este:
<?php
if (isset($_POST['submit'])) {
$from = 'elbiagione@terra.com.br';
$subject = $_POST['subject'];
$text = $_POST['elvismail'];
$output_form = false;
if (empty($subject) && empty($text)) {
echo 'Você esqueceu do assunto e do corpo da mensagem.<br />';
$output_form = true;
}
if (empty($subject) && (!empty($text))) {
echo 'Você esqueceu do assunto.<br />';
$output_form = true;
}
if ((!empty($subject)) && empty($text)) {
echo 'Você esqueceu do corpo da mensagem. <br />';
$output_form = true;
}
}
else {
$output_form = true;
}
if ((!empty($subject)) && (!empty($text))) {
//Tudo está certo, enviar emails
$dbc = mysqli_connect('localhost', 'root', '', 'elvis_store')
or die('Error connecting to MySQL server.');
$query = "SELECT * FROM email_list";
$result = mysqli_query($dbc, $query)
or die('Error querying database.');
while ($row = mysqli_fetch_array($result)){
$to = $row['email'];
$first_name = $row['first_name'];
$last_name = $row['last_name'];
$msg = "Dear $first_name $last_name,\n$text";
mail($to, $subject, $msg, 'From:' . $from);
echo 'Email sent to: ' . $to . '<br />';
}
mysqli_close($dbc);
}
if ($output_form) {
?>
<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
<label for="subject">Subject of email:</label><br />
<input id="subject" name="subject" type="text" value="<?php echo $subject; ?>" size="30" /><br />
<label for="elvismail">Body of email:</label><br />
<textarea id="elvismail" name="elvismail" rows="8" cols="40"><?php echo $text; ?></textarea><br />
<input type="submit" name="submit" value="Submit" />
</form>
<?php
}
?>
Este código foi retirado do livro 'Use a Cabeça! - PHP & MySQL' o qual estou estudando. O formulário funciona corretamente, ou seja, os dados digitados anteriormente permanecem se alguma condição de if que testa se há campos em branco for true e o formulário é reexibido para que os campos em branco sejam preenchidos. Mas, os campos do formulário exibem uma estranha mensagem de erro:
http://img20.imageshack.us/img20/6325/semttulotrg.jpg
Como se vê, trata-se de uma linha de código que está causando o erro e são justamente as linhas do formulário reexibido.
Sinceramente, não sei o que está causando o erro. No exemplo do livro, tudo funciona perfeitamente e não há uma explicação de o que estaria causando o erro e como corrigi-lo.
Agradeceria quem puder me ajudar.
Obrigado desde já.
Carregando comentários...