Avatar billede bigtime Nybegynder
30. december 2011 - 12:50 Der er 4 kommentarer og
1 løsning

Sende nyhedsbrev ud med auto hent fra dben men hvordan ?

jeg har det her script som jeg sender nyhedsbrev ud med og det virker ganske fint men nu kunne jeg godt tænke mig at kunne sende nyhedsbrev ud med bruugerens navn i og det skal den hente fra dben men ved ikke lige hvordan ???

her er scripet som jeg bruger til at sende en test ud mig til mig selv så jeg kan se brevet inde jeg sender ud til alle
håber i forstå eller spørg bare :D

det nyhedsbrev den henter nu er skrevet i html og ligger i dben

<?
    function removeslashes($txt) {
        return str_replace("\\\"", "\"", str_replace("\\'", "'", $txt));
    }

    ob_start();
    include("db.php");
    include("menu.php");
   
    $id = intval($_GET['id']);
   
    $besked = "";
   
    if ($_POST['valg'] == "send") {
        $res = mysql_fetch_array(mysql_query("
            SELECT
                *
            FROM
                nyhedsbreve
            WHERE
                id = '".$_POST['id']."'
            "));
        mail(
            $_POST["email"],
            removeslashes($res["emne"]),
            removeslashes($res["html"]),
            "Content-type: text/html\r\n" .
            "From: minside.dk <minside@minside.dk>\r\n" .
            "Reply-to: minside.dk <minside@minside.dk>"
            );
        $besked = "Test-mail afsendt...<br><br>";
    }
   
    if ($email == "") {
        $email = "min mail";
    }
?>

<h2>Nyhedsbreve - Afsend test</h2>

<?=$besked?>

<form action="nyhedsbrev_test.php" method="post">
<input type="hidden" name="id" value="<?=$id?>">
<input type="hidden" name="valg" value="send">
<table>
    <tr>
        <td>
            Send test til:
        </td>
        <td>
            <input type="text" name="email" value="<?=$email?>" size="50">
        </td>
    </tr>
    <tr>
        <td colspan="2" align="center">
            <input type="submit" value="Afsend test nu">
        </td>
    </tr>
</table>
</form>

</body>
</html>
30. december 2011 - 13:47 #1
Du fortæller ikke hvor i dben brugerens navn står og heller ikke hvor i nyhedsbrevet du vil have indføjet brugerens navn.  jeg skal derfor antage, at du har en database tabel 'bruger' med blandt andet felterne 'navn' og 'email' og at nyhedsbreet skal begynde med en hilsen som 'Kære Hans' eller hvad brugerens navn nu er.

Så kunne du udvide det kodeafsnit, der starter med

if ($_POST['valg'] == "send") {

således at du først søger det brugernavn der svarer til emailen, derefter definerer en variabel $indhold der starter med hilsenen og tilføjer emailens tekst ($res["html"]). Såsom:

if ($_POST['valg'] == "send")
{
    $email = $_POST['email'];
    $navn = mysql_result(mysql_query("SELECT navn FROM bruger WHERE email = '$email'"),0);

    $res = mysql_fetch_array(mysql_query("SELECT * FROM nyhedsbreve WHERE id = '".$_POST['id']."'"));

    $indhold = "Kære $navn.";
    $indhold .= removeslashes($res["html"]);

    mail(
        $email,
        removeslashes($res["emne"]),
        $indhold,
        "Content-type: text/html\r\n" .
        "From: minside.dk <minside@minside.dk>\r\n" .
        "Reply-to: minside.dk <minside@minside.dk>"
        );
Avatar billede bigtime Nybegynder
31. december 2011 - 08:29 #2
hey og godt nytår Christian_Belgien
tak for svaret :D det virker enlig godt nok men ikke helt som jeg havde tænkt på for nu ser det lidt sjovt ud :D
først kommer der

kære "brugernavn"
og nede under starter html nyhedsbrevet jeg ville gerne have navnet ind i html nyhedsbrevet for jeg ville nemlig også lave et lille billede nederst i brevet på 1 x 1px som gav svar tilbage til en fil jeg har så jeg kunne se hvor mange der læste brevet og hvem der læste brevet og der skal jeg bruge deres id men alt det tror jeg godt jeg selv kan lave, jeg kan bare ikke finde ud af at få ting fra dben ind i html brevet.
forstå du :D
31. december 2011 - 09:20 #3
Så du får nu brugernavnet trukket ud af databasen og indsat i mailen.  Jamen det er da i sig selv et resultat.  Jeg tillader mig derfor at oprette dette indlæg som svar.

Men det virker ikke helt som du havde tænkt.  Jamen det er dig der ikke forklarede hvad du havde tænkt så jeg selv måtte gætte.

Det står mig stadig ikke krystalklart, hvad du vil opnå.  Du siger, at du vil have navnet ind i html nyhedsbrevet.  Så må jeg spørge: 

1.  Det du kalder html nyhedsbrevet, det er en tekst du bevarer i database tabellen 'nyheder' i feltet 'html', er det korrekt?

2.  Når du siger, at du vil have navnet ind i html nyhedsbrevet, betyder det så, at navnet skal stå et bestemt sted i teksten?  Lad os sige, at html nyhedsbrevets tekst er "Der kom en soldat gående hen ad landevejen, et, to et, to.  Han havde sit tornister på ryggen og en sabel ved siden.  Soldaten hed ......... og havde været i krigen, og nu skulle han hjem."  Og så vil du have brugernavnet indsat der hvor prikkerne står.  Er det noget i den henretning?

I så fald vil jeg foreslå, at du deler nynedsbrevets tekst i to tekster, html1 der er det før navnet og html2 der er det efter navnet.  I tabellen 'nyheder' omdøber du så feltet 'html' til 'html1', og du tilfører et felt 'html2'. 

Så kan du tilpasse min foreslåede kode således:


if ($_POST['valg'] == "send")
{
    $email = $_POST['email'];
    $navn = mysql_result(mysql_query("SELECT navn FROM bruger WHERE email = '$email'"),0);

    $res = mysql_fetch_array(mysql_query("SELECT * FROM nyhedsbreve WHERE id = '".$_POST['id']."'"));

    $indhold = removeslashes($res["html1"]);
    $indhold .= $navn;
    $indhold .= removeslashes($res["html2"]);

    mail(
        $email,
        removeslashes($res["emne"]),
        $indhold,
        "Content-type: text/html\r\n" .
        "From: minside.dk <minside@minside.dk>\r\n" .
        "Reply-to: minside.dk <minside@minside.dk>"
        );
Avatar billede bigtime Nybegynder
31. december 2011 - 09:37 #4
har ikke lige testet det endnu men ja det er noget i den du der.
men må lige spørge hvorfor sætter du punktum foran $indhold 2 af stederne?

det som jeg kalder html nyhedsbrev er at jeg har lavet en skabelon i dreamweaver i html som er gemt i databasen.
og det er en desigen hvor jeg ændre teksten på og billeder på for hvert nyhedsbrev altså så ville jeg jo gerne have at der stod kære bruger inde i designet og ikke over designet og på sigt men nok ikke pt ville jeg gerne lave så når jeg sendte brevet ud så gik den selv ind i dben og fandt de 3 sidste nye billeder og film og satte det i brevet bare for at lætte mit arbejde lidt.


er det bedre forklare nu ?
ellers prøver jeg igen :D
31. december 2011 - 10:23 #5
'Sætte punktum foran $indhold -

Hvis man siger $indhold = 'et eller andet', altså uden punktum,  så slettes det der allerede står i $indhold (hvis der stod noget) før det nye indhold, 'et eller andet' bliver indført.  Hvis du vil have 'et eller andet' tilføjet til det der allerede står skal du bruge .=

  I første linie, $indhold = removeslashes($res["html1"]); sætter jeg variabelen $indhold til $res['html1'].

I næste linie vil TILFØJE det der er i $navn. Derfor bruger jeg .=  Og ligeledes i tredje linie.

Når først du har sendt brevet, altså når brevet har forladt din computer og er på vej til modtageren, så kan brevet ikke længere gå ind i databasen og finde noget.  Det er vel heller ikke det du mener, men at efter du har trykket på knappen til at sende nyhedsbrevet, så skal programmet gå ind i databaasen og finder de rigtige oplysninger, indføje dem i nyhedsbrevet, og derefter sende nyhedsbrevet.  Det er præcis det der er formålet med kode som det jeg foreslår.

Forøvrigt kommer jeg til at stoppe her.  Jeg håber det har været til nytte, så langt det går.  Du giver ikke oplysninger nok til at jeg kan forstå sammenhængen mellem din dreamweaver skabelon, det du har i databasen, og de de navne og billeder du vil have indføjet, og det vil nok blive en meget lang historie at prøve at få det hele forklaret.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester