webForumDet fria alternativet

Anpassa WHILE och optimera coden

1 svar · 185 visningar · startad av mall

mallMedlem sedan jan. 2001135 inlägg
#1

Jag skickar mail till medlemmar ur DB.
JAg har ganskamanga ooch vill att majlen skall skickas om 20 i taget och sedan visas hur manga % sam ar klart

Kan nan hjalpa mig forendra denna kden sa att det bli sa?

$result = mysql_query("SELECT user_mail FROM mail_db WHERE mail_list_ID='$mail_list_ID' AND customer_ID='$customer_id'",$db);
		$rows = mysql_num_rows($result);
		$mail_num = 1;
		
		while ($myrow = mysql_fetch_array($result))
			{
				$email = $myrow["user_mail"];
			    mail($email, $subject, $mail_text_send, $headers);
				echo "$mail_num. ".$email."<br>";
				$mail_num++;
			}
				print ("<br><br><strong>Nu &auml;r det klart!<br>Mailen har nu skickats till  $rows e-postadresser som finns i maillistan.</strong>");
aasahMedlem sedan mars 20033 451 inlägg
#2

Re: Anpassa WHILE och optimera coden

Först: Jag tror du rapporterar skickandet av ett mail för mycket! Det borde nog vara $mail_num = 0; före while-slingan. (Då har du ju inte skickat något.) Om du också byter plats på utskriften och uppräkningsraden enligt nedan så funkar det.

Huruvida detta blir en optimal lösning vill jag inte gå in på, men... som en första ansats.

$sql = "SELECT user_mail FROM mail_db 
   WHERE mail_list_ID='$mail_list_ID' AND 
   customer_ID='$customer_id'";
$result = mysql_query("$sql",$db);
$rows = mysql_num_rows($result);
$mail_num = 0;

$curr_chunk = 1;
while ($mail_num <= $rows) {
   $stop = 20 * $curr_chunk;
   while (mail_num < $stopp && $myrow = mysql_fetch_array($result)) {
      $email = $myrow["user_mail"];
      mail($email, $subject, $mail_text_send, $headers);
      $mail_num++;
      echo "$mail_num. ".$email."<br>";
   }
   $curr_chunk++; //<-- Redigerat in glömd rad!!!
   $proc = round($mail_num / $rows * 100, 2); //För två decimaler
   echo "Nu är $proc % klara!"
}
print ("<br><br><strong>Nu &auml;r det klart!<br>
   Mailen har nu skickats till  $rows e-postadresser som finns i maillistan.</strong>");

RED: Glömd rad, se koden

Genererad på 371 ms · cache AV · v20260730165559-full.f96bc7eb