webForumDet fria alternativet

problem med mailformulär

36 svar · 850 visningar · startad av Rickard · sida 2 av 2

PeddaMedlem sedan juni 20006 032 inlägg
#21

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?

RickardMedlem sedan maj 2001287 inlägg
#22

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? =)

PeddaMedlem sedan juni 20006 032 inlägg
#23

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?

RickardMedlem sedan maj 2001287 inlägg
#24

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.. =)

PeddaMedlem sedan juni 20006 032 inlägg
#25

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);
RickardMedlem sedan maj 2001287 inlägg
#26

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å...

PeddaMedlem sedan juni 20006 032 inlägg
#27

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.

RickardMedlem sedan maj 2001287 inlägg
#28

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.. =)

RickardMedlem sedan maj 2001287 inlägg
#29

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.

PeddaMedlem sedan juni 20006 032 inlägg
#30

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");

?>
RickardMedlem sedan maj 2001287 inlägg
#31

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?

PeddaMedlem sedan juni 20006 032 inlägg
#32

$meddelande = nl2br($_POST[meddelande]);

RickardMedlem sedan maj 2001287 inlägg
#33

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";
PeddaMedlem sedan juni 20006 032 inlägg
#34

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.

RickardMedlem sedan maj 2001287 inlägg
#35

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...

PeddaMedlem sedan juni 20006 032 inlägg
#36

Vad får du för felmeddelande?

RickardMedlem sedan maj 2001287 inlägg
#37

Warning: Supplied argument is not a valid MySQL result resource in /home/noratx/public_html/newsletter/test/edit_userdata.php on line 29

147 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
144 ms — hämta tråd, inlägg och bilagor (db)