Sitter å försöker pilla på ett mailformulär som kan skicka mail till fler än en mailadress.
Hittade ett script av pedda i scriptarkivet och började pilla där i.
Problemet är nu bara att jag vill försöka via en databas att hämta inlaggda mailadresser där ifrån och få dom att stå i fältet "Din adress"
$thanks = "mail.php?func=ThanksMessage&namn=$namn"; // url to thankspage
[B]$yourmail = [email]mail@mail.mail[/email] ; [/B] // Your mailadress
$credit = 0; // 1 = give me credit for the script, 0 = no credit :(
$showcc = 0; // 1 = show the cc field, 0 = don't show it
$showbcc = 0; // 1 = show the bcc field, 0 = don't show it
Detta försöker jag åstadkomma med en tämligen simpel kod:
<?
$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)) {
?>
<?=$rad["mail"]?> ,
<?
}
?>
Vad jag undrar är hur jag kan få svaret från det scriptet att hamna i $yourmail i mailformuläret.
Har någon en aning om hur jag skall gå tillväga?
Svaret från maildatabase.php kan skådas på följande adress: http://82.182.89.126/~noratx/newsletter/maildatabase.php
heh, jadu. Nu är det ju så att jag tänkte använda det ungefär som ett nyhetsbrev.
Å då blir det aningens jobbigt att gå in i phpfilen varje gång man skall lägga till en mailadress..
Därav databasen...
Men jag tror att jag har lösningen på tungan.. =)
edit:
Det var jag inte als.
Så förslag mottages med glädje. =)
Vad jag försökte göra var att lägga in databas scriptet helt enkelt i mail.php i dom här krokarna:
Genom att ändra:
$headers .= "To: <".$yourmail.">\r\n";
till
$headers .= "To: <".$rad=["mail"].">\r\n";
Men det gick inget vidare, det fick jag parse error på.
Jag förstår inte riktigt vad jag skulle uppnå med det, jag är inte så jättebra på PHP, så jag ser inte direkt något samband med mina frågor i ditt svar malea.
Melea: hmm.. ok, det SER ju rätt ut iallafall..
Men har du tittat i peddas script?
För jag hittar inte vart jag skall lägga in det där...
Något textarea formulär finns inte just där eftersom det där bara är headers typ...
Det är inte meningen att man skall fylla i mailadresser för han öht. i det scriptet då det till en början är ett feedback formulär för att skicka till en enda mailadress.
$thanks = "mail.php?func=ThanksMessage&namn=$namn"; // url to thankspage ([url]http://www.yourdomain.com/thanks.php[/url]), or mail.php?func=ThanksMessage&namn=$namn for standard message.
$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)) {
$yourmail = "$rad['mail']"; // Your mailadress
}
Men då fick jag detta felet
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in /home/noratx/public_html/newsletter/mail.php on line 30
Line30 = $yourmail = "$rad['mail']"; // Your mailadress
Ok.. jag fick det att funka nu...
tog bort " " framför och bakom "$rad['mail']"; så funkade det.
Nu fick jag dock ytterligare ett problem...
Warning: Cannot add header information - headers already sent by (output started at /home/noratx/public_html/newsletter/mail.php:2) in /home/noratx/public_html/newsletter/mail.php on line 147
Lite kod för att kunna felsöka:
} else if (eregi("^[a-z0-9]+([_\.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+\.[a-z]{2,}$", $epost)) {
// Send the mail
mail ($yourmail, $subject, $totmessage, $header);
header("Location: $thanks");
} else {
include("jams_header.php");
echo "$errormail<br><br><a href=\"javascript:history.back()\">$back</a>";
include("jams_footer.php");
}
}
Line 147 är som ni säkert förstår:
header("Location: $thanks");
Skriv ut tackmeddelandet på samma sida istället för på $thanks - sidan.
Du kontroller om mailet har blivit skickat och då skriver du ut ett meddelande.
Jag tror den lösningen är enklast.
Det kan hända att det inte funkar att använda 'header' direkt efter mail()...
Ok.
Det skumma är att det funkade innan jag la till databasfunktionen.
Nu tampas jag dock med ett lite annat problem som uppkom i samband.
Den hämtar alla mailadresser, MEN, den lägger dom efter varandra utan något kommatecken...
dvs: mail1@mail.semail2@mail.semail3@mail.se
istället för: mail1@mail.se , mail2@mail.se , mail3@mail.se
Koden ser ut som såhär:
$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)) {
$yourmail = $rad['mail'] // Your mailadress
}
Jag försökte också lägga till ett fält i databasen för att få dit kommat
$marker = $rad['komma']
la jag efter $yourmail
men då får jag parse error på den raden.
I det fältet i databasen ligger " . " ett blanksteg, ett komma och ytterligare ett blanksteg.
Sorry, såg inte als att melea hade skrivit ett nytt, skall försöka med det så skall vi se vad det leder till. =)
edit igen då så slipper jag posta ett nytt inlägg...
Det där funkade klockrent, nu skall jag bara försöka bygga ut det med liknande funktioner som tidigare script, samt även skickas iväg till en header location...
Kan jag klistra in den koden längst ner så det sparas lite sådär automagiskt, eller behöver jag göra en separat funktion för det?
Och i så fall, hur gör jag den funktionen? =)
Halloj...
Nu börjar jag få ordning på allt så som jag vill ha det.. utom en sak.
Som tidigare nämnde jag ju att jag vills epara alla mail som skickats i en databas, å det har jag lyckats med, så när som på en sak...
Mottagarnas mailadresser vill inte sparas.
Jag har tittat å tittat å försökt och försökt, utan att lyckas.
Lade till en ny variabel för mail för att testa, men inte tusan funkade det heller...
Jag bifogar större delen av koden så kanske någon kan se vad felet är... hoppas jag iaf.. för nu börjar jag snart bli tokig.. =)
$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_answear@mail.se";
$headers .= "From: $avsandare";
mail($rad[mail], $_POST[rubrik], $message, $headers);
}
$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);
?>
Eftersom du loopar mailen så måste du även ha sql satsen där du lägger in i databasen i loopen.
Annars så loopar du ut mailen, och sedan försöker du lägga in i databasen.
Ok, men är inte då risken att den sparar allt lika många gånger som mailadresser då?
Eftersom scriptet just nu skickar samma mail flera gånger?
edit:
Har du lust å bra knåpa ihop hur tusan jag skall lösa det?
För så som jag trode att man löste det genom att loopa fram mail igen gick tydligen inte als..
364 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25