gilthasMedlem sedan maj 20068 inlägg Hejsan!
Jag skulle vilja ha lite hjälp med en sak. Det är så att jag ska göra en sida där man som kund ska kunna skicka ett mail till mig, det har jag inga problem med - får allt det att fungera som det ska. :h
Men problemen börjar när har fått frågan att se till att allt sparas i en databas (mySQL) med, detta för att säkerställa att inget/ingen mail/data försvinner.
Tack på förhand
CompusaMedlem sedan jan. 20023 327 inlägg Mitt tips är att först sätta igång själv och fråga när du får problem. Så som jag uppfattat det har du inte försökt själv ännu.
Det är inte direkt något svårt problem, det du behöver är en mysql-databas och möjlighet att ansluta mot denna. I ditt script som skickar mail skulle du kunna göra följande:
* Öppna anslutning mot databasen
* Sätt in värdena från formulär-fälten i din databas.
* Stäng anslutningen mot databasen.
Det finns mängder av information på nätet, bara att googla :i
gilthasMedlem sedan maj 20068 inlägg Jag har försökt tidigare och har även använt mig av google... Dock har jag hela tiden fastnat på samma problem.
Jag kan lägga till i databasen, men vet inte exakt hur jag ska plocka ut dom texterna från databasen på ett smidigt sätt. Samt hur gör jag för att skicka mailet direkt efter att jag har lagt in det i databasen?
J.N.Medlem sedan apr. 20031 660 inlägg HEJ!
HUR vill du visa texterna? I en tabell på en sida, eller skicka/hämta som csv/xls/txt/pdf-fil? Olika lösningar för respektive, innebär att du måste veta det först.
Spara först datan, sedan skickar brevet; vad är det som är problemet? Du har redan gjort hälften, lägg till en funktion för att spara samma varibler i databasen. Du behöver inte krångla med att hämta datan du precis sparat.
Eller gör tvärtom, skicka brevet, spara datan. Du bestämmer.
gilthasMedlem sedan maj 20068 inlägg Så här ser min kod ut för filen som skickar mailet:
<?
require ("common.inc");
ini_set("max_execution_time","9999");
ignore_user_abort(true);
//-----Läs in variablerna från formuläret
$text = $_POST['text'];
$subject = $_POST['subject'];
$signature = $_POST['signature'];
if($text!=""){
$sql = "SELECT epost FROM nyhetsbrev_medlem WHERE aktiv='yes'";
$result = mysql_query($sql) OR DIE(mysql_error());
$rows = mysql_numrows($result);
$batch = 50; //antal mail som skickas per runda
$pre_rundor = $rows/$batch; //antal rundor
// -- nollställning av räknare och innehållsvariabler
$count = 0;
$recepient = "";
$total_counter = 0;
$all_recepients = "";
$show_batch = "";
$round = 0;
//en snurra som skickar mailen i omgångar om antalet i variabeln batch
while ($row = mysql_fetch_array($result)){
$recepient .= ",".$row['epost'];
$all_recepients .= ", ".$row['epost'];
$count++;
$total_counter++;
// när räknaren kommit upp i batch-antalet adresser - skicka mail
if ($count == $batch){
$recepient = substr($recepient, 1);
$round++;
echo "<br><br><b>Runda $round</b>.<br>OBS! Låt sidan ladda helt färdigt.
Den ska snurra igenom $pre_rundor rundor. När du ser själva mailet kan du pusta ut.";
if(mail("nyhetsbrev@domain.com","$subject","$text\n\n$signature",
"from:Din sajt <nyhetsbrev@domain.com>\r\n"."bcc:".$recepient)) {
$check ='Ja';
}
else $check = 'Nej';
$count = 0;
$recepient = "";
}
}
// Tag hand om resten
if ($count > 0){
$recepient = substr($recepient, 1);
echo "<br><br><b>Resten: $count </b>.";
if(mail("$to","$subject","$text\n\n$signature","from:Nyhetsbrevet
<nyhetsbrev@domain.com>\r\n"."bcc:".$recepient)) {
$check ='Ja';
}
else $check = 'Nej';
}
$sum = $round*$batch+$count;
echo "<br><br><b>Nu är vi klara!<br>Totalt: $round rundor gånger $batch + resterande $count = $sum adresser.<br></b>";
//-----------------------------
if($check=='Ja'){
$visatext = nl2br($text);
$visasig = nl2br($signature);
echo "<br><hr noshade width=\"80%\"><br>To: $to\n<BR>
From: Nyhetsbrevet <nyhetsbrev@domain.com>\n<BR>
Subject: $subject\n\n<BR><BR>$visatext\n\n<BR><BR>$visasig";
echo "<P><A HREF=\"index.htm\">Tack och hej</A>";
echo "<P>Brevet drog iväg till följande $rows prenumeranter: <BR>$all_recepients";
}
else echo "Det gick inte att skicka mailet";
}
else echo "<P>Du glömde att skriva något i brevet.
Av ren vänlighet skickades inte ditt tomma
brev ut till de $rows prenumeranter som
annars skulle fått en massa skräp i sin mailbox. Skärpning!";
?>
Detta fungerar mycket bra ända tills jag kommer till läget att lägga in dom i databasen... Vet inte vad jag gör för fel - hjälp mig gärna med var jag ska lägga in koden för att skriva dit det i databasen.
J.N.Medlem sedan apr. 20031 660 inlägg Hmmm, en fördel är ju att posta frågan i rätt forum, detta är php-kod!
Det enklaste är att lägga koden efter alla variabler är hämtade, före db-frågan från "nyhetsbrev_medlem".
När det fungerar, kan man flytta det om man vill ha en annan struktur.
gilthasMedlem sedan maj 20068 inlägg
J.N. skrev:
Hmmm, en fördel är ju att posta frågan i rätt forum, detta är php-kod!
Ojdå, det har jag aldrig tänkt på att det är. :r
Tack ändå för ditt svar. Ska testa det.
J.N.Medlem sedan apr. 20031 660 inlägg Ingen fara, du är ju ny! Okej, det ÄR ett grunläggande fel, men ändå!
Välkommen förresten, eftersom ingen annan välkomnat dig! :birp
Fortsätt skriva om ev problem i denna tråd, den hamnar i rätt forum så småningom.
Glöm inte heller acceptera vilket inlägg som hjälpte dig.
gilthasMedlem sedan maj 20068 inlägg Har inte haft tid att testa era förslag - därför har jag inte sagt om det fungerar eller ej.
Hoppas att jag ska hinna titta på det under veckan....
gilthasMedlem sedan maj 20068 inlägg
J.N. skrev:
Det enklaste är att lägga koden efter alla variabler är hämtade, före db-frågan från "nyhetsbrev_medlem".
Tack för ditt svar - det löste alla mina problem, har inte ens haft en tanke på att det går att lägga flera SQL-frågor i samma fil.
aasahMedlem sedan mars 20034 471 inlägg
gilthas skrev:
Tack för ditt svar - det löste alla mina problem, har inte ens haft en tanke på att det går att lägga flera SQL-frågor i samma fil.
gilthas - om du tittar på J.N.'s inlägg finns det en röd kant på ovansidan (liksom på alla inlägg). Till höger i det röda står "Acceptera som slutgiltigt svar". Det är en länk. Klicka på den, så blir alla glada! :D
Förtydligande: I de trådar man skapar, ser man själv (dvs trådskaparen) denna länk. Därmed kan man alltid själv tala om vilket svar som löste ens problem. :)
gilthasMedlem sedan maj 20068 inlägg
aasah skrev:
gilthas - om du tittar på J.N.'s inlägg finns det en röd kant på ovansidan (liksom på alla inlägg). Till höger i det röda står "Acceptera som slutgiltigt svar". Det är en länk. Klicka på den, så blir alla glada! :D
Förtydligande: I de trådar man skapar, ser man själv (dvs trådskaparen) denna länk. Därmed kan man alltid själv tala om vilket svar som löste ens problem. :)
Så, då var det gjort... :r Hade inte sett den länken tidigare, sorry att jag missade det... :(
aasahMedlem sedan mars 20034 471 inlägg
gilthas skrev:
Så, då var det gjort... :r Hade inte sett den länken tidigare, sorry att jag missade det... :(
Inget problem alls! :D Alla har vi varit nya nån gång - och inte bara nya missar den länken ibland. Men ju fler som hittar den, desto bättre! :D
gilthasMedlem sedan maj 20068 inlägg Har råkat ut för ytterligare ett problem - som jag hoppas att ni kan hjälpa med?
SQLsats = "SELECT TOP 5 * FROM asp ORDER BY DATUM DESC"
Så ser det ut i en sträng för asp och ACCESS-db. Skulle vilja få en likvärdig för php och mysql-db.
Mvh
// Gilthas
$sql = "SELECT * FROM asp ORDER BY DATUM DESC LIMIT 5";
$query = mysql_query($sql) or die(mysql_error());
Jag är dock inte säker på att det är i rätt ordning. Men det borde kunna funka.