Avatar billede mibu Nybegynder
22. november 2009 - 19:44 Der 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))
Avatar billede repox Seniormester
22. november 2009 - 20:59 #1
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.
Avatar billede mibu Nybegynder
22. november 2009 - 21:18 #2
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>";
}
}
?>
Avatar billede mibu Nybegynder
22. november 2009 - 21:19 #3
Okay der er så lige en skrivefejl i db kaldet, men ellers!
Avatar billede acore Ekspert
22. november 2009 - 21:58 #4
Ret linien

$query = mysql_query("SELECT tekst FROM sider WHERE id = 1 ")or die(mysql_error());

til

$query = mysql_query("SELECT mail FROM sider WHERE id = 1 ")or die(mysql_error());

Pt henter du slet ikke feltet mail.
Avatar billede mibu Nybegynder
22. november 2009 - 22:07 #5
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']),
Avatar billede mibu Nybegynder
22. november 2009 - 22:07 #6
okay ikke med fed men understreget :-)
Avatar billede acore Ekspert
23. november 2009 - 08:00 #7
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?
Avatar billede mibu Nybegynder
23. november 2009 - 13:07 #8
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>";
}
}
?>
Avatar billede mibu Nybegynder
23. november 2009 - 13:46 #9
Jeg har selv fundet løsningen.

I db kaldet skriver jeg:

$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.
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