Avatar billede b_ Nybegynder
13. december 2005 - 11:58 Der er 22 kommentarer og
1 løsning

Afsendelse af formular

Hej Eksperter - håber I kan hjælpe.

Jeg har en formular som skal afsendes vha. php og valideres vha. javascript, men den bliver ikke afsendt? Hvad gør jeg forkert?

<body>

<?php
if(isset($_POST['send'])){

mail("xxxx@xxxx.dk", "$_POST[emne]", "$_POST[tlfnr]", "$_POST[test]", "$_POST[kommentar]",  "From: $_POST[navn] <$_POST[email]>\nContent-type: text/html; charset=iso-8859-1");
echo "Din mail er nu sendt";
}
if(!isset($_POST['send'])){
?>

<form action="<?php echo $PHP_SELF; ?>" method="post" onsubmit="return validering(this);">
<table id="kontaktos">

<tr>
<td>Navn :</td>
<td><input class="kontaktos_felt" type="text" name="navn" /></td>
</tr>
<tr>
<td>Telefonnummer :</td>
<td><input class="kontaktos_felt" type="text" name="tlfnr" /></td>
</tr>
<tr>
<td>Email adresse : </td>
<td><input class="kontaktos_felt" type="text" name="email" /> *<br /></td>
</tr>
<tr>
  <td>Læge : </td>
  <td><select class="kontaktos_felt" name="test">
<option value=""> TEST </option>
<option value="1">Nummer 1</option>
<option value="2">Nummer 2</option>
<option value="3">Nummer 3</option>
<option value="4">Nummer 4</option>
<option value="5">Nummer 5</option>
</select></td>
</tr>
<tr>
  <td>Emne : </td>
  <td><select class="kontaktos_felt" name="emne">
<option value=""> Vælg et emne </option>
<option value="1">Nummer 1</option>
<option value="2">Nummer 2</option>
<option value="3">Nummer 3</option>
<option value="4">Nummer 4</option>
<option value="5">Nummer 5</option>
<option value="6">Nummer 6</option>
</select></td>
</tr>
<tr>
<td>Kommentar :</td>
<td><textarea class="kontaktos_felt" name="kommentar" rows="4" cols="22"></textarea> *</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Send" />
<input type="reset" value="Nulstil" /></td>
</tr>

</table>
</form>
<?php
}
?>
</body>
Avatar billede b_ Nybegynder
13. december 2005 - 12:01 #1
valideringskoden i js ser sådan ud hvis det har nogen betydning:

function validering(indsend){

  if(indsend.email.value==''){
    alert('Email-adresse skal udfyldes');
    indsend.email.focus();
    return false;
  }

  if(!indsend.email.value.match(/^.*?@\w[\w.-]*\.[a-z]{2,6}$/i)){
    alert('Email-adresse skal udfyldes med en gyldig adresse');
    indsend.email.focus();
    return false;
  }


  if(indsend.kommentar.value==''){
    alert('For at vi kan hjælpe, skal du skrive hvad der er galt');
    indsend.kommentar.focus();
    return false;
  }

  return true;
}
Avatar billede johan.o Nybegynder
13. december 2005 - 12:07 #2
Prøv at ændre i dit form tag, således at det er :

$_SERVER['PHP_SELF']

istedet for bare $PHP_SELF

Mvh. Johan
Avatar billede johan.o Nybegynder
13. december 2005 - 12:11 #3
Ja, og dog, det er måske fordi du checker på $_POST['send'] men du har ikke defineret et form felt med navn="send". Du mener sikkert din submit knap, men så skal du vel tilføje name="Send" til knappen eller istedet bare teste på et andet felt i formen f.eks. $_POST['navn']

Mvh. Johan
Avatar billede b_ Nybegynder
13. december 2005 - 12:18 #4
Det gør ingen forskel
Avatar billede jaw Nybegynder
13. december 2005 - 12:24 #5
Prøv:
mail("xxxx@xxxx.dk", $_POST['emne'], $_POST['tlfnr'].", ". $_POST['test'].", ". $_POST['kommentar'].", "From:". $_POST['navn']." <".$_POST['email'].">\nContent-type: text/html; charset=iso-8859-1");
Avatar billede b_ Nybegynder
13. december 2005 - 12:25 #6
Selfølgelig skal submit knappen have name="send" ;o) min fejl.

Men nu får jeg denne fejlmeddelse:
Warning: mail() expects at most 5 parameters, 6 given in

Det forstår jeg ikke?
Avatar billede jaw Nybegynder
13. december 2005 - 12:27 #7
Prøv lige at rette til min i første omgang, hvis du ikke har gjort det? For du havde rod i dine kommaer til separering af teksten, hvor du separerede i funktionen.
Avatar billede b_ Nybegynder
13. december 2005 - 12:27 #8
Jaw: Din giver denne fejl: Parse error: parse error, unexpected T_STRING
Avatar billede jaw Nybegynder
13. december 2005 - 12:28 #9
Yes, havde fået en " for meget:
mail("xxxx@xxxx.dk", $_POST['emne'], $_POST['tlfnr'].", ". $_POST['test'].", ". $_POST['kommentar'].", From:". $_POST['navn']." <".$_POST['email'].">\nContent-type: text/html; charset=iso-8859-1");
Avatar billede jaw Nybegynder
13. december 2005 - 12:29 #10
Hov, der var endnu en fejl, sådan:

mail("xxxx@xxxx.dk", $_POST['emne'], $_POST['tlfnr'].", ". $_POST['test'].", ". $_POST['kommentar'], "From:". $_POST['navn']." <".$_POST['email'].">\nContent-type: text/html; charset=iso-8859-1");

Beklager!
Avatar billede b_ Nybegynder
13. december 2005 - 12:30 #11
Tester lige og skal nok huske at opdatere browseren engang imellem så jeg ikke svare i øst og vest ;)
Avatar billede b_ Nybegynder
13. december 2005 - 12:39 #12
Fantastisk... Det virker.

Hvordan får jeg det så til også at stille det pænt op i den mail der bliver sendt?
Noget i stil med:

Navn:
Email:
Tlfnr:
Test:
Emne:
Kommentar:
Avatar billede jaw Nybegynder
13. december 2005 - 12:42 #13
Ja, det er simpelt nok, men så vil jeg altså lave et ekstra skridt for overskuelighedens skyld:

$besked = "Telefonnr.: ". $_POST['tlfnr']."\nTest: ". $_POST['test']."\nKommentar: ". $_POST['kommentar'];

mail("xxxx@xxxx.dk", $_POST['emne'], $besked, "From:". $_POST['navn']." <".$_POST['email'].">\nContent-type: text/html; charset=iso-8859-1");

Altså opretter en ny variabel til selve beskeden. Og så giver \n et linieskift - eller det bør det :)
Avatar billede b_ Nybegynder
13. december 2005 - 12:44 #14
Og hvordan får man dropdown menuerne udskrivet. Altså vælger jeg nummer 2 i TEST skriver den 2 og selvom jeg giver den value="nummer_2".

Hvordan får man det der står i dropdownen med? Forstår du mit spg?
Avatar billede jaw Nybegynder
13. december 2005 - 12:46 #15
Nej, det forstår jeg nok ikke helt. Hvis du har lavet test rigtigt, som:

<select name='test'>
  <option value='nummer_2'>2</option>
</select>

Så bør $_POST['test'] indeholde "nummer_2". Sikker på du får refreshet siden rigtigt? Du kan jo altid kontrollere med browserens kildekode.
Avatar billede b_ Nybegynder
13. december 2005 - 12:51 #16
Hmm nu virker det - må have misset et refresh.

Felterne står ikke nedenunder hinanden i mailen? Burde de ikke det når man bruger /n?
Avatar billede jaw Nybegynder
13. december 2005 - 12:56 #17
Så prøv \r\n i stedet for \n.
Avatar billede b_ Nybegynder
13. december 2005 - 12:59 #18
Det hjælper ikke - står stadig på samme linie!
Avatar billede jaw Nybegynder
13. december 2005 - 13:04 #19
Nåå, jamen det er jo fordi du sender det som html - min fejl. Så er det jo selvfølgelig <br />. Men så skal du jo være opmærksom på, at nogen ikke kan modtage html-mails.
Avatar billede b_ Nybegynder
13. december 2005 - 13:08 #20
Hvordan kan jeg ellers sende det evt. så jeg kan nå ud til "alle".
Avatar billede jaw Nybegynder
13. december 2005 - 13:13 #21
Bare send den som ren tekst, altså fjerne det med charset. Så bliver den sendt som ren tekst, og så vil \n eller \r\n virke.
Avatar billede b_ Nybegynder
13. december 2005 - 13:36 #22
Super - det spiller - smid et svar
Avatar billede jaw Nybegynder
13. december 2005 - 13:42 #23
Yes, svar :)
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