Ja, det gör den ju.
Om du inte vill ha det så, så är du tvungen att spara alla mailadresser i en array som du lägger in i databasen.
Men jag ser det inte som något problem, eller hur många mail räknar du med att skicka ut?
36 svar · 850 visningar · startad av Rickard · sida 2 av 2
Ja, det gör den ju.
Om du inte vill ha det så, så är du tvungen att spara alla mailadresser i en array som du lägger in i databasen.
Men jag ser det inte som något problem, eller hur många mail räknar du med att skicka ut?
heh, jag räknar med att skicka ut en sisådär 100 mail...
å jag vill bara ha ett enda mail sparat för att ha en översikt om vad jag har skickat och när jag gjorde det.. =)
Så frågan är då, hur sparar jag ner det i en array som du säger? =)
Men om du lägger in en array med mailadresserna så blir det bara en enda lång rad med 100 st mailadresser. Vill du verkligen ha det så?
Behöver du ha reda på vilka som får brevet?
japp..
precis så vill jag ha det... dock skall varje mailadress vara separerade med ett kommatecken, så man lätt kan läsa ut varje mailadress.. =)
ex:
mail1@mail.se , mail2@mail.se osv osv.. =)
Du får nog hämta mailadresserna en gång till, lägga in dom i en array och göra om den till en sträng. Detta är inget som jag är 100% säker på, då jag inte brukar jobba så mycket med arrayer.
Om du har din array $mail som innehåller alla mail på en rad, alltså mail1@mail.commail2@mail.commail3@mail.com osv....
Så gör du om den så här:
$mail = implode(" , ", $mail);
Ok... som om jag rå tänker rätt, så måste det väg bli något i stil med detta.. eller har jag fel?
$lank = mysql_connect ("localhost","user","pass");
mysql_select_db ("newsletter");
// Hämta rader och skriv ut
$sql = "SELECT * FROM maildatabase ORDER BY id ASC";
$result = mysql_query($sql);
while($rad = mysql_fetch_array($result)) {
$mail2 = implode(" , ", $mail);
}
//Sen komer koden som lägger in allt i databasen
$mail2 = $rad["mail"];
$datum = date("Y-m-d H:i:s");
$lank2 = mysql_connect ("localhost","user","pass");
$databas2 = mysql_select_db("newsletter");
$sql2="INSERT INTO saved_letters(datum,rubrik,mail,message)
VALUES('$datum','$rubrik','$mail2','$message')";
mysql_query("$sql2");
mysql_close ($lank2);
Troligen så är väl detta fel.. men med mina vaga kunskaper i PHP så är detta det enda jag kan komma att tänka på...
I ditt exempel så får du nog ändra:
$mail2 = implode(" , ", $mail);
till
$mail2 = implode(" , ", $rad['mail']);
och radera raden
$mail2 = $rad["mail"];
edit/
Såg att du hade * i din sql sats, detta innebär ju att du hämtar all data, ändra så du bara hämtar mailadresserna.
det gick inget vidare als...
den sparar fortfarande inte mailadresserna...
Istället för att jag skall posta hela koden, slå en fluktare här så ser du hur det hela ser ut...
http://82.182.89.126/~noratx/newsletter/test/skicka_massmail2.phps
Kans är lättare att säga vad som är fel å vad jag skall öndra för att få det att funka.. =)
edit: hade glömt att visa adressen till phps filen.. =)
Nu har jag försökt med implode grejen ett antal ggr, å det funkar inte als hittils..
Ett annat sätt är att i sidan som listar alla sparade mail, sätta in något script som tar bort dubletter och enbart sparar en av varje.
Det känns förvisso som en ganska dum å långsam grej att göra, men det verkar ju inte att gå att spara mailadresserna annars.
Var ganska trött igår kväll, (måste ju skylla på något! ;) :OO )
Testa den här koden:
<?
$thanks = "thanks.php"; // url to thankspage ([url]http://www.yourdomain.com/thanks.php[/url]), or mail.php?func=ThanksMessage&namn=$namn for standard message.
$bgcolor = "#FCE8B1"; // Backgroundcolor in the mail (body)
$textcolor = "#000000"; // Textcolor in the mail
$tablecolor = "#7B92B0"; // Backgroundcolor in the mail (table)
$border = 1; // Size on the border
$bordercolor = "#000000"; // Color on the border
$thanksmessage = "Thanks $namn for your message!"; // Only used if you don't have any own thankspage!
$lank = mysql_connect ("localhost","user","pass");
mysql_select_db ("newsletter");
// Hämta rader och skriv ut
$sql = "SELECT * FROM maildatabase ORDER BY id ASC";
$result = mysql_query($sql);
while($rad = mysql_fetch_array($result)) {
$message = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n
<HTML><BODY bgcolor=\"$bgcolor\"><table width=\"80%\" bgcolor=\"$tablecolor\" text=\"$textcolor\" border=\"$border\" bordercolor=\"$bordercolor\" align=\"center\" cellpadding=\"60\" cellspacing=\"0\"><tr><td>\n
$_POST[meddelande]
</td></tr></table></BODY></HTML>\n";
//header("Location: $thanks");
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$avsandare = "do_not_reply@mail.se";
$headers .= "From: $avsandare";
mail($rad[mail], "".$_POST[rubrik]."", "$message", "$headers");
}
// Hämta rader och skriv ut
$result = mysql_query('SELECT mail FROM maildatabase');
while($row = mysql_fetch_array($result))
{
$mail2[] = $row['mail'];
}
$mail2 = implode(" , ", $mail2);
$datum = date("Y-m-d H:i:s");
$sql2="INSERT INTO saved_letters(datum,rubrik,mail,message)
VALUES('$datum','".$_POST['rubrik']."','$mail2','$message')";
mysql_query("$sql2");
header("Location: $thanks");
?>
det där funkade aldeles finemang..
Nu är det bara en sista sak som jag inte fick att fungera senast.
Vart skall jag lägga nl2br för att meddelandet skall brytas upp snyggt, så inte all text som skrivs i mailet hamnar på en enda rad?
Den kommer ju med en
$_POST[meddelande]
kan man göra något i stil med:
$_POST[meddelande] = nl2br($meddelande); ?
eller hur skulle det se ut?
$meddelande = nl2br($_POST[meddelande]);
hmmm.. det gick tydligen inget vidare als.
Precis som tidigare så bryter den inte texten als.
Är det felsatt av mig eller är det något annat?
$message = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n
<HTML><BODY bgcolor=\"$bgcolor\"><table width=\"80%\" bgcolor=\"$tablecolor\" text=\"$textcolor\" border=\"$border\" bordercolor=\"$bordercolor\" align=\"center\" cellpadding=\"60\" cellspacing=\"0\"><tr><td>\n
$meddelande = nl2br($_POST[meddelande]);
</td></tr></table></BODY></HTML>\n";
ha $meddelande = nl2br($_POST[meddelande]);
ovanför din sql sats och ändra loopen till:
$message = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">\n
<HTML><BODY bgcolor=\"$bgcolor\"><table width=\"80%\" bgcolor=\"$tablecolor\" text=\"$textcolor\" border=\"$border\" bordercolor=\"$bordercolor\" align=\"center\" cellpadding=\"60\" cellspacing=\"0\"><tr><td>\n
$meddelande
</td></tr></table></BODY></HTML>\n";
Det borde funka.
Det där funkade super....
Nu sitter jag å pillar på en uppdateringsfunktion och har fastnat på en header("location:"); som strular.
Om du tar en titt på:
http://82.182.89.126/~noratx/newsletter/test/edit_userdata.phps
så får jag fel på rad 29 ( $row=mysql_fetch_row($result); ).
Har du någon aning om varför och hur man löser det?
Jag har försökt att slytta runt på den, med olika resultat, men inget tillfredställande resultat.
Jag vill ju flyttas till view_userdata.php direkt när jag har ändrat/tagit bort...
Vad får du för felmeddelande?
Warning: Supplied argument is not a valid MySQL result resource in /home/noratx/public_html/newsletter/test/edit_userdata.php on line 29