anonīms Posted February 14, 2010 Report Share Posted February 14, 2010 (edited) 2easy, bet teiksim, ja veido bez posta laika, kapēc gan nevarētu vnk dzēst laukus Mēģināšu paskaidrot eT izveidoja tematu(1): 13:50 (ar forums_read neko nedaram) 2easy(12) apskatīja tematu 13:52 (insert into forums_read 12,1) bubu apskatīja tematu 13:55 (insert into...) briedis pievienoja atbildi 13:57 (delete from forums_read where temata_id = 1 and lietotajs != briedis_id un pēc briedis visiem rādas, ka temats nav lasīts, jo ir jauns posts. apmēram šādi Edited February 15, 2010 by anonīms Quote Link to comment Share on other sites More sharing options...
mickys Posted February 14, 2010 Report Share Posted February 14, 2010 PAr glabāšanu cepumos - sanāk ka, ja es izdzēšu cepumus, tad man visi forumi, visas tēmas rādās nelasītas? Neliekas pareizi. Manuprāt tas ir DB jāglabā... un anonīms ideja man patīk.. Quote Link to comment Share on other sites More sharing options...
2easy Posted February 14, 2010 Report Share Posted February 14, 2010 PAr glabāšanu cepumos - sanāk ka, ja es izdzēšu cepumus, tad man visi forumi, visas tēmas rādās nelasītas? Neliekas pareizi. Manuprāt tas ir DB jāglabā... kāpēc nav pareizi? cookiji tieši ir domāti, lai glabātu usera settingus. ja userim tos nevajag, viņš tos nodzēš. turklāt ir anonīmie lasītāji, kuriem nav nekāda user id. ko nu? diskriminēt??? :D par anonīms variantu: ir ok. tad nevajag menedžēt laiku. db variantā tā var darīt. glabājot cepumā, gan vajadzētu arī laiku pieglabāt Quote Link to comment Share on other sites More sharing options...
eT` Posted February 14, 2010 Author Report Share Posted February 14, 2010 anonīms, paldies. sapratu tavu ideju un rīt īstenošu - šodien jāiet gulēt, jo 5os jau uz šanci :D Quote Link to comment Share on other sites More sharing options...
anonīms Posted February 14, 2010 Report Share Posted February 14, 2010 Es ar cerams rīt uzmetīšu uz viena forumu ideju :) btw, paskaties eT ko pirms tam rakstīju. Tev to post id točn nevajag. Ja vajag varu parādīt kā es velku ārā kategorijas. Quote Link to comment Share on other sites More sharing options...
anonīms Posted February 15, 2010 Report Share Posted February 15, 2010 (edited) Šodien pieķēros un iznākums ir tāds: tabulas forumam forums_kategorijas (id, name) forums_subkategorijas (id, name, kategorija) forums_temati (id [as temata_id],name) forums_read (temats, lietotajs) Pašā foruma sākumā iemetam (forums.php) $read_status = 'http://php.lv/f/public/style_images/master/f_unread.png'; Galvenā foruma lapa (Kur tie attēlotas visas kategorijas un forumi iekšs tiem. (Nejaukt ar atvērtu forumu un tematu listiem) if($ielogojies) { $rs = mysql_query("SELECT t2.lietotajs FROM ".PREFIX."forums_temati as t1, ".PREFIX."forums_read AS t2 WHERE t2.lietotajs = '".$lietotajs['id']."' AND t1.subkategorija = '".$subkategorija['id']."'") or die(mysql_error()); if(mysql_num_rows($rs) > 0) $read_status = 'http://php.lv/f/public/style_images/master/f_read.png'; } Forumu forumu lapā (Lapā, kur tiek attēloti noteikta foruma temati) if($ielogojies) { $rs = mysql_query("SELECT t2.lietotajs FROM ".PREFIX."forums_temati as t1, ".PREFIX."forums_read AS t2 WHERE t2.lietotajs = '".$lietotajs['id']."' AND t1.id = '".$temats['id']."'") or die(mysql_error()); if(mysql_num_rows($rs) > 0) $read_status = 'http://php.lv/f/public/style_images/master/t_read.png'; } Apskatot kādu tematu if($ielogojies) { $topic_read = mysql_num_rows(mysql_query("SELECT lietotajs FROM ".PREFIX."forums_read WHERE lietotajs = '".$lietotajs['id']."' AND temats = '".$temats['temata_id']."'")); if($topic_read < 1) { mysql_query("INSERT INTO ".PREFIX."forums_read (temats, lietotajs) VALUES ('".$temats['temata_id']."','".$lietotajs['id']."')") or die(mysql_error()); } } Post'ojot atbildi kādā tematā. [$_POST] mysql_query("DELETE FROM ".PREFIX."forums_read WHERE temats = '".$temats['temata_id']."' AND lietotajs != '".$lietotajs['id']."'"); Veidojot jaunu tematu [$_POST] // veidotā tematu ID velk ārā kā nu kurš grib $get_topic_id = mysql_result(mysql_query("SELECT id FROM ".PREFIX."temati WHERE autors = '".$lietotajs['id']."' AND nosaukums = '".$nosaukums."' ORDER BY id DESC LIMIT 1"),0,0); mysql_query("INSERT INTO ".PREFIX."forums_read (temats, lietotajs) VALUES ('".$get_topic_id."','".$lietotajs['id']."')"); Tas laikam arī ir viss.. Kārtīgi testējis gan neesmu, bet vajadzētu strādāt. Edited February 15, 2010 by anonīms Quote Link to comment Share on other sites More sharing options...
briedis Posted February 15, 2010 Report Share Posted February 15, 2010 šīs tabulas forums_kategorijas (id, name) forums_subkategorijas (id, name, kategorija) varētu sapludināt vienā... Quote Link to comment Share on other sites More sharing options...
anonīms Posted February 15, 2010 Report Share Posted February 15, 2010 Lielā vajadzība nav, bet tu biji domājis teiksim forums_kategorijas (id,name,k) ja k nav tukšs, tātad tātad tā ir apakškategorija, ja empty, tad lielā? Quote Link to comment Share on other sites More sharing options...
briedis Posted February 15, 2010 Report Share Posted February 15, 2010 (edited) Lielā vajadzība nav, bet tu biji domājis teiksim forums_kategorijas (id,name,k) ja k nav tukšs, tātad tātad tā ir apakškategorija, ja empty, tad lielā? mhm. Kaut kad biju te rakstījis par to, kā to realizēt lai nebūtu rekursīvi kvēriju izsaukumi, lai to visu varētu atlasīt feini ar vienu kvēriju un nedaudz php piepalīdzēšanas... Tad vismaz rodas iespēja ērti menedžēt tās kategorijas neierobežotā dziļumā... Varbūt tavam forumam tas īsti nav nepieciešams, bet var noderēt citiem gadījumiem :) Edited February 15, 2010 by briedis Quote Link to comment Share on other sites More sharing options...
eT` Posted February 16, 2010 Author Report Share Posted February 16, 2010 (edited) tamm vadoties pēc anonīmā posta izveidoju to sistēmu. man strādā kad apskatu noteiktu subkategoriju ( rādās lasītiet un nelasītie ) bet nestrādā foruma galvenajā lapā. $sql2 = mysql_query("SELECT * FROM forums_forumi WHERE kid='$kat_id' ORDER BY id ASC"); while($row2 = mysql_fetch_array($sql2)) { $for_id = $row2["id"]; $rs = mysql_query("SELECT t2.user FROM forums_topics AS t1, forums_views AS t2 WHERE t2.user = '".$_COOKIE['id']."' AND t1.fid = '".$for_id."'"); if(mysql_num_rows($rs) > 0) $read = "http://filmam.lv/images/read.png"; else $read = "http://filmam.lv/images/unread.png"; EDIT: šāds man ir kad apskatu noteiktu subkategoriju ( forumu ) $rs = mysql_query("SELECT * FROM forums_views WHERE user = '".$_COOKIE['id']."' AND temas_id = '".$row5['id']."'"); if(mysql_num_rows($rs) > 0) $read = "http://filmam.lv/images/read.png"; else $read = "http://filmam.lv/images/unread.png"; Edited February 16, 2010 by eT` Quote Link to comment Share on other sites More sharing options...
anonīms Posted February 16, 2010 Report Share Posted February 16, 2010 (edited) Vispār to else unread.gif vari neizmantot. Par to, ka neiet: parādi savu db struktūru vai vēl labāk. visu kodu, kurš velk ārā galveno foruma lapu. EDIT: salīdzini savu foruma id ar to id, ko tev padod kverijā. (Vai viņi maz sakrīt) Bet tā uzmetot acis uz kodu, izskatās, ka viss ir ok. Edited February 16, 2010 by anonīms Quote Link to comment Share on other sites More sharing options...
eT` Posted February 16, 2010 Author Report Share Posted February 16, 2010 (edited) DB: forums_kategorijas ( piemēram Galvenais, Offtopic utt. ) <= main kategorijas forums_forumi ( visi foruma piem. Jaunumi, Atsauksmes utt. ) forums_topics ( tēmas ) forums_posts ( posti ) forums_views ( skatījumi ) vieta, kur izvelk galveno forumu $sql1 = mysql_query("SELECT * FROM forums_kategorijas ORDER BY id ASC"); while($row1 = mysql_fetch_array($sql1)) { //print_r($_SESSION); $kat_name = $row1["name"]; $kat_id = $row1["id"]; echo "<tr><th colspan=4>$kat_name</th></tr>"; echo "<tr><td class=title>Nosaukums</td><td class=title>Tēmas</td><td class=title>Ieraksti</td><td class=title>Pēdējais ieraksts</td></tr>"; $sql2 = mysql_query("SELECT * FROM forums_forumi WHERE kid='$kat_id' ORDER BY id ASC"); while($row2 = mysql_fetch_array($sql2)) { $for_id = $row2["id"]; $rs = mysql_query("SELECT t2.user FROM forums_topics AS t1, forums_views AS t2 WHERE t2.user = '".$_COOKIE['id']."' AND t1.fid = '".$for_id."'"); if(mysql_num_rows($rs) > 0) $read = "http://filmam.lv/images/read.png"; else $read = "http://filmam.lv/images/unread.png"; $for_name = $row2["name"]; $for_name_seo = seo_string($row2["name"]); $for_desc = $row2["desc"]; $for_t_sk = $row2["topiccount"]; $for_p_sk = $row2["postcount"]; $sql3 = mysql_query("SELECT * FROM forums_posts WHERE fid='$for_id' ORDER BY date DESC LIMIT 1"); $sql3a = mysql_query("SELECT * FROM forums_topics WHERE fid='$for_id' ORDER BY date DESC LIMIT 1"); $row3 = mysql_fetch_array($sql3); $row3a = mysql_fetch_array($sql3a); if($row3a["date"] > $row3["date"]) { $laiks = $row3a["date"]; $name_ori = substr($row3a["title"],0,15); $name = seo_string($row3a["title"]); $useris = $row3a["user"]; } else { $laiks = $row3["date"]; $tid3 = $row3["tid"]; $sql3b = mysql_query("SELECT title FROM forums_topics WHERE id='$tid3'"); $row3b = mysql_fetch_array($sql3b); $name_ori = substr($row3b["title"],0,15); $name = seo_string($row3b["title"]); $useris = $row3["user"]; } echo " <tr width=100%> <td width=60%> <table class=forum> <tr width=100%> <td class=no width=10%><img src=$read /></td><td class=no width=90%><b><a href=http://filmam.lv/forum/$for_name_seo>$for_name</b></a><br />$for_desc</td> </tr> </table> </td> <td width=10% class=num>$for_t_sk</td> <td width=10% class=num>$for_p_sk</td> <td width=20%>"; if(!empty($row3) || !empty($row3a)) { echo "<small>$laiks<br />Tēma: <a href=http://filmam.lv/forum/$for_name_seo/$name>$name_ori</a><br />Autors: <a href=http://filmam.lv/user/$useris>$useris</a></small>"; } else { echo "<small>Nav ierakstu!</small>"; } echo "</td> </tr>"; } echo "<tr><td class=atstarpe></td></tr>"; } EDIT: tikko ievēroju, ka man foruma galvenajā lapā read rāda visiem, forumiem, kuros ir ieraksti, bet pārējiem unread. Tātad vaina ir kvērijā, ne? Edited February 16, 2010 by eT` Quote Link to comment Share on other sites More sharing options...
anonīms Posted February 16, 2010 Report Share Posted February 16, 2010 (edited) kverijā gan. Bet tas kods tāds pagars izskatās. Kveriji ar daudz EDIT: Vispār man ir uznācis slinkums, tapēc dodu kā piemēru visu savu galvenās foruma lapas kodu. http://paste.php.lv/5e23e2c326bd40c2a6a98a03ac5bf705/nonum Jau laikus brīdinu - nebļaut par tur esošo haosu. :D Edited February 16, 2010 by anonīms Quote Link to comment Share on other sites More sharing options...
eT` Posted February 18, 2010 Author Report Share Posted February 18, 2010 (edited) tammm mēģinu un man nesanāk izdomāt kādam būtu jāizskatās kvērijam kura f-ja būtu šāda: izvelk lasīto topiku skaitu no forums_views, kas ir noteiktam forumam, un ja skaits nesakrīt ar kopējo skaitu izvadīt UNREAD. SQL struktūra: forums_forumi (id,kid[kategorijas id], name,seoid,desc[description],topiccount,postcount) forums_topics (id,fid[foruma id], title,seoid,text,user,date, views, replies, pinned, locked,lastpost ) forums_views (id,user, teemas_id ) PHP struktūra while(izvelkam kategorijas) { while(izvelkam forumus no noteiktas kategorijas) { $rss = mysql_query("SELECT t2.user FROM forums_topics as t1, forums_views AS t2 WHERE t2.user = '".$_COOKIE['id']."' AND t1.fid = '".$for_id."'") or die(mysql_error()); if(mysql_num_rows($rss) > 0) $read = 'http://filmam.lv/images/read.png'; } } man varbūt vajag views tabulā pievienot vēl lauku foruma_id? un tad izvilkt visus ar to foruma_id un salīdzināt skaitu? Edited February 18, 2010 by eT` Quote Link to comment Share on other sites More sharing options...
2easy Posted February 18, 2010 Report Share Posted February 18, 2010 varbūt tu arī taisies tos ciklus ar sql pieprasījumiem izpildīt katrā requestā??? pie pietiekami liela skaita forumu/topiku/postu/useru tur viss sāks reāli bremzēt. turklāt tas viss tikai dēļ kkāda read/unread :D gribot, negribot atmiņā ataust 20% 80% sakarība. šajā gadījumā izskatās, ka 20% darba serveris paveic, lai nodrošinātu 80% funkcionalitāti, un pārējos 80% darba veic, lai izcīnītu atlikušos 20% funkcionalitāti (tā saucamos "sīkumus" ar read/unrad tai skaitā :D) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.