Во-первых, вам нужно извлечь адреса электронной почты из каждой строки вместо того, чтобы использовать саму строку. Это может быть легко достигнуто с помощью $row[0]
в вашем случае, так как ваш запрос всегда имеет один столбец, хотя вам, вероятно, следует попытаться использовать mysqli вместо устаревшего mysql.
Во-вторых, я бы рекомендовал позвонить mail()
один раз только, чтобы отправить одно сообщение всем людям, а не одно письмо на одного человека! Почему вы хотите отправить тот же адрес электронной почты снова и снова, как это? Можно использовать список писем, разделенных запятыми, как показано на PHP: mail - Manual.
Если вы хотите использовать MySQL, ваш код может выглядеть примерно так с PHP Arrays и удобной implode функции:
require 'core/init.php'; // calls mysql_connect(...)
require_once "email.php";
$message = check_input($_POST['details']);
$subject = check_input($_POST['subject']);
if (mysql_ping()) { echo 'Ping worked'; } else { echo 'Ping failed'; } // DEBUG
$results = mysql_query('SELECT email from users');
$emails = array();
while($row = mysql_fetch_row($results))
{
array_push($emails, $row[0]);
}
echo implode(", ", $emails); // DEBUG
if (!empty($emails)) {
mail(implode(", ", $emails), $subject, $message);
}
мне кажется (в то время как в чате с вами), что весь механизм HTML форм + PHP (GET и/или POST) вам непонятно. Вероятно, вы должны прочитать обо всем этом немного, и, надеюсь, код ниже поможет вам:
<?php
// Put requires here
?>
<html>
<head>
<title>Test</title>
</head>
<body>
<h1>Demo form methods</h1>
<?php
if ((isset($_POST['subject']) && isset($_POST['body'])) || (isset($_GET['subject']) && isset($_GET['body']))) {
// Your code for sending an email could be here
?>
<h2>RESULTs</h2>
<ul>
<li>POST
<ul>
<li>suject: <?php echo $_POST['subject']; ?></li>
<li>suject: <?php echo $_POST['body']; ?></li>
</ul>
</li>
<li>GET
<ul>
<li>suject: <?php echo $_GET['subject']; ?></li>
<li>suject: <?php echo $_GET['body']; ?></li>
</ul>
</li>
</ul>
<?php
// The code above is just to show you how the variables in GET/POST work
} else {
// Below are two formulaires, you can keep one only of course!
?>
<h2>FORMs</h2>
<h3>GET method</h3>
<form method="get" action="email.php">
Subject: <input name="subject" type="text"><br>
Body: <input name="body" type="text"><br>
<input type="submit" value="Send with GET">
</form>
<h3>POST method</h3>
<form method="post" action="email.php">
Subject: <input name="subject" type="text"><br>
Body: <input name="body" type="text"><br>
<input type="submit" value="Send with POST">
</form>
<?php } ?>
</body>
</html>
действительно ли это что-то делает? вы пытались откликнуться на адрес электронной почты пользователей только для отладки в цикле? –
его просто показывая, что форма вообще не выполняет никаких действий – Beep