eT` Posted February 6, 2010 Report Share Posted February 6, 2010 Tāmmm, sāku ar roku kodēt forumu. Pagaidām esmu ticis tik tālu, ka attēlo kategorijas un forumus, un uzspiežot uz foruma attēlo topikus, no tā foruma, un uzspiežot uz topika visus postus utt. :) bet viena problēma, pārlādējot foruma lapu lietotājs tiek izlogots ( kkā ne tā skan :D ) mana forum.php uzbūve: if(empty($_GET["fid"]) && empty($_GET["tid"])) { // visas kategorijas un to forumi } if(!empty($_GET["fid"]) && empty($_GET["tid"])) { // tiek atverts noteikts forums un tā topiki } if(!empty($_GET["fid"]) && !empty($_GET["tid"])) { // noteikts topiks un tā posti un iespēja iepostot } zinu, ka uzbūve savāda, un, iespējams, tā ir pie vainas, bet pamēģināju sadalīju šo pa 3 failiem: forum, viewforum un viewtopic - efekts tāds pats tā man headerī explode tagad ir šāds: $a = explode('/', $_GET['lapa']); $sLapa = isset($a[0]) ? $a[0] : null; $sId1 = isset($a[1]) ? $a[1] : null; $sId2 = isset($a[2]) ? $a[2] : null; $_GET['lapa'] = $sLapa; if ($sLapa == 'viewtv') $_GET['id'] = $sId1; if ($sLapa == 'user') $_GET['id'] = $sId1; if ($sLapa == 'episode') { $_GET['tvid'] = $sId1; $_GET['id'] = $sId2; if ($sLapa == 'forum') { $_GET['fid'] = $sId1; $_GET['tid'] = $sId2; } pievienoju tos foruma GETus, lai varētu mod_rewrite lietot un indexa switchā iekļāvu case 'forum' include forum.php ( tāpat kā daru ar visām pārējām lapām ) Linki ir šādi: /forum/ , /forum/$forums un /forum/$forums/$teema Ja vajag kāda no tiem ifiem kodu sakiet iepostošu, jo savādāk kods baigi garš. Quote Link to comment Share on other sites More sharing options...
2easy Posted February 6, 2010 Report Share Posted February 6, 2010 kāds ir nosacījums/pārbaude, pēc kā tu atšķir ielogotu useri no anonīma apmeklētāja? Quote Link to comment Share on other sites More sharing options...
eT` Posted February 6, 2010 Author Report Share Posted February 6, 2010 if(isset($_SESSION["id"])) { } bet tai lapai nav uzlikts, ka neielogotiem nerāda ( pagaidām ) Quote Link to comment Share on other sites More sharing options...
2easy Posted February 6, 2010 Report Share Posted February 6, 2010 varbūt session_start() kkur aizmirsās. bez tā $_SESSION vsp nav :D Quote Link to comment Share on other sites More sharing options...
eT` Posted February 6, 2010 Author Report Share Posted February 6, 2010 (edited) session_start() ir tikai headerī bet index inklūdo headeri un pārējos failus, tā ka viņi ir savā starpā saistīti. ar citām lapām tādu problēmu nav. varbūt vari pamest ideju optimālākam risinājumam nekā if(tukšs), if(nav tukšs), bet nezinu kapēc gribas visu vienā failā :D tad man kaut ka ērtāk visu pārskatīt. switchs laikam atkrīt. EDIT: ahh hostam kkas nav, tapēc nevaru neko rediģēt :/ garms man kkā nepatīk, bet nezinu nevienu US hostu, kuru varētu ņetm, tapēc laikam jāpaliek pie garma, kamēr nebūs 1U + collocation. Edited February 6, 2010 by eT` Quote Link to comment Share on other sites More sharing options...
2easy Posted February 6, 2010 Report Share Posted February 6, 2010 (edited) tie ifi taču attiecas uz foruma sadaļām, nevis login/logoff stāvokli debugo ar print_r($_SESSION); mēģini atrast, kurā brīdi pazūd $_SESSION['id'] un useris vairs nav logged in atslēdz nost visas fīčas. mod_rewrite pieliksi, kad pamatfunkcionalitāte būs kārtībā Edited February 6, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
eT` Posted February 6, 2010 Author Report Share Posted February 6, 2010 tamm ar to print_r iznāca Array ( [admins] => 5 [user] => doublet ) Array ( [admins] => 5 [user] => ) un pārladējot lapu paliek: Array ( [admins] => 5 [user] => ) Array ( [admins] => 5 [user] => ) mani šaubas māc par vienu kvēriju, lai gan nezinu, kāds tam sakars ar sesiju $sql3 = mysql_query("SELECT p.date, p.user, t.title FROM forums_posts p INNER JOIN forums_topics t ON p.tid = t.id ORDER BY p.date DESC"); $row3 = mysql_fetch_array($sql3); $laiks = $row3["date"]; $name_ori = $row3["title"]; $name = seo_string($name_ori); $user = $row3["user"]; ar šo izvadu pēdējo ierakstu no konkrēta topika. tā noņēmu to kvēriju un viss notiek. hmm, kā lai es to kvēriju uzrakstu? Quote Link to comment Share on other sites More sharing options...
2easy Posted February 6, 2010 Report Share Posted February 6, 2010 (edited) varbūt kkur ifā ir piešķiršana, nevis salīdzināšana? :D if ($_SESSION['id'] = '') { nav ielogojies } else { ir ielogojies } dažreiz tāds prikols gadās. vajag ==, nevis = ar kveriju nekāda sakara. vienīgi, ja vajag tikai vienu rindu, tad sql beigās piemet LIMIT 1 (performancei) EDIT: pag varbūt tas $user mainīgais kko sabojā? Edited February 6, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
eT` Posted February 6, 2010 Author Report Share Posted February 6, 2010 Jā LIMIT 1 man bija, nez kapēc biju noņēmis :) BET, kad aizkomentēju to kvēriju, un tā mainīgos man viss notiek print_r = Array ( [admins] => 5 [user] => doublet ) Array ( [admins] => 5 [user] => doublet ) un par to = nevis == nav, jo if(sesija) tiek minēts katrā failā kur to vajag un ne indexā ne headerī viņš nav. Quote Link to comment Share on other sites More sharing options...
eT` Posted February 6, 2010 Author Report Share Posted February 6, 2010 (edited) tamm atkomentēju visu izņemot user un viss notiek, bet viņš rāda userneimu arī :D ja es to izselektēju, bet nepiešķiru mainīgajam kā tā var :D EDIT: man kautkā jāizdomā kā lai pārbauda, gan jaunākos postus, gan topikus :/ ar UNION nevis JOIN? EDIT2: bet ja jaunākais ir posts, tad pārbauda, kurā topikā viņš ir. to laikam nevarēs ar vienu kvēriju. man laikam vajadzēs tā: SELECT ... UNION ORDER BY date DESC LIMIT 1; if(empty(title)) { SELECT title FROM topiki WHERE id=$id } Edited February 6, 2010 by eT` Quote Link to comment Share on other sites More sharing options...
2easy Posted February 6, 2010 Report Share Posted February 6, 2010 (edited) pamēģini gan tā, gan tā. un izdari priekš sevis vērtīgus secinājumus ^^ bet par to $user, tad vnk izmanto citu nosaukumu, ja tas rada tādus gļukus. gadījumā nav kkāds echo ini_get('register_globals'); palicis? varbūt tam $user vēl ir kkāda mistiska sasaiste ar $_SESSION['user'] (by reference)? sazin, kā tā var ;) Edited February 6, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
eT` Posted February 6, 2010 Author Report Share Posted February 6, 2010 jā par $user tev bija taisnība, nezinu, kur un kā, bet kaut kur viņš maisījās :D nu man pašlaik ir: $sql3 = mysql_query("SELECT * FROM forums_posts UNION SELECT * FROM forums_topics ORDER BY date DESC LIMIT 1"); $row3 = mysql_fetch_array($sql3); if(empty($row3["title"])) { $topid = $row3["tid"]; $sql8 = mysql_query("SELECT title FROM forums_topics WHERE id='$topid'"); $row8 = mysql_fetch_array($sql8); $name_ori = $row8["title"]; $laiks = $row3["date"]; $name = seo_string($name_ori); $useris = $row3["user"]; } else { $laiks = $row3["date"]; $name_ori = $row3["title"]; $name = seo_string($name_ori); $useris = $row3["user"]; } un it kā domāju, ka šādi izvilks pēdējo ierakstu ( vienalga vai tas ir topiks vai posts ), bet kaut kas nesanāk. a man katrs SELECT nav jāliek () ? Jo man liekas, ka tas ORDER BY un LIMIT piesaistīts tikai otrajam UNION selectam. Quote Link to comment Share on other sites More sharing options...
2easy Posted February 7, 2010 Report Share Posted February 7, 2010 (edited) aha UNION ir vnk tāds kā "un" Edited February 7, 2010 by 2easy Quote Link to comment Share on other sites More sharing options...
eT` Posted February 7, 2010 Author Report Share Posted February 7, 2010 (edited) emm kā tad lai izvelk pēdējo datumu no abām tabulām? nekas cits kā JOIN man nenāk prātā, bet tur kaut kas nestrādā. a kādu JOIN veidu izmantot? INNER it kā atgriež abu pušu vērtības, un to man arī vajag mby izselektēt abu pušu visus laukus un pielikt ORDER BY date LIMIT 1? EDIT: vai MAX strādā uz datetime? ja strādā varbūt varu atrisināt šādi? mysql_query("SELECT MAX(date) FROM (SELECT date FROM forums_topics UNION SELECT date FROM forums_posts)"); Edited February 7, 2010 by eT` Quote Link to comment Share on other sites More sharing options...
eT` Posted February 8, 2010 Author Report Share Posted February 8, 2010 (edited) BUMP! atrisināju, bet visai garā modē :D $sql3 = mysql_query("SELECT * FROM forums_posts ORDER BY date DESC LIMIT 1"); $sql3a = mysql_query("SELECT * FROM forums_topics 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 = $row3a["title"]; $name = seo_string($row3a["title"]); $useris = $row3a["user"]; } else { $laiks = $row3a["date"]; $tid3 = $row3["tid"]; $sql3b = mysql_query("SELECT title FROM forums_topics WHERE id='$tid3'"); $row3b = mysql_fetch_array($sql3b); $name_ori = $row3b["title"]; $name = seo_string($row3b["title"]); $useris = $row3a["user"]; } EDIT: beidzot esmu kaut cik pabeidzis :D tagad atlicis tikai admincp pievienot foruma editēšanu, un forumā aktivizēt moderatoriem, dzēst un labot :D EDIT2: vēl neuzliku, ka apskatīt var tikai reģistrētie, bet ja gribat varat iečekot - http://filmam.lv/forum/ Edited February 8, 2010 by eT` 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.