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!";
}
?>
Annonceindlæg fra HP
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!
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?
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 !!"; }
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
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 :)
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øde.<br> Udfyld og send formularen og du vil blive kontaktet inden for 3 dage.</p> <p class="text">Indtast ID-nummer på 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æ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...
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?
05. september 2005 - 22:39
#8
ja
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!"; } } ?>
05. september 2005 - 22:54
#10
Øh? Hvad skete der lige der? Hvorfor fik jubee_dk egentlig samtlige points på denne?
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!
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.
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"; }
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");
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?
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.
06. september 2005 - 09:54
#17
Ups... Kan jeg gøre det på en anden måde? Altså overføre point til dig?
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 :)
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.
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øde.<br> Udfyld og send formularen og du vil blive kontaktet inden for 3 dage.</p> <p class="text">Indtast ID-nummer på 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æ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>
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];
Vi tilbyder markedets bedste kurser inden for webudvikling