Visa ett inlägg
Oläst 2008-04-28, 15:44 #1
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Hej,
Jag håller på att försöka skapa en egen nyhetsbrevs webbapplikation i PHP, MySQL och AJAX/JS.

Har en del problem dock.
Och funderingar jag vill dela med mig av, i hopp om åsikter och vägledning.

Att tillägga är att jag aldrig försökt göra något liknande inna, och aldrig gjort något seriöst i AJAX. Dock ser jag en potential med AJAX när det gäller denna applikation.

Vad jag vill:

1. Man sparar sin e-post lista i mysql, vi kan låtsas att detta redan är klart. (I listan sparas, namn, efternamn, e-post, företag, senast utskick.)
2. Man skriver sitt e-post, och detta epost sparas i mysql. (denna funktion är också färdig)
3. Man klickar på skicka så skall epostet skickas ut till alla i epostlistan med phps mail() funktion.

Första problemet jag stötte på var enkelt, att om man hade många e-post i sin lista så gjorde sidan en "time-out", och laddade aldrig färdigt. Annan nackdel var att sidan laddade och lät användaren stirra på en blank sida till hgela proceduren var färdig.

Så jag vill alltså att användaren skall kunna följa händelseförloppet. e-post, för e-post, i sin webbläsare.
Då tänkte jag, kan man inte dels hålla användaren uppdaterad men även göra så att man laddar listan bitvis och bara skickar 1-10 mail åt gången. Detta skulle även gjort så att sidan inte riskerade att sluta laddas.

Med en AJAX funktion borde detta vara möjligt.

Mitt problem landar dock på att jag enbart kan få igång AJAX funktionen, men att sedan få den att upprepa sig själv till dess att e-postlistan är genomkörd får jag ej att fungera och skulle vara tacksam för hjälp.

Här har vi min AJAX function:

Kod:
<script type="text/javascript" language="javascript">
<!-- 
//Browser Support Code
function ajaxFunction(id, url, startAt){
	var ajaxRequest; 
	
	try{
 ajaxRequest = new XMLHttpRequest();
	} catch (e){
 try{
 	ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
 } catch (e) {
 	try{
  ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
 	} catch (e){
  alert("Your browser broke!");
  return false;
 	}
 }
	}

	ajaxRequest.onreadystatechange = function(){
 if(ajaxRequest.readyState == 4){
 	document.getElementById(id).innerHTML = ajaxRequest.responseText;
 } else {
 	document.getElementById(id).innerHTML = '<img src="image_layout/loading_bro.gif" alt="Laddar, detta kan ta ett flertal minuter..." /> Laddar...';
 }
	}
	ajaxRequest.open("GET", url+startAt, true);
	ajaxRequest.send(null);
	startAt++;
}
startAt = 0;
ajaxFunction('mailGateway', 'include/mailgate.php?startat=', startAt);
//-->
</script>
Här har vi min PHP sidan som hanterar utskicket:

Kod:
include('sendmail.php');
include('config.php');

//CONNECT TO MYSQL
mysql_connect($server, $user, $pass);
mysql_select_db($db);

$testtext = 'Detta är ett test mail!<br />För att testa nya mailutskick.';
$from = '[email protected]';
$nummail = 1;
$startat = $_GET['startat'];

//id, firstname, lastname, company, email, gruop, lastmail, city, zip, street
$sql = "SELECT id, firstname, lastname, email FROM ".$prefix."_qews_maillist ORDER BY firstname ASC LIMIT ".$startat.", ".$nummail.""; 
$result = mysql_query($sql);
$i = 0;
while ($row = mysql_fetch_assoc($result)) {
	$maillist[$i]['id'] = $row['id'];
	$maillist[$i]['email'] = $row['email'];
	$maillist[$i]['firstname'] = $row['firstname'];
	$maillist[$i]['lastname'] = $row['lastname'];
	$i++;
}

for($i = 0; $i < sizeof($maillist); $i++){
	sendmail($maillist[$i]['email'], $testtext, 'Testar!', $from);
	$sql = "UPDATE ".$prefix."_qews_maillist SET lastmail = '".date('YmdHis')."' WHERE id = '".$maillist[$i]['id']."'";
	mysql_query($sql) or die(mysql_error());
	?>skickat:<?=$maillist[$i]['email']?>;<?
	sleep(1);
}
Som det är nu, skickas självklart bara ett epost ut, till första personen i epostlistan.
Sedan uppdateras användarsidan med ett meddelande om att ett epost är utskickat till - någon epost-.

Hur skall jag nu få det hela att upprepa sig till dess att alla epost fårr sitt meddelande. Tacksam för all vägledning och alla kreativa idéer ni har att komma med.
grinditwp är inte uppkopplad   Svara med citatSvara med citat