Gå til innhold

Hjelp med option value i kontaktskjema


Anbefalte innlegg

Jobber med å lage et kontaktskjema hvor besøkende kan velge hvilke avdeling de besøkende skal kontakte. 

 

Skjemaet nedenfor fungerer, men process.php tar ikke hensyn til: option value

Jeg ønsker at dersom noen velger f.eks <option value="sporsmal"> skal mail bli sendt til:[email protected], dersom noen velger reklamasjon skal mailen bli sendt til: [email protected]. Hvordan gjør man dette?

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'Fra test'; 
    $to = '[email protected]'; 

    $body = "From: $name\n E-Mail: $email\n Message:\n $message";
?>

<?php
if ($_POST['submit']) {
    if (mail ($to, $subject, $body, $from)) { 
        header("Location:#");
    } else { 
        echo '<p>Woops! Det har skjedd en feil. Vennligst prøv igjen!</p>'; 
    }
}
?>
<form action="process.php" method="post" enctype="multipart/form-data">
   <input name="name" required="required" placeholder="Ditt navn">
   <label></label>
   <input name="email" type="email" required="required" placeholder="Din E-post">
   <label></label>
<select name ="avdeling">
<option value="#">Hva gjelder din forespørsel?</option>
<option value="sporsmal">Spørsmål</option>
<option value="reklamasjon">Reklamasjon</option>
</select>
<label></label>
   <textarea name="message" cols="20" rows="5" required placeholder="Din melding"></textarea>
   <input id="submit" name="submit" type="submit" value="Send">
   </form>
Endret av 13375k1133z
Lenke til kommentar
Videoannonse
Annonse

 

Jobber med å lage et kontaktskjema hvor besøkende kan velge hvilke avdeling de besøkende skal kontakte. 

 

Skjemaet nedenfor fungerer, men process.php tar ikke hensyn til: option value

Jeg ønsker at dersom noen velger f.eks <option value="sporsmal"> skal mail bli sendt til:[email protected], dersom noen velger reklamasjon skal mailen bli sendt til: [email protected]. Hvordan gjør man dette?

 

 

En enkel if/else fikser dette, hvis det ikke er valgt "reklamasjon" vil de automatisk bli sendt til [email protected]

 

feks slik:

<?php
    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'Fra test'; 
    if( $_POST['avdeling'] == "reklamasjon" )
    {
         $to = "[email protected]";
    }
    else
    {
         $to = "[email protected]"; 
    }

    $body = "From: $name\n E-Mail: $email\n Message:\n $message";
?>

<?php
if ($_POST['submit']) {
    if (mail ($to, $subject, $body, $from)) { 
        header("Location:#");
    } else { 
        echo '<p>Woops! Det har skjedd en feil. Vennligst prøv igjen!</p>'; 
    }
}
?>
Lenke til kommentar

En annen tilnærming.

$domain = "@test.no";
$defaultDep = "sporsmal" . $domain;

$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$from = 'Fra test';

// Sjekker om avdeling er satt i post forespørsel og om post ikke er $defaultDep. Om den er det er $to verdien til defaultDep ([email protected])
$to = isset($_POST['avdeling']) && $_POST['avdeling']) !== $defaultDep ? $_POST['avdeling'] . $domain : $defaultDep;

$body = "From: $name\n E-Mail: $email\n Message:\n $message";

Koden er ikke testet, og skrevet fort da jeg er på farta på telefonen, og sjekkom om avdelinger og slikt er ikke tatt med, og burde sjekkes, samt sanitering av post forespørsler.

Endret av [email protected]
Lenke til kommentar

med tanke på at det sannsynligvis er flere enn 2 avdelinger, så kan en php.switch være aktuellt å benytte:

switch($_POST['avdeling']){
  case 'reklame':  $department = '[email protected]';
  default: $department = '[email protected]';  //  denne vil bli benyttet om ingen avd. er valgt.
}

$mailTo = $department;

På denne måten kan du legge til så mange avdelinger du måtte ønske ved å legge til en nye "swtich.case".

$domain = '@test.no';
switch($_POST['avdeling']){
  case 'reklame':  $department = 'reklamasjon';  break;
  case 'sporsmal':  $department = 'sporsmal';  break;
  case 'avd3':  $department = 'avd3';  break;
  //  ...
  case 'avd99': $department = 'avd99';  break;
  default: $department = 'post';  //  denne vil bli benyttet om ingen avd. er valgt.
}

$mailTo = $department.$domain;

Om avdelingene ligger lagret i en database kan du foreta en sql spørring hvor du da velger hvilken epost som skal benyttes basert på valget:

/*  eksempel for MySQL og PHP PDO  */
$get_department = $dbh->prepare('SELECT email FROM departments WHERE name = ?');
$get_department->execute(array($_POST['avdeling']));
$mailTo = $get_department->fetchColumn();

Denne løsningen vil være den mest gunstige da du kan gå vekk fra å hardkode hver avdeling, og lett kan legge til nye avdelinger osv..

Lenke til kommentar

Hei, prøvde denne koden, men det fungerer ikke. Hva er feil? (mailadd er selvsagt byttet...)

 

<?php

    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'Fra kontaktskjema'; 
    if( $_POST['avdeling'] == "reklamasjon" )
    {
         $to = "[email protected]";
    }
    else
    {
         $to = "[email protected]";
    }
 
    $body = "From: $name\n E-Mail: $email\n Message:\n $message";
?>
 
<?php
if ($_POST['submit']) {
    if (mail ($to, $subject, $body, $from)) { 
        header("Location: #");
    } else { 
        echo '<p>Woops! Det har skjedd en feil. Vennligst prøv igjen!</p>'; 
    }
}
?>
Lenke til kommentar

 

Hei, prøvde denne koden, men det fungerer ikke. Hva er feil? (mailadd er selvsagt byttet...)

 

<?php

    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'Fra kontaktskjema'; 
    if( $_POST['avdeling'] == "reklamasjon" )
    {
         $to = "[email protected]";
    }
    else
    {
         $to = "[email protected]";
    }
 
    $body = "From: $name\n E-Mail: $email\n Message:\n $message";
?>
 
<?php
if ($_POST['submit']) {
    if (mail ($to, $subject, $body, $from)) { 
        header("Location: #");
    } else { 
        echo '<p>Woops! Det har skjedd en feil. Vennligst prøv igjen!</p>'; 
    }
}
?>

 

Hvordan fungerer det ikke, om feilen ikke er den uthevet i rødt over?

Lenke til kommentar

 

 

Hei, prøvde denne koden, men det fungerer ikke. Hva er feil? (mailadd er selvsagt byttet...)

 

<?php

    $name = $_POST['name'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'Fra kontaktskjema'; 
    if( $_POST['avdeling'] == "reklamasjon" )
    {
         $to = "[email protected]";
    }
    else
    {
         $to = "[email protected]";
    }
 
    $body = "From: $name\n E-Mail: $email\n Message:\n $message";
?>
 
<?php
if ($_POST['submit']) {
    if (mail ($to, $subject, $body, $from)) { 
        header("Location: #");
    } else { 
        echo '<p>Woops! Det har skjedd en feil. Vennligst prøv igjen!</p>'; 
    }
}
?>

 

Hvordan fungerer det ikke, om feilen ikke er den uthevet i rødt over?

 

Har selvsagt endret mail til riktig. 

Feilmeldingen jeg får er: 

 

Nettstedet støtte på en feil ved henting av http://...php. Det kan være stengt for vedlikehold eller feilaktig konfigurert.

Lenke til kommentar

Lenge siden jeg brukte header('Location') til å redirekte, men burde det ikke være header('Location: /') for å gå til root? Feilmelding du får ser ut til å være fra nettleseren din, ikke fra webserveren eller scriptet - som tyder på at du routes til feil sted.

 

Feilen i rødt tidligere kommentert tror jeg var at du:

1) Har glemt å lukke med semikolon

2) Assinger først en e-post til $to, deretter overskriver du den igjen, fremfor å legge til em ekstra e-post.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...