Avatar billede jost Nybegynder
23. oktober 2006 - 22:51 Der er 5 kommentarer og
1 løsning

Mailform der også indsætter i database.

Hej

Jeg har har lavet en mail form der skal sende en mail men også putte data i en database.
Men den virker ikke. Den sender ikke mail og indsætter ikke noget i databasen.

Scriptet består af to filer: selve mailformen og php-koden

Mailform:

----------------
<script language="JavaScript">
<!--


function valider () {
switch ("") {
case document.tilmeld.name.value:
window.alert ("Du har glemt at indtaste dit navn");
return false;
break;
case document.tilmeld.aargang.value:
window.alert ("Du har glemt at indtaste din årgang");
return false;
break;
case document.tilmeld.liniefag.value:
window.alert ("Du har glemt at indtaste dit liniefag");
return false;
break;
case document.tilmeld.email.value:
window.alert ("Du har glemt at indtaste din email-adresse");
return false;
break;
}
}
-->
</script>
Da julefrokosten er for alle tidligere elever på Højskolen og ikke kun medlemmer af elevforeningen og tidligere elever med adgang til forummet, så er det lavet sådan at du skal indtaste navn, årgang, liniefag og email selvom du er logget ind.
Se de tilmeldte nederst på siden.

<div class="style3" id="formular">
<form name="tilmeld" method="post" action="viewpage.php?page_id=2">

<p><strong>Husk at udfylde alle felter med *</strong></p>

<label for="t1">*Navn: </label>
<br />
<input id="t1" type="text" name="name" />
<br />
<br />

<label for="t7">*Årgang: </label>
<br />
<input id="t7" type="text" name="aargang" />
<br />
<span class="style4">F.eks.: <em>Forår 2003</em> eller hvis du har gået på to hold <em>Efterår 2002 og Forår 2003</em>.</span></p>
<!--
<form id="t8" name="jubilar" method="post" action="sender.php">
-->
<!--
</form>
!-->
<label for="t9">*Liniefag:</label>
<br />
<input id="t9" type="text" name="liniefag" />
<br /><br />


<label for="t2">*Email:</label>
<br />
<input id="t2" type="text" name="email" />
<br /><br />

<input id="t3" type="hidden" name="subject" value="Tilmelding til Julefrokosten 2006"/>

<label for="t4">Skriv en bemærkninger (det kan f.eks. være en hilsen eller om du er vegetar):</label>
<br />
<textarea id="t4" name="message" rows="7" cols="47"></textarea>
<br />

<label for="t5">Ønsker du en kvitering (kopi af de intastede informationer) tilsendt?</label>

<input type="checkbox" id="t5" name="customer_copy" checked="checked" />

<label for="t6"> </label> <br /><br />
<input id="t6" type="submit" name="submit" value=" Send Tilmelding "
onClick="java script:return valider()" />

<input type="reset" value=" Slet alt " />
</form>
<p>Ovenstående informationer sendes til Marianne på højskolens kontor.</p>
</div>
----------------

PHP-Koden:

-----------------------
<?php

include 'dbforbindelse.inc.php';

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

//Data fyldes i databasen
$name = $_POST['name'];
$email = $_POST['email'];
$besked = $_POST['message'];
$aargang = $_POST['aargang'];
$liniefag = $_POST['liniefag'];

$sql = "INSERT INTO tilmeldte SET
navn='$name',
email='$email',
besked='$besked',
liniefag='$liniefag',
ankomst='$ankomst',
dato=LOCALTIMESTAMP()";
if (@mysql_query($sql)) {





if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
!empty($_POST['email']) && // tjek, at der er skrevet en e-mail-adresse
!empty($_POST['subject']) && // tjek, at der er skrevet et subject
!empty($_POST['aargang']) && // tjek, at der er skrevet en argang
!empty($_POST['liniefag']) && // tjek, at der er skrevet et liniefag



// her følger sikringen mod spambotter
!strpos($_POST['name'], "stovringhojskole.dk") && // tjek, at dit domæne ikke er skrevet i feltet "navn"
//!strpos($_POST['email'], "stovringhojskole.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
!strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
!eregi("\r",$_POST['name']) && // tjek, at der ikke er "vogn-retur" i "navn"
!eregi("\n",$_POST['name']) && // tjek, at der ikke er "linjeskift" i "navn"
!eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
!eregi("\n",$_POST['email'])) // tjek, at der ikke er "linjeskift" i "email"

$mail_body="
Hej Marianne.

Jeg vil gerne tilmelde mig til Julefrokosten 2006.


Med venlig hilsen
$name
$aargang
Liniefag: $liniefag

Evt. bemærkning:
$besked";

$headers="From: ".$_POST['name']."<".$_POST['email'].">\r\nContent-Type: text/plain; charset=iso-8859-1\r\nContent-Disposition: inline\r\nContent-Transfer-Encoding: 8bit";
if (@$_POST['customer_copy'])
{
$headers .= "\r\nBcc: ".$_POST['email'];
}
if (@mail("jost@dicksmock.dk", strip_tags($_POST['subject']),
stripslashes(strip_tags($mail_body
/*'message' . 'aargang' . 'jubilar' . 'liniefag' . 'ankomst'*/)), $headers))
//Er det den rigtige måde at kombinere flere ting i en mail?

{
echo '<p>Du er nu tilmeldt sommerfesten. Du kan se <a href="viewpage.php?page_id=1">her</a> hvem der også er tilmeldt. Hvis du alligevel ikke kan komme så skynd dig at skrive en mail til Marianne på marianne@stovringhojskole.dk, så Christa ikke laver for meget mad.<br />' ;
} else {
echo '<p>Der skete en fejl, <a href="tilmeld.php">prøv igen</a> <br />FEJL: ' . mysql_error() . '</p>';
}

}
}


?>
---------------

Er der nogen der har et bud?

Mvh

Jost
Avatar billede yHec Novice
23. oktober 2006 - 23:06 #1
Får du nogen fejlmeldinger?? En ting ad gangen:-)

Prøv at udkommenterer alt efter if (@mysql_query($sql)) (sæt /* før og */ efter den pågældende kode)

Skriv mysql_query($sql) or die(mysql_error). Send derefter fejlmeldingen herind..

Desuden mangler du en db connectstreng og at vælge en db (mysql_select_db) - inden mysql_query.

/y
Avatar billede jost Nybegynder
23. oktober 2006 - 23:22 #2
Det er der er trælst, der kommer ingen fejlmeddelelse. Der kommer bare en blank side, hvor den skulle skrive en tekst.

Men jeg prøver lige at udkommentere og ser hvad den siger.

DB conectstrengen ligger i
include 'dbforbindelse.inc.php';
(men det er jo ikke til at vide :-)

/Jost
Avatar billede jost Nybegynder
23. oktober 2006 - 23:53 #3
hmm... jeg tror ikke jeg har gjort det helt rigtigt.
Den kommmer med fejlmeddelelse:
Parse error: syntax error, unexpected $end in C:\wamp\www\stovringelev\til b-one\~phpdesigner_outputlocal_tmp~8681.php on line 86

Jeg har gjort således:


if (@mysql_query($sql));
 
  mysql_query($sql) or die(mysql_error);
 
  /* {   
if (!empty($_POST['name']) && // tjek, at der er skrevet et navn
!empty($_POST['email']) &&    // tjek, at der er skrevet en e-mail-adresse
!empty($_POST['subject']) &&  // tjek, at der er skrevet et subject
!empty($_POST['aargang']) &&  // tjek, at der er skrevet en argang
!empty($_POST['liniefag']) &&  // tjek, at der er skrevet et liniefag
 
// her følger sikringen mod spambotter
!strpos($_POST['name'], "stovringhojskole.dk") &&  // tjek, at dit domæne ikke er skrevet i feltet "navn"
    //!strpos($_POST['email'], "stovringhojskole.dk") && // tjek, at dit domæne ikke er skrevet i feltet "email"
!strpos($_POST['name'], "@") && // tjek, at der ikke er et @ i "navn"
!eregi("\r",$_POST['name']) &&  // tjek, at der ikke er "vogn-retur" i "navn"
!eregi("\n",$_POST['name']) &&  // tjek, at der ikke er "linjeskift" i "navn"
!eregi("\r",$_POST['email']) && // tjek, at der ikke er "vogn-retur" i "email"
!eregi("\n",$_POST['email']))  // tjek, at der ikke er "linjeskift" i "email"

$mail_body="
Hej Marianne.
 
  Jeg vil gerne tilmelde mig til Julefrokosten 2006.
 
  Med venlig hilsen
  $name
  $aargang
  Liniefag: $liniefag
 
  Evt. bemærkning:
  $besked";
 
  $headers="From: ".$_POST['name']."<".$_POST['email'].">\r\nContent-Type: text/plain; charset=iso-8859-1\r\nContent-Disposition: inline\r\nContent-Transfer-Encoding: 8bit";
  if (@$_POST['customer_copy'])
  {
  $headers .= "\r\nBcc: ".$_POST['email'];
  }
  if (@mail("jost@dicksmock.dk", strip_tags($_POST['subject']),
  stripslashes(strip_tags($mail_body
)), $headers))

  {
        echo '<p>Du er nu tilmeldt sommerfesten. Du kan se <a href="viewpage.php?page_id=1">her</a> hvem der også er tilmeldt. Hvis du alligevel ikke kan komme så skynd dig at skrive en mail til Marianne på marianne@stovringhojskole.dk, så Christa ikke laver for meget mad.<br />' ;
  } else {
    echo '<p>Der skete en fejl, <a href="tilmeld.php">prøv igen</a> <br />FEJL: ' . mysql_error() . '</p>';
  }

  }   
  }
*/

?>

/Jost
Avatar billede jost Nybegynder
23. oktober 2006 - 23:58 #4
Nu gjorde jeg det vist rigtig. Jeg flyttede */ op før det sidste }.
Nu skriver den mysql_error.

/Jost
Avatar billede jost Nybegynder
24. oktober 2006 - 13:17 #5
Jeg fandt en fejl. Der manglede en række i databasen. Nu får jeg data i databasen, og den sender en mail :-)

Y, sender du et svar, så du kan få pointene? Du gav mig trods alt et hint om jeg skulle fejlsøge :-)

/Jost
Avatar billede yHec Novice
24. oktober 2006 - 15:06 #6
:-)
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

IT-JOB

Capgemini Danmark A/S

AI Data Architect

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger en IT-supporterelev til lokal IT på Haderslev Kaserne

Netcompany A/S

Network Engineer

Digitaliseringsstyrelsen

IT-arkitekt hos Digitaliseringsstyrelsen

Capgemini Danmark A/S

Microsoft AI Solution Architect