08. marts 2007 - 12:33Der er
9 kommentarer og 1 løsning
php/mysql LIMIT
Hej... Jeg sider og laver et php/mysql script som skal sende mails ud til alle i min database, men da der er tæt på 300 emails i min DB time out'er scriptet :( så jeg skal gøre bruge af LIMIT funktionen, men jeg ved ikke helt hvordan jeg sætter den til at kører f.eks række 0 - 50 og derefter 51 - 100 og så 101 - 150 osv. det ser sådan ud nu: $resultat = mysql_query("SELECT * FROM tabel ORDER BY `id` ASC LIMIT 0, 999");
Hvis der er en eller flere som kan hjælpe mig med dette vil jeg da gerne hører fra jer.
$resultat1 = mysql_query("SELECT * FROM tabel ORDER BY `id` ASC LIMIT 0, 50"); $resultat2 = mysql_query("SELECT * FROM tabel ORDER BY `id` ASC LIMIT 50, 50"); $resultat3 = mysql_query("SELECT * FROM tabel ORDER BY `id` ASC LIMIT 100, 50"); $resultat4 = mysql_query("SELECT * FROM tabel ORDER BY `id` ASC LIMIT 150, 50"); $resultat5 = mysql_query("SELECT * FROM tabel ORDER BY `id` ASC LIMIT 200, 50"); $resultat6 = mysql_query("SELECT * FROM tabel ORDER BY `id` ASC LIMIT 250, 50"); $resultat7 = mysql_query("SELECT * FROM tabel ORDER BY `id` ASC LIMIT 300, 50");
Synes godt om
Slettet bruger
08. marts 2007 - 13:45#2
Ja, det tror jeg faktisk godt det kunne være :) Kan jeg så f.eks lave det sådan her:
$resultat1 = mysql_query("SELECT * FROM ".$sqlemailtabel." ORDER BY `id` ASC LIMIT 0, 50");
// Kør så igennem for hver række while ($raekke = mysql_fetch_array($resultat1)) { echo $raekke['id']." ".$raekke['navn']." - Email: ".$raekke['email']." - "; (Her der echo'er den om mailen er sendt eller ikke sendt)
$resultat2 = mysql_query("SELECT * FROM ".$sqlemailtabel." ORDER BY `id` ASC LIMIT 51, 50");
// Kør så igennem for hver række while ($raekke = mysql_fetch_array($resultat2)) { echo $raekke['id']." ".$raekke['navn']." - Email: ".$raekke['email']." - ";
osv. osv. osv. ???????
Per
Synes godt om
Slettet bruger
08. marts 2007 - 13:54#3
eller er det på nogen måde mulilgt at manipulere med timeout tiden, så den f.eks skal "køre" 200 sek før den laver timeout???
og 300 forespørgelser i din database er noget nær ingenting.....
Synes godt om
Slettet bruger
08. marts 2007 - 22:25#6
Hej McCookie
det ser rigtig godt ud dit forslag, men hvis det ikke er at be om for meget, så vil jeg faktisk gerne bede om lidt hjælp til at lave hele scriptet færdig, da jeg stadig ser mig selv som nybegynder i PHP sproget :) Jeg vil jo gerne have at den henter alle mail adresserne i min DB... Hvis det er noget du gider bruge et øjeblik med at hjælpe mig med ville det sku være cool... Vi kan enten tage den over mail eller her (så kan jeg lige sende dig mit forslag til hvordan jeg tror det skal se ud), det er op til dig, men du må meget gerne skrive et svar om det er noget du gider hhjælpe mig med.. Per
if(mail($to, $subject, $content, "From: $from\r\n" ."Reply-To: $from\r\n" ."X-Mailer: PHP/" . phpversion())) { echo "Mail afsendt med succes til: $navn med følgende emailadresse: $email<br>"; } else { echo "Kunne ikke sende en mail til: $navn med følgende emailadresse: $email<br>"; } flush(); } }
?>
Så skal du bare lige selv starte databasen og så videre..... prøv det..
Synes godt om
Slettet bruger
09. marts 2007 - 16:03#8
Hej Kan godt få det til at virke delvist :) Jeg har et problem med at forstå 1 af mail vars'ne:
$to = "xxx@XXXXXXx.xX";
Kan kun få det til at virke hvis jeg skriver en modtager email i stedet for XXX'erne, kan ikke lige finde ud af at få den til at gå ind i DB'en og hente alle adresserne ud.
Så ved faktisk ikke om den virker helt endnu.
Jeg har i toppen lavet en mysql_connect og db connect.
// Kør så igennem for hver række while ($raekke = mysql_fetch_array($resultat1)) {
$resultat2 = mysql_query("SELECT * FROM ".$sqlemailtabel." ORDER BY `id` ASC LIMIT 51, 50");
// Kør så igennem for hver række while ($raekke = mysql_fetch_array($resultat2)) { extract($raekke); // Gør det lidt nemmere at arbejde hihi $to = $email; $content = "Hej $navn\n\n\nDin emailadresse er: $email";
if(mail($to, $subject, $content, "From: $from\r\n" ."Reply-To: $from\r\n" ."X-Mailer: PHP/" . phpversion())) { echo "Mail afsendt med succes til: $navn med følgende emailadresse: $email<br>"; } else { echo "Kunne ikke sende en mail til: $navn med følgende emailadresse: $email<br>"; } flush(); } }
?>
Synes godt om
Slettet bruger
10. marts 2007 - 12:57#10
Cool, så henter den sku adresserne i databasen :)
Når jeg så skal have den til at alle email adresserne igennem, så skriver jeg bare:
$resultat2 = mysql_query("SELECT * FROM ".$sqlemailtabel." ORDER BY `id` ASC LIMIT 51, 50");
while ($raekke = mysql_fetch_array($resultat2))
$resultat3 = mysql_query("SELECT * FROM ".$sqlemailtabel." ORDER BY `id` ASC LIMIT 101, 50");
while ($raekke = mysql_fetch_array($resultat3))
osv derud af, indtil jeg har nok $resultat variabler??
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.