Avatar billede pitzen Nybegynder
05. september 2005 - 22:04 Der er 20 kommentarer og
1 løsning

Php form-mail og ID.

Hej php-eksperter!

Jeg har dette stykke kode, som sender en form-mail til en email, som er knyttet til et ID.nummer...

Jeg vil lave et wilcard-ID, således at hvis ID=9999, sendes form-mail'en til ID 1 og ID 2's mails...

Håber i forstår min formulering... Ellers kan jeg forsøge at uddybe det...

Pf. Tak!

se evt. http://www.thatsmyway.dk/kontaktperson.html

<?
    if(isset($_POST['id']))
    {
    $id = $_POST['id'];
    $navn = $_POST['navn'];
    $tlf = $_POST['tlf'];
    $email = $_POST['email'];
    $besked = $_POST['besked'];
    $tid1 = $_POST['tid1'];
    $tid2 = $_POST['tid2'];
    $postnr = $_POST['postnr'];
           
    $mes = "Fra: ".$navn." (".$email.")\nTlf: ".$tlf."\nPost nr: ".$postnr."\nTræffes bedst mellem: ".$tid1." og ".$tid2."\nBesked: ".$besked."";
           
    $fil = fopen("emails.txt","r");
    $i = 0;
    while($i != $id)
    {
    $to = fscanf($fil, "%s\n");
    $i++;
    }

    fclose($fil);
           
    if(mail($to[0], "Email fra That's my way!", $mes, "From: $email"))
    echo "Email sendt!";
    }
?>
Avatar billede pitzen Nybegynder
05. september 2005 - 22:06 #1
Desuden ville det være cool, hvis man kunne lave det sådan, at man skulle udfylde alle felterne før den kan sende!
Avatar billede nielle Nybegynder
05. september 2005 - 22:13 #2
Hvor finder du de emails som høre til ID 1 og 2? I en databes, eller en anden tekst-fil?
Avatar billede jubee_dk Nybegynder
05. september 2005 - 22:14 #3
Mht til udfyldte formfelter så fangede jeg lige den her fra Eksperten fornyligt :)

$feltNavne = array("navn", "adresse", "mail");
$fejl = 0;
foreach($feltNavne as $v) {
  if(empty($_POST[$v])) {
    $fejl = 1;
  }
}
if($fejl == 1) {
  echo "Et eller flere felter var ikke udfyldt !!";
}
Avatar billede udvikler Nybegynder
05. september 2005 - 22:16 #4
Det med at man skal udfylde alle felterne før man kan sende kan jeg lige lave hurtigt, det andet du spørger om forstår jeg ikke! :)

Nå, men her er koden der gør at du skal skrive før du kan sende.

<?php
if ($_POST[SKRIV DET NAVN DU HAR KALDT DIN SUBMIT KNAP]) {

if ([SKRIV NAVNET PÅ DET FELT DER SKAL UDFYLDES - FX HVIS DU HAR KALDT DET FELT MAN SKRIVER SIN MAIL I FOR MAIL SÅ SKAL DU SKRIVE MAIL HER] == "") {
echo "Du mangler at skrive din mail fx";
}

if ([SKRIV NAVNET PÅ DET FELT DER SKAL UDFYLDES - FX HVIS DU HAR KALDT DET FELT MAN SKRIVER SIN MAIL I FOR MAIL SÅ SKAL DU SKRIVE MAIL HER] == "") {
Du mangler at skrive din mail fx
}

if ([SKRIV NAVNET PÅ DET FELT DER SKAL UDFYLDES - FX HVIS DU HAR KALDT DET FELT MAN SKRIVER SIN MAIL I FOR MAIL SÅ SKAL DU SKRIVE MAIL HER] == "") {
Du mangler at skrive din mail fx
}

if ([SKRIV NAVNET PÅ DET FELT DER SKAL UDFYLDES - FX HVIS DU HAR KALDT DET FELT MAN SKRIVER SIN MAIL I FOR MAIL SÅ SKAL DU SKRIVE MAIL HER] == "") {
Du mangler at skrive din mail fx
}
else {
echo "Email'en er nu sendt!";
}
}
?>

Håber du ved hvor du skal ændre :)

Sig til hvis du har problemer
Avatar billede udvikler Nybegynder
05. september 2005 - 22:19 #5
Du kan også bruge jubee_dk's
forskellen er at min skriver præcis hvilket felt du mangler, mens hans bare skriver at du har glemt at skrive noget :)
Avatar billede pitzen Nybegynder
05. september 2005 - 22:21 #6
<body>
<table width="100%"  border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td>

          <?
            if(isset($_POST['id']))
            {
                $id = $_POST['id'];
                $navn = $_POST['navn'];
                $tlf = $_POST['tlf'];
                $email = $_POST['email'];
                $besked = $_POST['besked'];
                $tid1 = $_POST['tid1'];
                $tid2 = $_POST['tid2'];
                $postnr = $_POST['postnr'];
           
                $mes = "Fra: ".$navn." (".$email.")\nTlf: ".$tlf."\nPost nr: ".$postnr."\nTræffes bedst mellem: ".$tid1." og ".$tid2."\nBesked: ".$besked."";
           
                $fil = fopen("emails.txt","r");
                $i = 0;
                while($i != $id)
                {
                    $to = fscanf($fil, "%s\n");
                    $i++;
                }
                fclose($fil);
           
                if(mail($to[0], "Email fra That's my way!", $mes, "From: $email"))
                    echo "Email sendt!";
            }
          ?>
        <p class="overskrift">Din kontaktperson</p>
        <form action="<?=$PHP_SELF;?>" method="post">
          <p class="text">
            <input name="jatak" type="checkbox" id="jatak" value="checkbox" checked>
          Ja Tak! Jeg vil gerne kontaktes for et uforpligtende m&oslash;de.<br>
          Udfyld og send formularen og du vil blive kontaktet inden for 3 dage.</p>
          <p class="text">Indtast ID-nummer p&aring; din kontaktperson<br>
            (Hvis du ikke har nogen tast 9999):           
            <input name="id" type="text" size="7" />
          </p>
          <span class="text">        </span>
          <table width="450"  border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td width="150"><span class="text">Navn :<br>
                  <input name="navn" type="text" id="navn" />
</span></td>
              <td width="150"><span class="text">Post nr :<br>
                  <input name="postnr" type="text" id="postnr" />
              </span></td>
            </tr>
            <tr>
              <td width="150"><p class="text"><br>
                Dit telefon-nummer:<br>
                <input type="text" name="tlf" />
                </p>
              </td>
              <td width="150"><span class="text"><br>
              Din e-mail:<br>
                  <input type="text" name="email" />
              </span></td>
            </tr>
            <tr>
              <td width="150" valign="top"><p>                    <span class="text"><br>
                Tr&aelig;ffes bedst mellem: <br>
                    <select name="tid1" id="tid1">
                      <option>8</option>
                      <option>9</option>
                      <option>10</option>
                      <option>11</option>
                      <option>12</option>
                      <option>13</option>
                      <option>14</option>
                      <option>15</option>
                      <option>16</option>
                      <option>17</option>
                      <option>18</option>
                      <option>19</option>
                      <option>20</option>
                      <option>21</option>
                      <option>22</option>
                    </select>
                    og
                    <select name="tid2" id="tid2">
                      <option>8</option>
                      <option>9</option>
                      <option>10</option>
                      <option>11</option>
                      <option>12</option>
                      <option>13</option>
                      <option>14</option>
                      <option>15</option>
                      <option>16</option>
                      <option>17</option>
                      <option>18</option>
                      <option>19</option>
                      <option>20</option>
                      <option>21</option>
                      <option>22</option>
                    </select>
                    <br>
                </span></p>
                </td>
              <td width="150"><span class="text"><br>
              Besked:<br>
                  <textarea name="besked"></textarea>
              </span></td>
            </tr>
          </table>
          <span class="text">
          <p>
            <input type="submit" value="Send" />
          </span>
        </form>
    </td>
  </tr>
</table>

</body>

her er hele koden... troede ik det var nødvendigt...

ID'numrene findes i filen "emails.txt" og ID-nummeret svarer til linienummeret...

Eks:

Vi er 4 forskellige personer, med ID-numrene 1, 2, 3 og 4...

Hvis du nu skal kontakte os, skal du skrive et ID-nummer i formularen og derefter sender den automatisk til ID-nummerets tilsvarende mail...

Hvis nu du skal kontakte os, men ik kender et ID-nummer, kan du bruge 9999 og derefter sender den til 1 og 2...
Avatar billede nielle Nybegynder
05. september 2005 - 22:38 #7
Dvs. at ID 1 og 2 simpelthen er de to første emailadresser i filen emails.txt - eller hvad?
Avatar billede pitzen Nybegynder
05. september 2005 - 22:39 #8
ja
Avatar billede nielle Nybegynder
05. september 2005 - 22:45 #9
Den del af koden kunne så se sådan her ud:

<?
if (isset($_POST['id']))
{
    $id = $_POST['id'];

    $navn = $_POST['navn'];
    $tlf = $_POST['tlf'];
    $email = $_POST['email'];
    $besked = $_POST['besked'];
    $tid1 = $_POST['tid1'];
    $tid2 = $_POST['tid2'];
    $postnr = $_POST['postnr'];
           
    $mes = "Fra: " . $navn . " (" . $email . ")\nTlf: " . $tlf . "\nPost nr: " . $postnr . "\nTræffes bedst mellem: " . $tid1 . " og " . $tid2 . "\nBesked: " . $besked;
           
    $fil = fopen("emails.txt","r");

    $to = array();

    if ($id == 9999)
    {
        $line = fscanf($fil, "%s\n");
        $to[] = $line[0];  // ID 1
       
        $line = fscanf($fil, "%s\n");
        $to[] = $line[0];  // ID 2
    }
    else
    {
        $i = 0;
        while ($i != $id)
        {
            $line = fscanf($fil, "%s\n");
            $to[] = $line[0];
            $i++;
        }
    }

    fclose($fil);

    foreach ($to as $aTo)           
    {
        if (mail($aTo, "Email fra That's my way!", $mes, "From: $email"))
            echo "Email sendt!";
    }
}
?>
Avatar billede nielle Nybegynder
05. september 2005 - 22:54 #10
Øh? Hvad skete der lige der? Hvorfor fik jubee_dk egentlig samtlige points på denne?
Avatar billede pitzen Nybegynder
05. september 2005 - 22:57 #11
Det er supergodt nielle... Det eneste jeg ka efterlyse er en fejlmeddelelse når man mangler at indtaste et felt... især skal "checkboxen" være "checked"...

Hvis du ik ka lave det, så post bare et svar...

Mange tak for hjælpen!
Avatar billede nielle Nybegynder
05. september 2005 - 22:59 #12
Du har allerede accepteret jubee_dk's svar og derfor er der ikke mere nogen som kan lægge et svar på dette spørgsmål.
Avatar billede nielle Nybegynder
05. september 2005 - 23:01 #13
Du tjekker om checkboksen er afkrydet med denne test:

if (isset($_POST["jatak"]))
{
    echo "Checkboksen er afkrydset";
}
else
{
    echo "Checkboksen er ikke afkrydset";
}
Avatar billede nielle Nybegynder
05. september 2005 - 23:03 #14
Det kan også gøres via jubee_dk's kode ved at udvide arrayet:

$feltNavne = array("navn", "adresse", "mail", "jatak");
Avatar billede pitzen Nybegynder
05. september 2005 - 23:14 #15
Så fungerer det... Mange tak begge to...

Post et svar nielle...

En sidste ting... kan man ændre "echo" til "alert" f.eks, så det popper op i en javascript alert-box?
Avatar billede nielle Nybegynder
06. september 2005 - 06:45 #16
Jeg kan som sagt ikke lægge noget svar - du lukkede spørgsmålet da du accepterede jubee_dk's svar.
Avatar billede pitzen Nybegynder
06. september 2005 - 09:54 #17
Ups... Kan jeg gøre det på en anden måde? Altså overføre point til dig?
Avatar billede jubee_dk Nybegynder
06. september 2005 - 17:53 #18
Jo da - fortæl hvad nielle skal ha' af point og om jeg og -aco- fortjener en smule så opretter jeg et spørgsmål og fordeler af de 200 point :)
Avatar billede nielle Nybegynder
06. september 2005 - 18:15 #19
pitzen> Ifølge Ekspertens regler er 200 point faktisk maksimum for et spørgsmål.

Af en eller anden grund så lukkes et spørgsmål for yderligere Svar blot man acceptere et Svar. Jeg ved ikke hvorfor at det er sådan, men det er det altså. Heldigvis gælder der ikke det samme mht. Kommentare.
Avatar billede pitzen Nybegynder
26. september 2005 - 16:49 #20
Hey... Vender lige tilbage med en fejl, jeg har opdaget...

Uanset hvilket id-nummer, der blir indtastet, får alle ID-numre sendt mailen...

Det skal kun være det indtastede ID-nummers tilsvarende mail, som modtager mailen..

Koden ser således ud:

<head>
<link rel="stylesheet" type="text/css" href="style.css">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css">
<!--
body {
    margin-left: 0px;
    margin-top: 0px;
    margin-right: 15px;
    margin-bottom: 0px;
    background-image:url(images/text.jpg);
    background-repeat:repeat-x;
    background-attachment:fixed;
}
-->
</style></head>
<body>
<table width="100%"  border="0" cellpadding="0" cellspacing="0">
  <tr>
    <td>

      <p class="overskrift">Din kontaktperson</p>
        <form action="<?=$PHP_SELF;?>" method="post">
          <p class="text">
            <input name="jatak" type="checkbox" id="jatak" value="checkbox" checked>
          Ja Tak! Jeg vil gerne kontaktes for et uforpligtende m&oslash;de.<br>
          Udfyld og send formularen og du vil blive kontaktet inden for 3 dage.</p>
          <p class="text">Indtast ID-nummer p&aring; din kontaktperson<br>
            (Hvis du ikke har nogen tast 9999):           
            <input name="id" type="text" size="7" />
          </p>
          <span class="text">        </span>
          <table width="450"  border="0" cellspacing="0" cellpadding="0">
            <tr>
              <td width="150"><span class="text">Navn :<br>
                  <input name="navn" type="text" id="navn" />
</span></td>
              <td width="150"><span class="text">Post nr :<br>
                  <input name="postnr" type="text" id="postnr" />
              </span></td>
            </tr>
            <tr>
              <td width="150"><p class="text"><br>
                Dit telefon-nummer:<br>
                <input type="text" name="tlf" />
                </p>
              </td>
              <td width="150"><span class="text"><br>
              Din e-mail:<br>
                  <input type="text" name="email" />
              </span></td>
            </tr>
            <tr>
              <td width="150" valign="top"><p>                    <span class="text"><br>
                Tr&aelig;ffes bedst mellem: <br>
                    <select name="tid1" id="tid1">
                      <option>8</option>
                      <option>9</option>
                      <option>10</option>
                      <option>11</option>
                      <option>12</option>
                      <option>13</option>
                      <option>14</option>
                      <option>15</option>
                      <option>16</option>
                      <option>17</option>
                      <option>18</option>
                      <option>19</option>
                      <option>20</option>
                      <option>21</option>
                      <option>22</option>
                    </select>
                    og
                    <select name="tid2" id="tid2">
                      <option>8</option>
                      <option>9</option>
                      <option>10</option>
                      <option>11</option>
                      <option>12</option>
                      <option>13</option>
                      <option>14</option>
                      <option>15</option>
                      <option>16</option>
                      <option>17</option>
                      <option>18</option>
                      <option>19</option>
                      <option>20</option>
                      <option>21</option>
                      <option>22</option>
                    </select>
                    <br>
                </span></p>
              </td>
              <td width="150"><span class="text"><br>
              Besked:<br>
                  <textarea name="besked"></textarea>
              </span></td>
            </tr>
          </table>
          <span class="text">
          <p>
            <input type="submit" value="Send" />
          </span>
        </form>
  <span class="text">
        <?
            if (isset($_POST['id']))
            {
                $id = $_POST['id'];
                $navn = $_POST['navn'];
                $tlf = $_POST['tlf'];
                $email = $_POST['email'];
                $besked = $_POST['besked'];
                $tid1 = $_POST['tid1'];
                $tid2 = $_POST['tid2'];
                $postnr = $_POST['postnr'];
                $jatak = $_POST['jatak'];
                       
                $mes = "Fra: " . $navn . " (" . $email . ")\nTlf: " . $tlf . "\nPost nr: " . $postnr . "\nTræffes bedst mellem: " . $tid1 . " og " . $tid2 . "\nBesked: " . $besked;
                       
                $fil = fopen("emails.txt","r");
           
                $to = array();
           
                if ($id == 9999)
                {
                    $line = fscanf($fil, "%s\n");
                    $to[] = $line[0];  // ID 1
                   
                    $line = fscanf($fil, "%s\n");
                    $to[] = $line[0];  // ID 2
                }
                else
                {
                    $i = 0;
                    while ($i != $id)
                    {
                        $line = fscanf($fil, "%s\n");
                        $to[] = $line[0];
                        $i++;
                    }
                }
           
                fclose($fil);
                $feltNavne = array("navn", "tlf", "email", "tid1", "tid2", "jatak", "besked", "id", "postnr");
                $fejl = 0;
               
                foreach($feltNavne as $v)
                {
                if(empty($_POST[$v]))
                    {
                    $fejl = 1;
                    }
                }
               
                if($fejl == 1)
                {
                    echo "Et eller flere felter var ikke udfyldt!";
                }
                else
                {
                    foreach ($to as $aTo)           
                    {
                        if (mail($aTo, "Email fra That's my way!", $mes, "From: $email"))
                            echo "Email sendt!";
                    }
                }
            }
        ?>
        </span>
    </td>
  </tr>
</table>

</body>
Avatar billede nielle Nybegynder
26. september 2005 - 18:15 #21
Jeg vil gætte på at det er denne her kodeblok:

$i = 0;
while ($i != $id)
{
    $line = fscanf($fil, "%s\n");
    $to[] = $line[0];
    $i++;
}

- som i stedt for skal se sådan her ud:

for ($i=0; $i<$id; $i++)
{
    $line = fscanf($fil, "%s\n");
}
$to[] = $line[0];
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