Avatar billede mcclaud Nybegynder
12. december 2010 - 13:30 Der er 17 kommentarer og
1 løsning

Mailscript

Jeg har her på eksperten.dk fået lavet et rigtig godt JavaScript, hvor man kan vælge at købe op til tre malerier i ønskede størrelser. Scriptet kan udregne priser for hvert enkelt maleri, fragtomkostninger, rabat ved køb af flere malerier og totalpris. Se scriptet her: http://jsbin.com/ofuga3/11

Det, jeg har brug for nu, er at få lavet et mail-script, som ovennævnte script bliver en del af. Der skal således tilføjes følgende felter til scriptet:

- Navn
- E-mail
- Adresse
- Postnr.
- By
- Kendskab (rulleliste med valgmuligheder)
- Kommentar (felt til fritekst)
- Send og Nulstil-knap

Alle felter skal være obligatoriske undtagen 'Kommentar-feltet'. Jeg kunne godt tænke mig, at 'E-mail-feltet' bliver udstyret med validering.

:o) mcclaud
Avatar billede mcclaud Nybegynder
12. december 2010 - 13:31 #1
Jeg glemte lige at skrive, at jeg har webhotel hos www.one.com.

:o) mcclaud
Avatar billede martiinkolle Nybegynder
12. december 2010 - 16:23 #2
hvilke tal vil du have med fra javascriptet?
Avatar billede mcclaud Nybegynder
13. december 2010 - 11:35 #3
Hej martiinkolle

Hvad mener du med 'hvilke tal', jeg vil have med? Jeg forstår ikke???
Avatar billede martiinkolle Nybegynder
13. december 2010 - 19:25 #4
okay, har lavet et lille script til dig, hvor jeg har inkluderet det foregående javascript.

Har ikke lavet nogen validering, enten med php eller js.

{CODE} FILNAVN: index.php

<?php

//variablerne
$navn = $_POST['navn'];
$email = $_GET['email'];
$postnr = $_GET['postnr'];
$by = $_POST['by'];
$adresse = $_POST['adresse'];
$kendskab = $_POST['kendskab'];
$kommentar = $_POST['kommentar'];

$malleri_1 = $_POST['maleri[1]'];
$pris_1 = $_POST['pris[1]'];

$malleri_2 = $_POST['maleri[2]'];
$pris_2 = $_POST['pris[2]'];

$malleri_2 = $_POST['maleri[3]'];
$pris_3 = $_POST['pris[3]'];

$pris = $_POST['total'];
$rabat = $_POST['rabat'];
$fragt = $_POST['fragt'];

if (isset($_POST['submit'])) {

echo $navn ."-". $pris ."-". $rabat ."-". $fragt;



// ALT FOR simpel validering - der skal være skrevet noget i felterne
if ($navn == '' || $email =='' || $postnr =='' || $by ==''|| $kendskab == ''){die('Alle felter mangler, eller delvist');}

//Bliver sendt til mail
$to      = 'martin.kollerup@gmail.com';
//emne
$subject = 'Ny bestilling';
//Beskeden
$message = '
Hey '. $navn.' <br /><br />
Tak for din bestilling ved os. Nedenfor ser du din bestilling, som ser god ud.<br /><br />
<table border="1">
<tr><td>Navn</td><td>'.$navn.'</td></tr>
<tr><td>Adresse</td><td>'.$adresse.'</td></tr>
<tr><td>postn.</td><td>'.$postnr.'</td></tr>
<tr><td>By</td><td>'.$by.'</td></tr>
<tr><td>Email</td><td>'.$email.'</td></tr>
<tr><td>Kendskab</td><td>'.$kendskab.'</td></tr>
<tr><td>Kommentar</td><td>'.$kommentar.'</td></tr>
<tr><td>Malleri 1</td><td>'.$malleri_1.'</td></tr>
<tr><td>pris 1</td><td>'.$pris_1.'</td></tr>

<tr><td>Malleri 2</td><td>'.$malleri_2.'</td></tr>
<tr><td>pris 2</td><td>'.$pris_2.'</td></tr>

<tr><td>Malleri 3</td><td>'.$malleri_3.'</td></tr>
<tr><td>pris 3</td><td>'.$pris_3.'</td></tr>

<tr><td>Rabat</td><td>'.$rabat.'</td></tr>
<tr><td>Pris</td><td>'.$pris.'</td></tr>
<tr><td>Fragt</td><td>'.$fragt.'</td></tr>


</table>
'//Datoen bliver vist. bruger det selv når jeg tester systemet.
.date("g:i:s A D, F jS Y").'
';
    $headers  = "MIME-Version: 1.0\r\n";
    $headers .= "Content-type: text/html; charset=iso-8859-1\r\n"; //Angiver at mailens indhold er i HTML-format
    $headers .= "from:martiinkolle@gmail.com \r\n";
//sender mailen
mail($to, $subject, $message, $headers);

if (!mail){echo "der skete en fejl";}

}//Submit vi siger slut
?>

<html>

<head>
HER SKAL DU SÆTTE DIN JAVASCRIPT IND! INGEN GRUND TIL AT JEG POSTER DEN IGEN :D
</head>
<body>
<form action="index.php" method="post">
      <div>
    Maleri: <select size="1" name="maleri[1]" id="maleri_1" onchange="beregn(1)">
    <option>Vælg maleri</option>
    <option value="1000">Maleri 1</option>
    <option value="2000">Maleri 2</option>
    <option value="3000">Maleri 3</option>
    <option value="4000">Maleri 4</option>
    <option value="5000">Maleri 5</option>
    </select>
    </div>
    <div>
    Størrelse: <select size="1" name="stoerrelse[1]" id="stoerrelse_1" onchange="beregn(1)">
    <option>Vælg størrelse</option>
    <option value="100">10x10</option>
    <option value="200">20x20</option>
    <option value="300">30x30</option>
    <option value="400">40x40</option>
    <option value="500">50x50</option>
    </select>
  </div>
  <div>
    Pris: <input type="text" name="pris[1]" id="pris_1" />
  </div>
     
            <div>
    Maleri: <select size="1" name="maleri[2]" id="maleri_2" onchange="beregn(2)">
    <option>Vælg maleri</option>
    <option value="1000">Maleri 1</option>
    <option value="2000">Maleri 2</option>
    <option value="3000">Maleri 3</option>
    <option value="4000">Maleri 4</option>
    <option value="5000">Maleri 5</option>
    </select>
    </div>
    <div>
    Størrelse: <select size="1" name="stoerrelse[2]" id="stoerrelse_2" onchange="beregn(2)">
    <option>Vælg størrelse</option>
    <option value="100">10x10</option>
    <option value="200">20x20</option>
    <option value="300">30x30</option>
    <option value="400">40x40</option>
    <option value="500">50x50</option>
    </select>
  </div>
  <div>
    Pris: <input type="text" name="pris[2]" id="pris_2" />
  </div>
     
            <div>
    Maleri: <select size="1" name="maleri[3]" id="maleri_3" onchange="beregn(3)">
    <option>Vælg maleri</option>
    <option value="1000">Maleri 1</option>
    <option value="2000">Maleri 2</option>
    <option value="3000">Maleri 3</option>
    <option value="4000">Maleri 4</option>
    <option value="5000">Maleri 5</option>
    </select>
    </div>
    <div>
    Størrelse: <select size="1" name="stoerrelse[3]" id="stoerrelse_3" onchange="beregn(3)">
    <option>Vælg størrelse</option>
    <option value="100">10x10</option>
    <option value="200">20x20</option>
    <option value="300">30x30</option>
    <option value="400">40x40</option>
    <option value="500">50x50</option>
    </select>
  </div>
  <div>
    Pris: <input type="text" name="pris[3]" id="pris_3" />
  </div>
 
  <div>
    Rabat: <input type="text" name="rabat" id="rabat" />
  </div>
 
    <div>
    Fragt: <input type="text" name="fragt" id="fragt" />
  </div>
      <div>
    Total: <input type="text" name="total" id="total" />
  </div>
        <label>Navn</label>
        <input type="text" name="navn" class="tekst" />

        <label>email</label>
        <input type="text" name="email" class="tekst" />

        <label>Adresse</label>
        <input type="text" name="adresse" class="tekst" />

        <label>Post Nr.</label>
        <input type="text" name="postnr" class="tekst" />

        <label>By</label>
        <input type="text" name="by" class="tekst" />
       
        <label>Kendskab</label>
        <select name="kendskab">
        <option value="Ja">Ja</option>
        <option value="Nej">Nej</option>
        <option value="Ikke">ikke</option>

        </select>       
       
        <label>Kommentar</label>
        <textarea name="kommentar"> </textarea>
       
        <input type="submit" id="submit" name="submit"/>
    </form>
Avatar billede martiinkolle Nybegynder
13. december 2010 - 19:27 #5
det skal lige siges at det her ikke er sikkert. Hvis du skal bruge det her til bestillign af malerier, så kan de bare ændre prisen(det felt fra dit script) og vupti så er det lige pludselig lidt billigere.
Avatar billede mcclaud Nybegynder
15. december 2010 - 14:33 #6
Hej martiinkolle

Ja, det er problematisk... Kan jeg tilføje noget kode, så det ikke kan lade sig gøre at ændre i pris-feltet... Og gælder det samme forhold i øvrigt mht. 'Fragt-pris' og 'Rabat-pct'?

mcclaud
Avatar billede martiinkolle Nybegynder
15. december 2010 - 20:12 #7
Hmm, det ved jeg faktisk ikke helt. Koden er jo kun i frontend, og det gør at man kan ændre i den, ligemeget hvor sikker man laver den.
Så hvis du vil være på den helt sikre side, så skal koden også skrives i backend, dvs. i php eller lign.

Hvis du ved at der ikke kommer nogen forbi, som kunne finde på at gøre det, så er det jo fint. Du kan jo også selv tjekke prisen, efter du har fået odren. Det er jo ikke så forfærdelig mange malerier. :D
Avatar billede mcclaud Nybegynder
15. december 2010 - 23:33 #8
Hej martiinkolle

Jeg tror, at du har ret. Lige pt. gør jeg ikke mere ved sagen.

:o)
Avatar billede mcclaud Nybegynder
15. december 2010 - 23:43 #9
Hej igen martiinkolle

Og i øvrigt tak for indsatsen med scriptet. Jeg har kun ét lille problem, jeg godt kunne tænke mig at få løst. Jeg har testet scriptet og fundet ud af, at når jeg modtager en mail med de indtastninger, som brugeren har gjort, får jeg tilsendt oplysninger om maleriets value (dvs. 1000, 2000, 3000, 4000 eller 5000). Det er ikke så godt, for jeg har brug for maleriets navn (dvs. Maleri 1, Maleri 2, Maleri 3, Maleri 4 eller Maleri 5). Se udpluk her:

    <option value="1000">Maleri 1</option>
    <option value="2000">Maleri 2</option>
    <option value="3000">Maleri 3</option>
    <option value="4000">Maleri 4</option>
    <option value="5000">Maleri 5</option>

Kan man gøre et eller andet, så jeg får tilsendt oplysning om navnet i stedet for 'value'... Det samme gør sig i øvrigt gældende mht. 'Størrelse'. Se her:

    <option value="100">10x10</option>
    <option value="200">20x20</option>
    <option value="300">30x30</option>
    <option value="400">40x40</option>
    <option value="500">50x50</option>

mvh mcclaud
Avatar billede mcclaud Nybegynder
29. december 2010 - 13:46 #10
Hej martiinkolle

Tak for din indsats. Desværre kunne jeg ikke helt bruge svaret, da der er nogle udeståender. Dog vil jeg gerne belønne din store indsats med point, så hvis du poster et svar, så accepterer jeg det.

Jeg har stillet et nyt spørgsmål, som klarlægger mine behov på en meget nem og overskuelig måde.

Se spørgsmålet her: http://www.eksperten.dk/spm/927538

Godt Nytår
mcclaud
Avatar billede martiinkolle Nybegynder
08. januar 2011 - 13:42 #11
Du har givet pointene til dig selv.  :D

Men det var så lidt :p
Avatar billede mcclaud Nybegynder
08. januar 2011 - 16:59 #12
Hej martiinkolle

Jeg skrev til dig den 29. december, at jeg gerne ville have givet dig alle pointene, men du reagerede ikke, så jeg lukkede spørgsmålet.

Jeg troede ikke, at du koncentrede dig om tråden længere, da dit seneste indlæg er helt tilbage fra den 15. december...

Jeg vil gerne genåbne spørgsmålet, men jeg ved ikke hvordan?  :o(
Avatar billede martiinkolle Nybegynder
08. januar 2011 - 18:12 #13
Ej det går nok. Jeg har vist haft lidt problemer med min mail, for har slet ikke fået besked om at du har svaret. (15 december) :D

Det kan laves sådan her ca:
    <script type="text/javascript">
      var rabat_val = 0;

    function number_format(number, decimals, dec_point, thousands_sep) {
      number = (number+'').replace(',', '').replace(' ', '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}
     
    function beregn(num){
      var maleri    = parseInt(document.getElementById('maleri_' + num).class);
      var stoerrelse = parseInt(document.getElementById('stoerrelse_' + num).class);
      if(maleri > 0 && stoerrelse > 0){
        document.getElementById('pris_' + num).value = number_format(maleri + stoerrelse,2,',','.');
      }else{
        document.getElementById('pris_' + num).value = "0,00";
      }
     
      rabat();
    }
   
    function rabat(){
      var antal_malerier = 0;
      var total = 0;
      var fragt = 0;
      for(i = 1; i <= 3; i++){
        var maleri    = parseInt(document.getElementById('maleri_' + i).class);
        var stoerrelse = parseInt(document.getElementById('stoerrelse_' + i).class);
        if(maleri > 0 && stoerrelse > 0){
          antal_malerier++;
          total += (maleri + stoerrelse);
        }
      }
     
      switch(antal_malerier){
        case 0:
          rabat_val = 0;
          break;
        case 1:
          rabat_val = 0;
          break;
        case 2:
          rabat_val = 10;
          break;
        case 3:
          rabat_val = 20;
          break;
        default:
          rabat_val = 0;
      }
      document.getElementById('rabat').value = rabat_val + '%';
     
      if(antal_malerier>0){
        fragt = 75;
      }else{
        fragt = 0;
      }
     
    var rabat_procent = 1 - parseInt(rabat_val)/100;
      sub_total = parseInt((rabat_procent * total)) + parseInt(fragt);
      document.getElementById('fragt').value = number_format(fragt,2,',','.');
      document.getElementById('total').value = number_format(sub_total,2,',','.');
    }
    </script>
  </head>
  <body>
    <form action="" method="post">
      <div>
    Maleri: <select size="1" name="maleri[1]" id="maleri_1" onchange="beregn(1)">
    <option>Vælg maleri</option>
    <option value="Malleri1" class="1000">Maleri 1</option>
    <option value="Malleri2" class="2000">Maleri 2</option>
    <option value="Malleri3" class="3000">Maleri 3</option>
    <option value="Malleri4" class="4000">Maleri 4</option>
    <option value="Malleri5" class="5000">Maleri 5</option>
    </select>
    </div>
    <div>
    Størrelse: <select size="1" name="stoerrelse[1]" id="stoerrelse_1" onchange="beregn(1)">
    <option>Vælg størrelse</option>
    <option value="10x10" class="100">10x10</option>
    <option value="20x20" class="200">20x20</option>
    <option value="30x20" class="300">30x30</option>
    <option value="40x40" class="400">40x40</option>
    <option value="50x50q" class="500">50x50</option>
    </select>
  </div>
  <div>
    Pris: <input type="text" name="pris[1]" id="pris_1" />
  </div>
     
            <div>

//HER KOMMER SÅ RESTEN AF DINE FELTER. LAVEDE KUN DE TO FØRSTE SOM EKSEMPEL:
Avatar billede mcclaud Nybegynder
09. januar 2011 - 10:07 #14
Hej martiinkolle

Tak fordi du prøver igen...  :o)

Jeg har rettet scriptet til, men der er stadig noget galt. Jeg tror dog kun, at det er bittesmå detaljer. Se scriptet her:
http://www.peterdue.com/picturing-life/beregning/martiinkolle.htm

:o) mcclaud
Avatar billede martiinkolle Nybegynder
09. januar 2011 - 11:52 #15
Glemte lige at ændre noget:


<script type="text/javascript">
      var rabat_val = 0;

    function number_format(number, decimals, dec_point, thousands_sep) {
      number = (number+'').replace(',', '').replace(' ', '');
    var n = !isFinite(+number) ? 0 : +number,
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;
        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }
    return s.join(dec);
}
     
    function beregn(num){
      var maleri    = parseInt(document.getElementById('maleri_' + num).class);
      var stoerrelse = parseInt(document.getElementById('stoerrelse_' + num).class);
      if(maleri > 0 && stoerrelse > 0){
        document.getElementById('pris_' + num).class = number_format(maleri + stoerrelse,2,',','.');
      }else{
        document.getElementById('pris_' + num).class = "0,00";
      }
     
      rabat();
    }
   
    function rabat(){
      var antal_malerier = 0;
      var total = 0;
      var fragt = 0;
      for(i = 1; i <= 3; i++){
        var maleri    = parseInt(document.getElementById('maleri_' + i).class);
        var stoerrelse = parseInt(document.getElementById('stoerrelse_' + i).class);
        if(maleri > 0 && stoerrelse > 0){
          antal_malerier++;
          total += (maleri + stoerrelse);
        }
      }
     
      switch(antal_malerier){
        case 0:
          rabat_val = 0;
          break;
        case 1:
          rabat_val = 0;
          break;
        case 2:
          rabat_val = 10;
          break;
        case 3:
          rabat_val = 20;
          break;
        default:
          rabat_val = 0;
      }
      document.getElementById('rabat').value = rabat_val + '%';
     
      if(antal_malerier>0){
        fragt = 75;
      }else{
        fragt = 0;
      }
     
    var rabat_procent = 1 - parseInt(rabat_val)/100;
      sub_total = parseInt((rabat_procent * total)) + parseInt(fragt);
      document.getElementById('fragt').value = number_format(fragt,2,',','.');
      document.getElementById('total').value = number_format(sub_total,2,',','.');
    }
    </script>
Avatar billede mcclaud Nybegynder
09. januar 2011 - 12:05 #16
Den er der desværre ikke helt endnu... Den foretager ikke beregningerne?

http://www.peterdue.com/picturing-life/beregning/martiinkolle.htm
Avatar billede martiinkolle Nybegynder
09. januar 2011 - 20:43 #17
jeg har overset et eller andet, men kan ikke lige finde det. Prøv og kontakt ham/hende der har lavet det :D
Avatar billede mcclaud Nybegynder
09. januar 2011 - 21:59 #18
Hej martiinkolle

Jeg har nu prøvet at sende en mail til ham, som hjalp mig med scriptet i første omgang...

Indtil videre mange tak for hjælpen.

:o) mcclaud
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