Hallo zusammen,
ich habe hier ein Newsletter System welches ich etwas umändern will.
Bis jetzt wurde der Newsletter immer an alle Mitglieder geschickt die in der DB stehen. Jetzt können Sie in ihrem Persönlichen Bereich den Newsletter abwählen und zudem auswählen ob Sie ihn in html oder text beziehen möchten. Es gibt bei der Versand Methode einmal die Funktion
All Member (Newsletter wird an allen geschickt) so wie eine einzelne User Auswahl in form einer Checkbox vor jedem usernamen. Bei der Versendung All Member funktioniert das auch alles. Es bekommt nur der den Newsletter der ihn auch haben will. Sowie die Newsletter Art (html/text). Der Newsletter wird von mir 2 mal versendet einmal als html und einmal als normalen Text. Leider funktioniert es bei der einzel Funktion nicht ganz. Wenn ich Testhalber einen Member auswähle der Newsletter gar nicht haben möchte dann erhält er ihn trotzdem. Auch bei der Newsletter Art wird die Funktion ignoriert und der user erhält den Newsletter auch z.b. als html obwohl er text ausgwählt hat.
Hier mal ein bisschen Quellcode. Vielleicht kann mir ja jemand einen Tip geben wo der Fehler liegt.
Code:
if (isset($submit)) {
$j=sizeof($nickname);
if ($subject != "" && $body != "" && ($j>0 || $all=="Y")) {
if (isset($savetemplate) && $savetemplate=="Y") {
dbquery("INSERT INTO template (subject,body) VALUES ('$subject','$body')",$hd_main);
};
if ($all=="Y") {
$result=dbquery("SELECT nickname FROM members WHERE approved='Y' AND nickname != 'guest' AND newsletter='Y' AND auswahl='$auswahl' ORDER BY nickname",$hd_main);
for($i=0;$i<dbnum_rows($result);$i++) {
$nickname=dbresult($result,$i,"nickname");
$hd_main=dbconnect("v032425");
dbquery("INSERT INTO message (nickname,sender,date,seen,subject,body) VALUES ('$nickname','$sender',now(),'N','$subject','$body')",$hd_main);
$hd_online=dbconnect("v032425");
dbquery("UPDATE lastchange SET lastchange=now() WHERE nickname='$nickname'",$hd_online);
sendemail($nickname,$sender,$subject,$body);
};
echo "Sent message to all members
";
Soweit funktioniert alles. Jetzt kommt der Code für den einzelnen Versand
Code:
}
else {
for($i=0;$i<$j;$i++) {
$hd_main=dbconnect("v032425");
dbquery("INSERT INTO message (nickname,sender,date,seen,subject,body) VALUES ('$nickname[$i]','$sender',now(),'N','$subject','$body')",$hd_main);
$hd_online=dbconnect("v032425");
dbquery("UPDATE lastchange SET lastchange=now() WHERE nickname='$nickname[$i]'",$hd_online);
sendemail($nickname[$i],$sender,$subject,$body);
};
echo "Sent message to $j member(s)
";
};
}
Und noch die Checkboxen der user
Code:
$result=dbquery("SELECT nickname FROM members WHERE approved='Y' && nickname != 'guest' ORDER BY nickname",$hd_main);
// html gedöns.....
<?php
for ($i=0;$i<dbnum_rows($result);$i++) {
$nickname=dbresult($result,$i,"nickname");
echo "<td><input type=\"checkbox\" name=\"nickname[]\" value=\"$nickname\">$nickname[/b]</td>";
if (($i+1) % 5 ==0) {
echo "</tr>\n<tr>";
};
};
?>
Also ich habe nur eine kleine Ahnung wo der Fehler liegt. Und zwar bei der for schleife für den Einzel eintrag:
for($i=0;$i<$j;$i++) {
Leider habe ich von php max. Anfänger Kenntnisse.
Danke für Hilfe.