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:
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:
<?
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