Pogledajte određenu poruku
Staro 19. 06. 2012.   #1
blackshtef
profesionalac
Qualified
 
Avatar blackshtef
 
Datum učlanjenja: 27.09.2007
Lokacija: Grubišno Polje - Varaždin
Poruke: 104
Hvala: 10
3 "Hvala" u 2 poruka
blackshtef is on a distinguished road
Pošaljite poruku preko MSN za blackshtef Pošaljite poruku preko Skype™ za blackshtef
Unhappy Provjera novih topica, slanje grupnih stvari na mail...

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_titletopic_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);
    } 
__________________
I, blackshtef

Poslednja izmena od blackshtef : 19. 06. 2012. u 22:32.
blackshtef je offline   Odgovorite uz citat