Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 13:53 Der er 25 kommentarer og
1 løsning

mail sender kun til første post?

Hey allesammen.

Har denne kode (del af den) :

$mails = 100;
$res = mysql_query("SELECT mail FROM nyhedsbrev WHERE sendt = '0' AND id < $mails") or die (mysql_error());
if (mysql_num_rows($res) > 0) {
  while (list($mail) = mysql_fetch_row($res)) {
mail($mail, $subject, $body, $headers);
  }
$res = mysql_query("UPDATE nyhedsbrev SET sendt = '1' WHERE mail = $mail");
} else {
Echo "ingen mails at sende til";
}

Men den sender kun til første post ?
Og den opdatere hellere ikke sendt.

Kan nogen se min fejl ?

På forhånd tak
Avatar billede whatever Nybegynder
08. januar 2006 - 14:13 #1
I din update-sætning har du starte med smide et par '' ind:

mysql_query("UPDATE nyhedsbrev SET sendt = '1' WHERE mail = '$mail'");
Avatar billede whatever Nybegynder
08. januar 2006 - 14:15 #2
Og umiddelbart skal din update-sætning også flyttes ind i dit while-loop. Altså:

while (list($mail) = mysql_fetch_row($res)) {
  mail($mail, $subject, $body, $headers);
  mysql_query("UPDATE nyhedsbrev SET sendt = '1' WHERE mail = '$mail'");
}
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 14:20 #3
Det er gjordt nu..

Har fundet ud af den kun fanger den første post i den select.

Hvad kan det skyldes?
Avatar billede whatever Nybegynder
08. januar 2006 - 14:22 #4
Enten at der kun er en post, hvor sendt er lig med 0. Eller at der kun findes en post, hvor id er mindre end 100.
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 14:23 #5
Hmm alle posterne er sendt en..
Og sql er med limit nu :
$res = mysql_query("SELECT mail FROM nyhedsbrev WHERE sendt = '0' LIMIT $mails") or die (mysql_error());
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 14:27 #6
kan det have noget med at gøre at sendt er Tinyint(1) ?
Avatar billede whatever Nybegynder
08. januar 2006 - 14:32 #7
Felttypen har intet at sige i den sammenhæng.

Hvis du sætter feltet sendt til 0 ved alle posterne, henter den så ikke flere ud?
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 14:34 #8
Den er 0 ved alle posterne..

Den henter kun en.

Men kan det egengligt ikke fejle i whilen ?
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 14:38 #9
for at opfriske er koden :

$mails = "100";
$sendt = "0";
$res = mysql_query("SELECT mail FROM nyhedsbrev WHERE sendt = '$sendt' LIMIT $mails") or die (mysql_error());
if (mysql_num_rows($res) > 0) {
  while (list($mail) = mysql_fetch_row($res)) {
mail($mail, $subject, $body, $headers);
echo "sender " .$mail ."<br>";
$res = mysql_query("UPDATE nyhedsbrev SET sendt = '1' WHERE mail = '$mail'");
  }
} else {
Echo "ingen mails at sende til";
}
Avatar billede whatever Nybegynder
08. januar 2006 - 14:42 #10
Umiddelbart ser det ikke ud til, at der er noget galt med white-loopet.

Prøv at udskrive mysql_num_rows($res) inden din if-sætning.
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 14:43 #11
den skriver 3
Avatar billede whatever Nybegynder
08. januar 2006 - 14:47 #12
Hvor mange gange bliver linien "echo "sender " .$mail ."<br>";" udskrevet?

Prøv evt. at fjerne "$res = " ved update-sætningen.
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 14:49 #13
Den bliver kun udskrevet en gang.
Det prøver jeg lige
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 14:51 #14
hvis jeg fjerner den siger den bare "ingen mail at sende til"
Avatar billede whatever Nybegynder
08. januar 2006 - 14:53 #15
Har du så ikke fjernet den ved select-sætningen?

Der skal stå:

$mails = "100";
$sendt = "0";
$res = mysql_query("SELECT mail FROM nyhedsbrev WHERE sendt = '$sendt' LIMIT $mails") or die (mysql_error());
if (mysql_num_rows($res) > 0) {
  while (list($mail) = mysql_fetch_row($res)) {
    mail($mail, $subject, $body, $headers);
    echo "sender " .$mail ."<br>";
    mysql_query("UPDATE nyhedsbrev SET sendt = '1' WHERE mail = '$mail'");
  }
} else {
  echo "ingen mails at sende til";
}
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 14:58 #16
tror sku det virker.. Skal lige tjekke mail kontoerne
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 15:01 #17
nu modtager jeg intet :(
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 15:05 #18
Den sender kun mailen til den første.. Ikke nummer to og tre
Avatar billede whatever Nybegynder
08. januar 2006 - 15:15 #19
Det lyder altså noget mystisk.

Jeg har lige prøvet at køre følgende på min lokale Apache server:


    include("./inc/dbconnect.php");
    $headers = "From: test@efusion.it <Test>";
    $subject = "exp test";
    $body = "exp test";
    $mails = "100";
    $sendt = "0";
    $res = mysql_query("SELECT mail FROM nyhedsbrev WHERE sendt = '$sendt' LIMIT $mails") or die (mysql_error());
    if (mysql_num_rows($res) > 0) {
      while (list($mail) = mysql_fetch_row($res)) {
        mail($mail, $subject, $body, $headers);
        echo "sender " .$mail ."<br>";
        mysql_query("UPDATE nyhedsbrev SET sendt = '1' WHERE mail = '$mail'");
      }
    } else {
      echo "ingen mails at sende til";
    }

Tabellen nyhedsbrev som jeg har testet med, består at to felter:
- mail: varchar(50), primary key
- sendt: tinyint(3), index

Jeg har oprettet 5 e-mailadresser i tabellen, og ved alle records er sendt lig 0.

Hvis jeg kører scriptet bliver der sendt 5 e-mails. Kører jeg scriptet igen, får jeg selvfølgelig at vide, at der ikke kunne sendes nogle e-mails.

Så hos mig virker scriptet fint.
Avatar billede whatever Nybegynder
08. januar 2006 - 15:17 #20
Jeg kan ikke lige sige, hvorfor det ikke virker hos dig.
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 15:25 #21
sikker noget lort :@ .. Godt jeg snart skifter webhotel :d..

Er lige ved at teste det. Hvordan connecter jeg til et andens webhotels mysql ? :

(håber det okay jeg hører dig om det, har ikke andre måde at teste på)

  @mysql_connect("domæne, navn.dk","brugernavn","kode")
          or die( mysql_error() );

den siger fejl i at hente :S
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 15:28 #22
ups
@mysql_connect("domænenavn.dk","brugernavn","kode")
          or die( mysql_error() );
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 15:29 #23
kan man ikke med det hotel siger supporten..

Svar op pointsne er dine.
Avatar billede whatever Nybegynder
08. januar 2006 - 15:30 #24
Hvis webhotellet tillader at man kan connecte til deres mysql-servere ude fra, connecter du på samme måde som du normalt ville gøre.

Hvilket webhotel benytter du?
Avatar billede whatever Nybegynder
08. januar 2006 - 15:32 #25
Et svar.
Avatar billede rasmus-madsen Nybegynder
08. januar 2006 - 15:34 #26
lige nu b-one på denne side..
Det er en fejl, har bare ikke flytet det endnu.
Det kommer over på min normale, så skal det nok virke:D
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