[ cronewbie @ 27.04.2007. 18:36 ] @
Disclaimer: Ovo će biti dugačak post. Bačen sam u vatru i od mene se zahtijeva da implementiram cms kojeg nisam pisao, a čiji je autor _puno_ iskusniji programer od mene. Sve je zasnovano na pozivanju nekakvih internih funkcija koje je prethodni programer pisao i njemu je sve radilo ok. Meni, naravno, ne radi. Situacija koju imam je slijedeća: Imam neki cms u kojeg upisujem članke. I cms dio svega radi besprijekorno, logiranje, odlogiranje, dodavanje, editiranje i deaktiviranje članaka kao i dodavanje slika. Međutim, front-end ne radi kako treba, već samo polovično. I znam da je do mene, da sam ja negdje zeznuo, ali pošto nemam toliko iskustva nikako ne uspijevam skužiti u čemu griješim. File kojeg includeam u neki file kojeg ću nazvati novosti.php se zove public.inc.php, i on je ključan igrač za prikazivanje sadržaja članaka. U novosti.php sve što imam napraviti jeste da includeam public.php, i on izgleda otprilike ovako: Code: include_once("public.inc.php"); // bla bla html ovdje ?> <link rel="stylesheet" type="text/css" href="news.css"> <? $article = intval( $_GET["article"] ); $lang = "hr"; // hard-coded if ($article) showArticle( $article, $lang ); else showFolder( 1, $lang, 20 ); // 1 je npr. redni broj za sekciju/folder 'novosti', a 20 max. broj njuza za prikazivanje na naslovnici. // bla bla html ovdje ?> I to je novosti.php. Mislim da tu nemam što pogriješiti, i brijem da sam gadno pogriješio negdje u ovom ranije navedenom public.inc.php-u, a koji sadrži ovaj kod: Code: <? include( "./config.inc.php" ); include( "cms/lib.inc.php" ); // connect to database - one conn. instance per page if( USE_PERSISTENT_DB_CONN === TRUE ) $DB = mysql_pconnect($DBCONN["host"], $DBCONN["login"], $DBCONN["password"]); else $DB = mysql_connect($DBCONN["host"], $DBCONN["login"], $DBCONN["password"]); if( $DB === false ) die( "Cannot connect to database: " . mysql_error() ); elseif( mysql_select_db($DBCONN["database"]) === false ) die( "Cannot select specified database " . mysql_error() ); //----- function getArticle( $articleID, $LANG="hr" ) { $sql = "select A.articleID, A.folderID, A.title_$LANG as title, A.body_$LANG as body, A.publishDate, A.imageFile " . "from articles A " . "where A.articleID = " . $articleID . " and A.status=1"; $query = db_execute( $sql ); return mysql_fetch_array( $query ); } //----- function showArticle( $articleID, $LANG="hr", $convertLineBreaks = TRUE ) { if( $row = getArticle( $articleID, $LANG ) ) { $folderID = $row["folderID"]; ?> <div class="news"> <div class="title"><? echo $row["title"]; ?><? $imageFile = $row["imageFile"]; ?></div> <div class="body"><? echo $convertLineBreaks? nl2br($row["body"]): $row["body"]; ?> <!--<div class="separator"></div>--> <? $sql = "select fileName, comment_$LANG as comment from articlefiles AF where articleID = $articleID"; $query = db_execute( $sql ); if( $row = mysql_fetch_array($query) ) { $rowcnt = 0; echo "<p>"; echo "<table class='gallery' align='center'>"; while( $row ) { $colcnt = 0; echo "<tr>"; while( $row && $colcnt < 3 ) { echo "<td>" . getMediaImage($row["fileName"], $row["comment"], NULL) . "</td>"; $row = mysql_fetch_array($query); $colcnt++; } echo "</tr>"; } $rowcnt++; echo "</table></div><br />"; } ?> </div> <? } } //----- function showFolder( $folderID, $LANG="hr", $limit=15 ) { $maxchars = 600; // max. characters per news summary $sql = "select * from folders where folderID=$folderID"; $query = db_execute( $sql ); $row = mysql_fetch_array( $query ); if( $homeArticleID = $row["homeArticleID"] ) showArticle( $homeArticleID ); else { $sql = "select A.articleID, A.title_$LANG as title, A.body_$LANG as body, A.publishDate, A.imageFile, " . "(select count(*) from articlefiles AF where AF.articleID = A.articleID) as fileCount " . "from articles A " . "where A.folderID = " . $folderID . " and A.status=1 " . " and A.title_$LANG is not null " . "order by A.publishDate desc " . "limit $limit"; $query = db_execute( $sql ); $articlecount = 0; while( $row = mysql_fetch_array($query) ) { $articlecount++; $body = $row["body"]; $hasmore = FALSE; if( strlen($body) > $maxchars) { $body = substr($body, 0, $maxchars); // srezi na prvih $maxchars if ($pos = strrpos($body, " ")) $body = substr($body, 0, $pos) . "..."; // break at last word boundary (if any) $hasmore = TRUE; } else $hasmore = ($row["body"] || $row["fileCount"]); $fulllink = $_SERVER["PHP_SELF"] . "?article=" . $row["articleID"]; ?> <div class="news"> <div class="title"><a href="<? echo $fulllink; ?>"><? echo $row["title"]; ?></a> </div> <div class="body"> <? $imageFile = $row["imageFile"]; if( $imageFile ) echo getMediaImage( $imageFile, NULL, "align='left'" ); echo nl2br($body); ?> </div> </div> <? } } } ?> Ono što se dešava nakon pokretanja novosti.php jeste da mi se učitaju članci, pravilno se pozove broj zadanih članaka i sve to, ali mi se kod nekih članaka koji imaju dodijeljen i thumbnail za prikazivanje dogodi to da mi članci izgledaju nekak ovako: Naslov1 | Tijelo teksta (bez slike) | --------(separator) Naslov 2 | SLIKA | Tijelo teksta (slika se "floata" na "left") | --------(separator) Naslov 3 | SLIKA | Tijelo teksta (slika se "floata" na "left") | --------(separator) Naslov 4 | SLIKA | Tijelo teksta (slika se "floata" na "left") | Naslov 5 | SLIKA | Tijelo teksta (slika se "floata" na "left") | --------(separator) --------(separator) Sve do "Nalova 3" je ok, i onda sra*e počnu raditi Naslov 4 i 5... :~( Što se tiče fajlova koji se ovdje includeaju odmah na početku, niti u njima brijem da nije problem (config.inc.php i cms/lib.inc.php) Meni se čini da je tu problem s generiranjem div-ova negdje, ali očigledno ne mogu pronaći gdje. A možda i nije u tome frka. Pa eto, ako ima netko barem malo iskusniji od mene (ja možda ne vidim više najbolje nakon 5. pive), plaćam gajbu pive ako mi pomogne. Evo dodah i snapshot problema, ako će kome pomoći da mu bude jasnije: http://img179.imageshack.us/my...cmsfrkastacusadajmemenikh9.jpg |