Autor Zpráva
Stepanka
Profil *
Ahoj,

prosím neporadil by mi někdo s jedním problémem?
Mám v databázi sloupeček "emaily_adresatu". A potom kód nějaký takový:

DOTAZ NA DB
while ($row_zakaznici = mysql_fetch_array ($query_zakaznici)) {
		$emaily[$row_zakaznici['id']] = array("email" => $row_zakaznici['email'], "uz_jm" => $row_zakaznici['uz_jm']);
}

V poli $emaily mám teď třeba 10 emailů.
foreach ($emaily as $k => $v) {
  $mail = new PHPMailer(); 
  echo "id: ".$k." -- email: ".$v['email']." -- jmeno: ".$v['uz_jm'].'<br>';
  $mail->IsHTML(true); // tento řádek je zbytečný, protože níže nastavujeme obsah proměnné AltBody
  $mail->AddAddress($v['email']);  // přidáme příjemce
  atd ... vytvořím předmět, odešlu mail...
  if(!$mail->Send()) {  // odešleme e-mail
	echo '<br />Došlo k chybě při odeslání e-mailu.';
	echo '<br />Chybová hláška: ' . $mail->ErrorInfo;
  } else {
	echo '<br /><span class="b">'.__EMAIL_BYL_V_PORADKU_ODESLAN_NA_ADRESU__.' </span>'.$v['email'];
        $query = mysql_query ("UPDATE kampane SET emaily_adresatu = '".$v['email']."' WHERE id_kampane = '".$_GET['id_kampane']."'");
}	


Problém ale je, že se mi email v databázi vždycky přepíše a uloží se jen poslední z cyklu foreach. Já bych tam ale potřebovala vložit všechny e-maily a oddělit je třeba čárkou, nebo nějak jinak, aby se později daly použít.

Nevěděl by někdo, jak na to?

Děkuju..
RAmses
Profil
Ahoj,

ukládání do db si odlož až za cyklus foreach. Za foreachem
$emaily_ulozit = implode(';', $emaily);


si pak tuto proměnnou ulož ke kampani
Stepanka
Profil *
RAmses
Vyřešila jsem to ještě před tebou takhle

if(!$mail->Send()) {  // odešleme e-mail
	echo '<br />Došlo k chybě při odeslání e-mailu.';
	echo '<br />Chybová hláška: ' . $mail->ErrorInfo;
} else {
	echo '<br /><span class="b">'.__EMAIL_BYL_V_PORADKU_ODESLAN_NA_ADRESU__.' </span>'.$v['email'];
	$maily_zakazniku .= $v['email'].', ';
        $query = mysql_query ("UPDATE kampane SET emaily_adresatu = '".$maily_zakazniku."' WHERE id_kampane = '".$_GET['id_kampane']."'");
}	


A ukládá to taky vcelku dobře.. Vidíš v tomhle postupu nějakou nevýhodu? Mám to změnit na to Tvoje?
RAmses
Profil
Pro každý odesláný e-mail zbytečně přepisuješ v databázi jeden a ten samý záznam - $_GET['id_kampane'] - takže funkční to je, ale zbytečné. Joo počkej, ty vlastně chceš uložit jen ty, které se podařilo odeslat, že? Udělal bych to takhle:
...
else
{
    $maily_zakazniku[] = $v['email'];
}
...
// za foreachem ulozis maily
$maily_zakazniku = implode(",", $maily_zakazniku);

$query = mysql_query ("UPDATE kampane SET emaily_adresatu = '".$maily_zakazniku."' WHERE id_kampane = '".$_GET['id_kampane']."'");
Stepanka
Profil *
RAmses
Tak jo, děkuji mockrát, vyřešila jsem to tak, jak píšeš.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: