E-Mailbenachrichtigung bei einem Forum

Flex

(aka Felix Jacobi)
So, ich quäle mich jetzt schon ein bisschen länger mit einem kleinen Forum und Features ab. Leider habe ich momentan eine kleine Gedankensperre die mir es mir verweigert die "Benachrichtigen" Funktion zu schreiben.

[ Das Ziel ]
Jeder User der im Thread etwas geschrieben hat, soll eine E-Mail bekommen, sobald eine neue Antwort geschrieben wird.

[ Das Problem ]
Ich speichere nur die Userids in den threads ab, muss also erstmal alle Userids herausholen und dann kann ich erst aus der 'user'-Tabelle die E-Mailaddressen herausholen.
Ich weiß aber nicht, wie ich jetzt mit den Userids weiter an die E-Mailaddressen komme...

[ Das Beispiel ]
Ein Thread, 4 Antworten...
Ich hole die Userids 1, 2, 3 und 4 aus der Threadtabelle. Diese sind nun im Array $xxx drin. Jetzt meine Frage, wie komme ich jetzt an die E-Mailadressen? Kann ja keinen Array als Where Angabe benutzen...

Noch etwas, man sollte bedenken, dass es nicht immer 1, 2, 3, 4 ist sondern auch mal 1, 2, 5, 9 usw. sein könnte...

Hoffe auf Antwort...

Have Fun
 
hmm,

wenn du das in einem Array hast musst du das erstmal in einen query mit einbauen. der sollte dann so aussehen

SELECT email FROM usertabelle WHERE userid IN ( 1,2,3,4,5,6) dieses 1,2,3,4,5, musst du dir selbst zusammen basteln, sollte ungefähr so gehen
PHP:
$query = "SELECT email FROM usertab WHERE userid IN (".implode(",",$arrayvar).")";
$result = mysql_query($query);
while($zeileholen = mysql_fetch_array($result))
{
mail ($zeileholen[email],"Subjekt","Body");
}

so soltle das ungeähr hinhauen denke ich.
 
Hmm, also deine Lösung hört sich schon gut an, doch leider klappt es nicht...
[ Error ]
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in E:\Apache\Apache2\htdocs\tcm\bla.php on line 11

[ Code ]
PHP:
<?php

include("./connect.inc.php");

$get_tuserids = mysql_query("SELECT * FROM topics WHERE tid = '2'");
$get_ruserids = mysql_query("SELECT author FROM reply WHERE tid = '2'");

while($row = mysql_fetch_array($get_ruserids)) {
$query = "SELECT email FROM user WHERE pseudonym IN (".implode(",",$row).")";
$result = mysql_query($query);
while($zeileholen = mysql_fetch_array($result))
{
	echo $zeileholen['email'];
}
}

?>
 
hmm,

mach mal echo $query; wie der aussiht, daran erkennt man ganz gut was man falsch macht oder was noch nicht passt.
 
In deinem Code steckt ein Logikfehler. Mach´s lieber so wie im folgenden Beispiel, dann brauchst du auch nur einen Query für das ganze => kürzerer, übersichtlicherer Code + datenbankschonender.

PHP:
$get_ruseremails = mysql_query("SELECT reply.author, user.email FROM reply, user WHERE reply.tid = '2' AND user.pseudonym = reply.author");

while($row = mysql_fetch_array($get_ruseremails)) {
    echo $row['author']." hat die Adresse ".$row['email']."<br>";
}
 
Zurück