Keresés

Aktív témák

  • Deemer

    csendes tag

    Sikerült megoldanom a hibát .. pár +feltérellel kiegészítettem, és most már jó :D

  • Deemer

    csendes tag

    Sziasztok!

    Egyik ismerősöm ajánlotta ezt az oldalt, és hát eddig csak pozitív dolgokat hallottam róla, így gondoltam megpróbálom én is :)

    Nos akkor ... Olyat szeretnék csinálni a fórumomba, hogy ha a user volt a topicban, és ha érkezik új hozzászólás, akkor jelezze neki, hogy van a fórumon, és azon belül a megfelelő topicon belül új hsz az utolsó ottléte óta ...

    Eddig a képek megvannak hozzá, meg meg is próbáltam írni magamtól, csak azaz igazság, hogy nem akar menni rendesen nekem , mert van amikor jelez a fórumnál, hogy új hsz van a fórumon belül, de egy topic se jelez, hogy azon belül lenne ...
    Van nekem ilyenem, hogy:

    SQL Tábla

    CREATE TABLE `forum_visited` (
    `username` VARCHAR(255) NOT NULL,
    `forum` INT(11) NOT NULL,
    `topic` INT(11) NOT NULL,
    `replies` INT(11) NOT NULL,
    `big_new` INT(11) NOT NULL DEFAULT '0',
    `uid` INT(11) NOT NULL NULL,
    `time` INT(11) NOT NULL NULL
    ) TYPE=InnoDB;

    usernameba megy a felhasználó, fórumba a fórum idje, topicba a topic idje, repliesbe megy a megtekintés idején a topic kezdőhszére a válaszok száma( ezzel ellenőrzöm, hogy kell e jelölni, hogy új hsz, vagy sem ... ) a big_new az jelzi, hogy kint a fórumok listájánál jelezzen e, hogy van új hsz, vagy sem, uid a felhasználó id-je, és a time, pedig ha postolt, akkor annak az ideje, hogy mikor küldte el.


    Ha belép a topicba, akkor beteszem a visited táblába az adatait, így ha lesz új hsz, akkor már neki fog jelezni .. legalábbis kéne neki :P
    PHP Kód

    if( isset( $_SESSION['user_logged_in'] )) {
    $sql_uid = ''SELECT `id` FROM `users` WHERE `username`=''' . $_SESSION['username'] . ''''';
    $query_uid = mysql_query( $sql_uid );
    $fetch_uid = mysql_fetch_assoc( $query_uid );

    $sql_visited = ''SELECT `big_new` FROM `forum_visited` WHERE `username`=''' . $_SESSION['username'] . ''' and `forum`='$req' and `topic`='$id' and `uid`='' . $fetch_uid['id'];
    $query_visited = mysql_query( $sql_visited );
    if(( mysql_num_rows( $query_visited ) == 1 )) {
    $fetch_visited = mysql_fetch_assoc( $query_visited );
    $sql_visited = ''UPDATE `forum_visited` SET `replies`='$visited_replies', `big_new`='0', `time`=''' . time() . ''' WHERE `username`=''' . $_SESSION['username'] . ''' and `forum`='$req' and `topic`='$id' and `uid`=''' . $fetch_uid['id'] . ''''';
    mysql_query( $sql_visited );
    }
    else {
    $sql_visited = ''REPLACE INTO `forum_visited`( `username`, `forum`, `topic`, `replies`, `big_new`, `uid`, `time` ) VALUES( ''' . $_SESSION['username'] . ''', '$req', '$id', '$visited_replies', 0, '' . $fetch_uid['id'] . '', ''' . time() . ''' )'';
    mysql_query( $sql_visited );
    }
    };

    Csak akkor csinálja, ha a user be van lépve ... lekérem a user idjét, összeteszem a visited táblából al ekérést, ha sikeres a lekérés, akkor updatelem a legfrisebb adatokkal és átteszem 0ra a big_newt, hogy ne jelezzen többet ebben a topicban és a fórum emiatt a topic miatt. Egyéb esetben valszeg most jön elsőnek a topicba, így beteszem a jelenlegi adatokat, big_new 0-val, így nem fog jelezni, csak ha később lesz benne új hsz.


    Ha új témát nyit, vagy hozzászól, akkor beteszem a visited táblába big_new 1-el:
    PHP Kód:

    $sql_visited = ''SELECT `forum` FROM `forum_visited` WHERE `username`=''' . $_SESSION['username'] . ''' and `forum`='$req' and `topic`='$id' and `uid`='' . $fetch_uid['id'];
    $query_visited = mysql_query( $sql_visited );
    if( mysql_num_rows( $query_visited ) != 0 ) {
    $sql_visited = ''UPDATE `forum_visited` SET `replies`='$visited_replies', `big_new`='1', `time`=''' . time() . ''' WHERE `username`=''' . $_SESSION['username'] . ''' and `forum`='$req' and `topic`='$id' and `uid`=''' . $fetch_uid['id'] . ''''';
    mysql_query( $sql_visited );
    }
    else {
    $sql_visited = ''REPLACE INTO `forum_visited`( `username`, `forum`, `topic`, `replies`, `big_new`, `uid`, `time` ) VALUES( ''' . $_SESSION['username'] . ''', '$req', '$id', '$visited_replies', 1, '' . $fetch_uid['id'] . '', ''' . time() . ''' )'';
    mysql_query( $sql_visited );
    }

    Lényegét tekintve ua a kód, mint az előző, csak itt 1 lesz a big_new, hogy jelezzen a többieknek ...


    Akkor asszem jöhet is a topicok listázása:
    PHP Kód:

    if( isset( $_SESSION['user_logged_in'] )) {
    $sql_visited = ''SELECT `replies`, `time` FROM `forum_visited` WHERE `username`=''' . $_SESSION['username'] . ''' and `forum`='$id' and `topic`=''' . $cont['id'] . ''' and `uid`='' . $fetch_uid['id'];
    $query_visited = mysql_query( $sql_visited );
    if( mysql_num_rows( $query_visited ) == 1 ) {
    $fetch_visited = mysql_fetch_assoc( $query_visited );
    if( $fetch_visited['replies'] < $cont['replies'] ) {
    $exp = explode( ''.'', $img );
    $img = $exp[0] . ''_new.'' . $exp[1];
    };
    };
    };

    Lefut, ha user be van lépve. megnézem, hogy volt e már a user a topicban, ha volt, akkor lekérem a látogatása idejében a válaszok számát, ha ez kisebb, mint a jelenlegi, akkor jelölöm neki, hogy van új hsz.


    És a fórumoknál is a jelölés:
    PHP Kód:

    if( isset( $_SESSION['user_logged_in'] )) {
    $sql_uid = ''SELECT `id` FROM `users` WHERE `username`=''' . $_SESSION['username'] . ''''';
    $query_uid = mysql_query( $sql_uid );
    $fetch_uid = mysql_fetch_assoc( $query_uid );

    $sql_visited = ''SELECT `big_new` FROM `forum_visited` WHERE `username`=''' . $_SESSION['username'] . ''' and `forum`=''' . $cont['id'] . ''' and `uid`='' . $fetch_uid['id'];
    $query_visited = mysql_query( $sql_visited );
    if( mysql_num_rows( $query_visited ) != 0 ) {
    $fetch_visited = mysql_fetch_assoc( $query_visited );
    if( $fetch_visited['big_new'] == 1 ) {
    $exp = explode( ''.'', $img );
    $img = $exp[0] . ''_new.'' . $exp[1];
    };
    };
    };

    Lefut, ha a user be van lépve. lekérem a user idjét. összeteszem a lekérést. ha a visszaadott sorok száma nem 0, akkor lekérem az adatokat, és ha a big_new az 1, akkor jelölöm, hogy új hsz van a témán belül.

    Srry, hogy ilyen hosszú lett, csak szerepeltetni szerettem volna mindent. Remélem tudtok segíteni. lehet logikai felépítésében vna a gond, vagy nem tudom, de már itt töröm magam rajta egy hete, és nem akar sikerülni Ezért gondoltam, hogy hátha tudtok segíteni

    Előre is köszönöm a segítségeteket! Laterz!

    [Szerkesztve]

Aktív témák