Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem s ugniježđenim rezultatima

[es] :: PHP :: Problem s ugniježđenim rezultatima

[ Pregleda: 1117 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

cronewbie

Član broj: 143514
Poruke: 32
*.adsl.net.t-com.hr.



Profil

icon Problem s ugniježđenim rezultatima27.04.2007. u 18:36 - pre 207 meseci
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
 
Odgovor na temu

Funkman
web administrator
KC

Član broj: 142276
Poruke: 13
*.adsl.net.t-com.hr.

Sajt: www.virtualnet.hr


Profil

icon Re: Problem s ugniježđenim rezultatima28.04.2007. u 01:01 - pre 207 meseci
Kolko vidim, imaš 2 puta otvoren tag <div class="news"> a jednom zatvoren.
Gornji je otvoren a nije zatvoren.

S druge strane, pokusaj utvrdit zasto uopce i ima na dva mjesta svaki div (title, body).

Kasno je, mozda sam corav, ali bi petlje koje crtaju nezatvorene layere mogle napravit sprčku.


BTW, taj programer se zeznuo malo kad je 'pisao' kod, jedan comment mu je na našem jeziku, drugi na eng :D
Heh.

 
Odgovor na temu

cronewbie

Član broj: 143514
Poruke: 32
*.adsl.net.t-com.hr.



Profil

icon Re: Problem s ugniježđenim rezultatima28.04.2007. u 07:52 - pre 207 meseci
Citat:
Kolko vidim, imaš 2 puta otvoren tag <div class="news"> a jednom zatvoren.
Gornji je otvoren a nije zatvoren.


Meni se, naprotiv, čini da je sasvim uredno zatvoren?

Citat:
S druge strane, pokusaj utvrdit zasto uopce i ima na dva mjesta svaki div (title, body).


To znam - div klase su u css fajlu definirane kao "news", "title" i "body" upravo radi toga da imam kontrolu nad prikazivanjem naslova i tijela poruke i da ih mogu prikazivati kako meni odgovara, pa se zato pozivaju ove dvije (tj. 3) css klase zasebno. Mislim da nije u tome problem.

Citat:
Kasno je, mozda sam corav, ali bi petlje koje crtaju nezatvorene layere mogle napravit sprčku.


To i ja cijelo vrijeme mislim, ali nikako ne uspijevam pronaci taj djelić koda koji mi *ebe koncepciju :-(


Citat:
BTW, taj programer se zeznuo malo kad je 'pisao' kod, jedan comment mu je na našem jeziku, drugi na eng :D
Heh.


Nije se zeznuo :-) To sam ja pisao za sebe dok sam ucio neke funkcije pa da lakse zapamtim kad gledam sam kod koji nisam pisao ja, njegovo je sve uredno bilo na engleskom :-)

 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
77.46.236.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Problem s ugniježđenim rezultatima28.04.2007. u 11:02 - pre 206 meseci
Citat:
To i ja cijelo vrijeme mislim, ali nikako ne uspijevam pronaci taj djelić koda koji mi *ebe koncepciju :-(


Pusti generisani HTML kroz validator.w3c.org i ispravi sve greške koje ti on javi. Obično pomogne
Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Miroslav Ćurčić
ex mVeliki
Novi Sad

Član broj: 19034
Poruke: 1118
*.dynamic.sbb.co.yu.



+19 Profil

icon Re: Problem s ugniježđenim rezultatima28.04.2007. u 18:48 - pre 206 meseci
Dodaj posle svakog teksta: <br clear="left">
"The quieter you become, the more you are able to hear."
Blog | PowerCMS
 
Odgovor na temu

cronewbie

Član broj: 143514
Poruke: 32
*.adsl.net.t-com.hr.



Profil

icon Re: Problem s ugniježđenim rezultatima04.05.2007. u 12:21 - pre 206 meseci
Riješeno :-)
 
Odgovor na temu

[es] :: PHP :: Problem s ugniježđenim rezultatima

[ Pregleda: 1117 | Odgovora: 5 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.