Avatar billede trax Nybegynder
06. marts 2008 - 11:33 Der er 29 kommentarer

Send med med udtræk fra database

Vi har på mit arbejde, en infostander stående, hvor folk kan søge oplysninger om vores produkter.

Dertil skal jeg have lavet en funktion, der gør det muligt at folk indtaster vareid (=database ID) og derefter kan sende oplysningerne der trækkes ud fra databasen, til deres mail.


Jeg har ingen erfaring med send af mail og php sammen.
Hvis nogen har et link til en tut der viser hvordan man kan gøre, ville dette være fint!


En anden ting er, hvordan kan jeg bedst lave formen de sender fra?
Det kan være fra 1 produkt til 20, 30, 50 produkter de skal sende info fra.
Er det lettest at lave eg. 20 inputfelter, eller er der en anden smart måde at gøre dette på?
Avatar billede jakobdo Ekspert
06. marts 2008 - 12:23 #1
Nu ved jeg ikke hvordan du vil lave udtræk, og om det skal være muligt at sende info om flere produkter samtidig.
Men selve mail-delen, er "bare":

vælg data fra database.
indlæs data i en variabel.
mail(.... variabel ....);
Avatar billede trax Nybegynder
06. marts 2008 - 12:55 #2
Der skal sendes info fra flere produkter på én gang.
Avatar billede jakobdo Ekspert
06. marts 2008 - 13:11 #3
Du kunne jo gøre det på flere måder.
Den "nemme" ville være at lave et udtræk i en formular, hvor brugeren kan sætte FLUEBEN ved de produkter de ønsker info sendt om.
Eller den mere avancerede kunne være en dropdown, og i takt med der vælges et produkt, så tilføjes der automatisk tilføjes ny dropdown.
Avatar billede trax Nybegynder
06. marts 2008 - 14:20 #4
Ja, det skal være sådan at kunderne indtaster det nummer (el. flere) de ønsker tilsendt, og ikke valgt via en liste. Det vil blive alt for uoverskueligt da der er 500-1000 varer de kan vælge.
Avatar billede jakobdo Ekspert
06. marts 2008 - 14:36 #5
Så skal du nok overveje X antal input felter.
Avatar billede jakobdo Ekspert
06. marts 2008 - 14:36 #6
Jeg vil gerne hjælpe, men synes du skal starte med at lave en form.
Så kan vi tage den step by step.
Avatar billede trax Nybegynder
10. marts 2008 - 14:08 #7
Så er jeg tilbage.

Jeg har gået at tænkt på, at brugeren skal kunne "godkende" sine indtastninger, inden det bliver sendt.

Jeg har tænkt det kunne laves sådan her:

Det starter med et inputfelt, brugeren indtaster fx. id nummer "530" og trykker "tilføj"
Data fra databasen bliver således udskrevet i en linie, og under den, ligger samme form igen, hvor brugeren kan indtaste et nyt nummer.
Ud fra det udskrevne data, skal brugeren have mulighed for at slette ID'en..

Derved kan brugeren tilføje lige så mange databaseudtræk som de har behov for.


Er det sværer at lave?
Avatar billede jakobdo Ekspert
10. marts 2008 - 14:34 #8
Det kan man godt lave jo.
Det skal nok laves med noget sessions, har du styr på dem ?
Avatar billede trax Nybegynder
10. marts 2008 - 16:14 #9
Ikke rigtigt, det er meget lang tid siden jeg har pillet ved det.

Jeg ´prøver lige at lave en side..
Avatar billede trax Nybegynder
10. marts 2008 - 17:25 #10
http://www.dogsite.dk/infostander/

Så har jeg lavet en side.

Det ligger både som html og pakket i en rar.
Avatar billede trax Nybegynder
10. marts 2008 - 17:27 #11
Jeg kører forresten infostanderen lokalt på WAMP.

Har defor ikke lige mulighed for at ligge en database med indholdet op før i morgen.
Avatar billede jakobdo Ekspert
10. marts 2008 - 21:14 #12
Prøv at se noget i stil med: http://www.codebreaker.dk/exp/822539exp.php
Avatar billede trax Nybegynder
10. marts 2008 - 22:43 #13
Nemlig, 100%
Avatar billede jakobdo Ekspert
11. marts 2008 - 09:56 #14
Her er koden:

<?php
session_start();
//http://www.eksperten.dk/spm/822539

if(isset($_GET['remove']) && is_numeric($_GET['remove']) && $_GET['remove'] > 0){
    $id = intval($_GET['remove']);
    if(isset($_SESSION['items']) && is_array($_SESSION['items']) && array_key_exists($id,$_SESSION['items'])){
        unset($_SESSION['items'][$id]);
    }
    header('Location: 822539exp.php');
    exit();
}

if(isset($_POST['id']) && is_numeric($_POST['id']) && $_POST['id'] > 0){
    $id = intval($_POST['id']);
    if(!isset($_SESSION['items']) && !is_array($_SESSION['items'])){
        $_SESSION['items'] = array();
    }
    if(!array_key_exists($id,$_SESSION['items'])){
        $_SESSION['items'][$id] = array('text' => microtime());
    }
    header('Location: 822539exp.php');
    exit();
}

if(isset($_SESSION['items']) && is_array($_SESSION['items'])){
    echo '<table border="1">';
    echo '<tr><th>ID</th><th>Noget</th><th>Slet</th></tr>';
    ksort($_SESSION['items']);
    foreach($_SESSION['items'] AS $id => $item){
        echo '<tr><td>' . $id . '</td><td>'.$item['text'].'</td><td><a href="822539exp.php?remove='.$id.'">X</a></td></tr>';
    }
    echo '</table>';
}
?>
<form action="822539exp.php" method="post">
    ID: <input type="text" name="id" />
    <input type="submit" value="Tilf&oslash;j" name="add" />
</form>
Avatar billede trax Nybegynder
11. marts 2008 - 10:06 #15
Mange tak.

Jeg parrer det lige sammen med mit.
Avatar billede trax Nybegynder
11. marts 2008 - 13:15 #16
http://www.dogsite.dk/infostander/send_mail.php

Vupti..

Så skal det lige køres sammen med det jeg har.

Mail delen, der skal sendes de tables som ses her.
Avatar billede jakobdo Ekspert
11. marts 2008 - 13:35 #17
Der er fejl på din side nu!
Avatar billede trax Nybegynder
11. marts 2008 - 13:38 #18
tror jeg ikke der nu. Sidder og prøver med lidt mail send.
Avatar billede jakobdo Ekspert
11. marts 2008 - 13:43 #19
Det ser ud til at virke fint so fare... :o)
Avatar billede trax Nybegynder
11. marts 2008 - 14:06 #20
Har lavet dette (med hjælp fra phpartikler.dk)

<form action="send_mail.php" method="post">
            eksempel@eksempel.dk<br>
            E-mail: <input class="input" type="text" name="mail" size="20" />
    <input class="buttons" type="submit" value="Send mail" name="send" />
   
    <?php
if (isset($_POST['mail']))
{
    if (empty($_POST['mail']))
    {
      ?><font face="verdana" color="red" size="2"><b><?php echo "Du skal indtaste din e-mail."; ?></b></font><?php
    }
   
    else
    {
        $modtager = $_POST['mail'];
        $emne = "Infostander";
        $besked = "Her skal stå en tekst: \n 
                         
                            Send til: " . $_POST['mail'];
        $header = "from:infostander@infostander";

        mail($modtager, $emne, $besked, $header); ?><font face="verdana" color="lime" size="2"><b><?php
        echo "E-mailen er nu sendt!"; ?></b></font><?php
    }
}
?>
</form>

Hvordan får jeg de valgte ting send med mailen?
Det skal være incl. alle tabels etc.
Avatar billede trax Nybegynder
11. marts 2008 - 14:14 #21
kan jeg  evt. lave det med et array?
Avatar billede jakobdo Ekspert
11. marts 2008 - 14:28 #22
Ja, så skal du f.eks. rette:

$besked = "Her skal stå en tekst: \n 

med:

foreach($DIT_ARRAY AS $id => $value){
$besked .= 'ID : ' . $id . ' og Value : ' . $value . "\r\n";
}
Avatar billede trax Nybegynder
11. marts 2008 - 14:43 #23
Sidder lige og koger nu.. Har totalt tabt tråden.

Dette skal sendes med mailen:

if(isset($_SESSION['items']) && is_array($_SESSION['items'])){
    echo '<table border="0" cellspacing="2" cellpadding="0">';
    echo '<tr height="15"><td class="header" width="35">ID #</td><td class="header" width="250">Latinsk navn:</td><td class="header" width="250">Populærnavn:</td><td class="header" width="100">Akvariesiden:</td><td class="header" width="100">Google:</td><td class="header" width="35">Slet</td></tr>';
    ksort($_SESSION['items']);
    foreach($_SESSION['items'] AS $id => $item){
        echo '<tr height="15"><td class="output" bgcolor="#f4f4f4" width="35">' . $id . '</td><td class="output" bgcolor="#f4f4f4" width="250">'.$item['text'].'</td><td class="output" bgcolor="#f4f4f4" width="250">'.$item['text'].'</td><td class="output" bgcolor="#f4f4f4" width="100"><a href="http://www.google.dk/search?hl=da&q='.$item['text'].'" target="_blank">Akvariesiden</a></td><td class="output" bgcolor="#f4f4f4" width="100"><a href="http://www.google.dk/search?hl=da&q='.$item['text'].'" target="_blank">Google</a></td><td class="output" bgcolor="#f4f4f4" width="35"><a href="send_mail.php?remove='.$id.'"><img src="images/delete.gif" alt="" height="15" width="15" border="0"></a></td></tr>';
    }
    echo '</table>';
}

Kan jeg lave det til et array ?
Avatar billede trax Nybegynder
11. marts 2008 - 14:57 #24
Kom lige i tanke om, at "slet" self. ikke skal sendes med.

Så det letteste er nok at få udskrevet tabellen på ny (ikke synlig) og sende den
Avatar billede jakobdo Ekspert
11. marts 2008 - 15:03 #25
Du skal bare rette:

echo til: $besked

echo 'Hej med dig';
skal så blive:
$besked .= 'Hej med dig';
Avatar billede trax Nybegynder
11. marts 2008 - 15:15 #26
Prøv lige at send en mail til dig.

Jeg modtager html-sourcen :/ ..
Avatar billede jakobdo Ekspert
11. marts 2008 - 15:25 #27
Du bør evt. overveje at bruge: phpmailer() så. http://phpmailer.codeworxtech.com/
Avatar billede trax Nybegynder
11. marts 2008 - 15:33 #28
Kigger jeg lige på.

Har ellers sat dette:
$header  = 'MIME-Version: 1.0' . "\r\n";
$header .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
Avatar billede jakobdo Ekspert
11. marts 2008 - 15:37 #29
Det er også en start.
Men phpmailer() er dejlig når du skal lege med emails.
Den understøtter både html og plaintext + en version med begge.
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