Pozdrav svima!
Ovakav je problem, radim PHP/MySQL aplikaciju koja omogućuje da se korisnik registrira i onda mu prikazuje neke tagove na koje se može pretplatiti. Ti tagovi su zapravo izvučeni iz phpBB foruma, iz tablice phpbb_tags (topic_id, tag).
topic_id zapravo je vanjski ključ za tablicu phpbb_topic (topic_id, topic_last_post_time i još hrpa manje bitnih stupaca).
Sami korisnici upisani su u tablicu korisnici (kor_id, kor_ime, email, lozinka) a koje tagove prate čuva se u tablici kor_tags (id_kor, tag). U toj zadnjoj tablici podaci se upisuju u svaki red posebno, dakle ako korisnik s ID-em 1 prati tagove Organizacija, Programiranje i Softver, tablica izgleda:
Kôd:
id_kor | tag
1 | Organizacija
1 | Programiranje
1 | Softver
Sve to fino funkcionira, samo sad me muči ključni dio: svaka 24 sata se kroz cron job vrti skripta koja provjerava ima li za sve korisnike novih postova u topicima označenim tim tagovima koje prate i ako ima, tim korisnicima treba poslati po jedan mail u kojem će biti linkovi na te topice koji ih zanimaju.
Ja sam uspio dobiti koji su topici novi sa:
PHP kôd:
SELECT topic_title, topic_last_post_time FROM phpbb_topics WHERE topic_id = '$topic_id' AND topic_last_post_time > (UNIX_TIMESTAMP(now())-86400)");
(iako, ako imate pametnije rješenje - do tell
)
Ono što me trenutno muči jest što ne znam kako da to sve strpam u mail - trenutno mi skripta šalje SVIM korisnicima mail, iako samo njih dvoje prati tagove (ostali su samo registrirani i ne prate ništa, ne postoje u kor_tags tablici).
Problem je i što za svaki topic šalje po jedan mail, što je nepraktično, jel.
Ispod je cijeli kôd skripte, uključujući i slanje maila - kako da ubacim sve te linkove u jednu odgovarajuću poruku za svakog korisnika? Array ili nešto? Mozak mi stoji
PHP kôd:
$rs = mysql_query("SELECT * FROM korisnici");
echo mysql_error();
while ($user = mysql_fetch_array($rs)) {
$kor_id = $user['kor_id'];
$kor_ime = $user['kor_ime'];
$email = $user['email'];
}
$rs2 = mysql_query("SELECT * FROM phpbb_topics WHERE tag IN (SELECT tag FROM kor_tags WHERE id_kor = '$kor_id') AND topic_last_post_time > (UNIX_TIMESTAMP(now())-86400)");
while ($topici = mysql_fetch_array($rs2)) {
$topic_id = $topici['topic_id'];
$naslov = $topici['topic_title'];
salji_mail($kor_ime, $email, $topic_id, $naslov);
}
$rs = mysql_query("SELECT * FROM korisnici");
echo mysql_error();
while ($user = mysql_fetch_array($rs)) {
$kor_id = $user['kor_id'];
$kor_ime = $user['kor_ime'];
$email = $user['email'];
//dobili smo sve korisnike i bitne podatke
//sad idemo dobiti informaciju koje sve tagove prati
$rs2 = mysql_query("SELECT tag FROM kor_tags WHERE id_kor = '$kor_id'");
echo mysql_error();
while ($kortagovi=mysql_fetch_array($rs2))
$tagovi = $kortagovi['tag'];
//dobili smo tagove
//sad idemo dobiti prave topice
$rs3 = mysql_query("SELECT * FROM phpbb_tags WHERE tag IN (SELECT tag FROM kor_tags WHERE id_kor = '$kor_id')");
while ($row = mysql_fetch_array($rs3)) {
$topic_id = $row['topic_id'];
$tag = $row['tag'];
//dobivanje titlea topic_title
$rs4 = mysql_query("SELECT topic_title, topic_last_post_time FROM phpbb_topics WHERE topic_id = '$topic_id' AND topic_last_post_time > (UNIX_TIMESTAMP(now())-86400)");
while ($row2 = mysql_fetch_array($rs4)) {
$naslov = $row2['topic_title'];
$last_post_time = $row2['topic_last_post_time'];
//echo time();
}
salji_mail($kor_ime, $email, $topic_id, $naslov);
}
}
mysql_close();
function salji_mail($kor_ime, $email, $topic_id, $naslov)
{
$poruka = 'Dragi '.$kor_ime.', u protekla 24 sata na <a href="http://foi-forum.com">FOI Forumu</a> pojavili su se novi topici i/ili postovi označeni tagovima koje pratite.<br /> Ovo su novi postovi: <a href="http://foi-forum.com/viewtopic.php?t=' . $topic_id . '">'.$naslov.'</a>';
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type: text/html; charset=utf8" . "\r\n";
$headers .= "From: blackshtef@gmail.com" . "\r\n";
mail($email,"TagApp report", $poruka, $headers);
}