从数据库获取电子邮件地址并将其发送到所有地址

时间:2014-02-19 08:15:43

标签: php html

我是PhP的新手并且正在尝试编写一个代码,该代码将从db中的表中获取所有电子邮件,并将它们转换为电子邮件客户端中的BCC字段(我正在使用Outlook)。 Fisrt我创建了HTML代码。例如,如果选择的值是Partneri,那么我想从表格中获取所有类别为合作伙伴的电子邮件。

<select name="email">
<option value="Uposlenik"> Uposlenici  <br/>
<option value="Partner"> Partneri  <br/>
<option value="Limari Montazeri"> Limari montažeri  <br/>
<option value="Gradjevinske firme"> Građevinske firme <br/> 
<option value="Krovopokrivacke firme"> Krovopokrivačke firme <br/>
<option value="Preradzivaci lima"> Preradživači lima <br/>
<option value="Limarske radionice"> Limarske radionice  <br/>
<option value="Stovarista-Trgovci"> Stovarišta-Trgovci
</select>

之后我创建了php文件,没有错误。我得到的结果只是选择值nothnig else出现。

<?php
$host="localhost"; // Host name
$username="***"; // username
$password="***"; // password
$database="***"; // Database name
$tbl_name="clanovi"; // Table name

$link=mysql_connect("$host", "$username", "$password");
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
$db_selected = mysql_select_db("$database");
if (!$db_selected) {
    die ('db is not selected : ' . mysql_error());
}
$kategorija=$_POST['email'];
//check post
echo $kategorija;

$query= "SELECT  `EMAIL` FROM `clanovi` WHERE `KATEGORIJA`='$kategorija'";

$result=mysql_query($query) or die ("Error, query failed!");
mysql_close($link);

$row=1;
$numrows=mysql_num_rows($result);
$bccfield="Bcc:".mysql_result($result,0,"email");
while($row<$numrows)
{
$email=mysql_result($result, $row,"email");
$bccfiled="," .$email;
$row++;
Print "<a href=mailto:test@test.com?bcc=".$bccfield." /> "  ; 
}
$bccfield .="\r\n";
?>

任何帮助将不胜感激。提前致谢!

3 个答案:

答案 0 :(得分:1)

您的代码中有一个小问题。它应该是$bccfiled.="," .$email;,请注意.之前的=,否则您将在循环的每次迭代中覆盖变量内容。但更好的风格是将地址存储在一个数组中,然后implode()将它们存储起来:implode(',',$bccfields)

因此,脚本的下半部分应该是这样的:

<?php
// ...

$query= "SELECT  `EMAIL` FROM `clanovi` WHERE `KATEGORIJA`='$kategorija'";
$result=mysql_query($query) or die ("Error, query failed!");

while(FALSE!==($row=mysql_fetch_assoc($result))) {
  $bccfields[] = $row['EMAIL'];
}
echo sprintf("<a href=mailto:test@test.com?bcc=%s />\n", 
             urlencode(implode(',',$bccfields))); 
?>

请注意,我没有对此进行测试,只需将其键入即可。但是当你研究它时,你应该明白这个想法。

答案 1 :(得分:0)

试试这个,

mysql_result($result,0,"EMAIL");
                    .....^

而不是

mysql_result($result,0,"email");

答案 2 :(得分:0)

您应该从$row=0;而不是$row=1;开始。否则,您将忽略从DB检索到的最后一行。