Я новичок в 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:[email protected]?bcc=".$bccfield." /> " ;
}
$bccfield .="\r\n";
?>
Любая помощь будет оценена по достоинству. Заранее спасибо!
У вас небольшой сбой в коде. Он должен быть $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:[email protected]?bcc=%s />\n",
urlencode(implode(',',$bccfields)));
?>
Обратите внимание, что я не тестировал это, просто набрал его. Но вы должны получить эту идею, когда будете ее изучать.
Вы должны начинать с $row=0;
вместо $row=1;
, В противном случае вы проигнорируете последнюю строку, полученную из БД.
Попробуй это,
mysql_result($result,0,"EMAIL");
.....^
вместо
mysql_result($result,0,"email");