22. november 2009 - 19:44Der er
8 kommentarer og 1 løsning
Udtræk fra db skal bruges i et script - virker ikke!
Jeg henter en mailadresse fra en db, som jeg skal bruge i en mailsender, men det virker ikke rigtigt(hvis jeg skriver en echo kan jeg se udtrækket)Kan nogen se hvad jeg gør forkert.
DB kald: $query = mysql_query("SELECT mail FROM config WHERE id = 1 "); while($row = mysql_fetch_assoc($query))
Her skal det så gerne ind: $body .= "Mail sendt denne fra: " . $_POST['name'] . ":\r\n\r\n" . $_POST['besked'] ; if (@mail($row['mail'], strip_tags($_POST['emne']), stripslashes(strip_tags($body)), $headers))
Først skal du lære ikke at undertrykke fejlmeddelser - særligt under udvikling er det specielt tåbeligt.
Og så det at tage to brudstykker af noget kode, er ikke noget vi kan sætte sammen og se fejl i. Du har jo mere kode end det du viser - det kan være relevant for hvorfor din kode ikke virker.
Det er vil i orden at fjerne "or die" når scriptet virker?
Men her er så hele kode :-) <?php //Forside tekst $query = mysql_query("SELECT tekst FROM sider WHERE id = 1 ")or die(mysql_error()); while($row = mysql_fetch_assoc($query))
//en echo her viser fint udtrækket
if (!empty($_POST['subject'])) { header ("Location: sendt.php"); exit; } ?>
<?php if (isset($_POST['submit'])) { 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['emne']) && // tjek, at der er skrevet et emne !empty($_POST['besked']) && // tjek, at der er skrevet en besked
// her følger sikringen mod spambotter !strpos($_POST['name'], "domainnavn.dk") && // tjek, at dit domæne ikke er skrevet i feltet "navn" !strpos($_POST['email'], "domainnavn.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"
// er alt ok, fortsættes med afsendelse af mailen { $headers="From: ".$_POST['name']."<".$_POST['email'].">"; if (@$_POST['customer_copy']) { $headers .= "\r\nBcc: ".$_POST['email']; }
//herunder skulle gerne ind(mail($row--- skriver jeg en //gyldig mailadr. manuelt virker det fint
$body .= "Denne denne mailer sendt fra: " . $_POST['name'] . ":\r\n\r\n" . $_POST['besked'] ; if (@mail($row['mail'], strip_tags($_POST['emne']), stripslashes(strip_tags($body)), $headers)) { echo "<br><br><br> <p>Tak for din henvendelse. Vi svarer så hurtigt som muligt.</p>"; } else { echo "<br><br><br> <p>Mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>"; } } else { echo "<br><br><br> <p>Mailen kunne ikke sendes, alle felter skal udfyldes korrekt!</p>"; } } ?>
Som jeg skrev så var der lige en skrivefejl i db kaldet, mit kald ser ud som dit forslag, og virker fint, men resultatet skulle gerne ind der hvor min mailsender beder om en mailadresse, Hvis jeg skriver en mailadresse her (markeret med fed) så så for jeg mailen, men jeg ville gerne indsætte min mailadresse, hentet fra db'en
$body .= "Denne denne mailer sendt fra: " . $_POST['name'] . ":\r\n\r\n" . $_POST['besked'] ; if (@mail($row['mail'], strip_tags($_POST['emne']),
Skrivefejl??? Foreslår, at du kopierer koden til dine indlæg...
Hvis det forholder sig, som du skriver, så er det mit gæt, at der står en forkert mail-adresse i databasen - måske at feltet er af forkert type eller ikke langt nok eller...
Prøv at lægge linien:
echo $row['mail'];
ind mellem to ovenstående og check adressen.
I øvrigt - når du siger virker ikke - hvilken udskrift får du fra din egen kode, når mailen ikke sendes?
Måske udtrykker jeg mig uklart! Jeg prøver igen! Under her er nu min kode, der som sådan intet i vejen med de to kodestykker hver for sig, jeg har lavet en echo som vist nu(og du også foreslår) og den giver mig pænt svar som forventet, SÅ GODT! Hvis jeg i mailsender koden skriver en mailadresse den hvor jeg nu har skrevet - MAILADRESSE HER - virker mailsenderen også fint. Det der så åbenbart er mit problem, er hvordan dælen, får jeg trukket resultatet af db kaldet ned i mailsendere? Håber jeg udtrykker mig mere klart nu :-)
Kode: <?php //Mailadresse $query = mysql_query("SELECT mail FROM configWHERE id = 1 ")or die(mysql_error()); while($row = mysql_fetch_assoc($query)) { echo "
".$row["mail"]." "; }
if (!empty($_POST['subject'])) { header ("Location: sendt.php"); exit; } ?>
<?php if (isset($_POST['submit'])) { 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['emne']) && // tjek, at der er skrevet et emne !empty($_POST['besked']) && // tjek, at der er skrevet en besked
// her følger sikringen mod spambotter !strpos($_POST['name'], "domainnavn.dk") && // tjek, at dit domæne ikke er skrevet i feltet "navn" !strpos($_POST['email'], "domainnavn.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"
// er alt ok, fortsættes med afsendelse af mailen { $headers="From: ".$_POST['name']."<".$_POST['email'].">"; if (@$_POST['customer_copy']) { $headers .= "\r\nBcc: ".$_POST['email']; }
//herunder skulle gerne ind(mail($row--- skriver jeg en //gyldig mailadr. manuelt virker det fint
$body .= "Denne denne mailer sendt fra: " . $_POST['name'] . ":\r\n\r\n" . $_POST['besked'] ; if (@mail(MAILADRESSE HER, strip_tags($_POST['emne']), stripslashes(strip_tags($body)), $headers)) { echo "<br><br><br> <p>Tak for din henvendelse. Vi svarer så hurtigt som muligt.</p>"; } else { echo "<br><br><br> <p>Mailen blev ikke sendt. Der skete en fejl. Prøv igen!</p>"; } } else { echo "<br><br><br> <p>Mailen kunne ikke sendes, alle felter skal udfyldes korrekt!</p>"; } } ?>
$query = mysql_query("SELECT mail FROM config WHERE id = 1 "); while($row = mysql_fetch_assoc($query)) $mail = $row["mail"];
Og der hvor jeg så vil indsætte skriver jeg bare $mail.
Simpelt :-)
Men mange tak for interessen og de udemærkede forslag.
Synes godt om
Ny brugerNybegynder
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.