21. září bude sraz! Od 18.00 v restauraci Tradice v Praze u Anděla
Autor Zpráva
Rodgers23
Profil
Nevíte náhodou, jak mám zobrazit libovolný článek z databáze tak, aby to bylo i s novým odstavcem, tak jak to je v databázi? Mám to do bloku a není to moc pěkné
juriad
Profil
To záleží na tom, jak máš v databázi uložené odstavce. Často se do databáze ukládá přimo HTML (tedy každý odstavec bude začínat <p>, případně nějaký jiný jazyk, který se do HTML převádí. Jednou takovou často možností je kódování nového odstavce jako odvojité odřádkování, které se v PHP nahradí za značku <p>.
Rodgers23
Profil
Aha, tak to mám někde problém, protože mě se v databázi žádné odstavce nezobrazují. Když to vložím přes textarea tak se mi uloží jen text bez žádných tagů
juriad
Profil
Rodgers23:
Znovu, co je odstavec? Odřádkování?
Rodgers23
Profil
Jo sory, měl jsem na mysli odřádkování, ale nenapadlo mě to slovo. Teď jsem na netu našel toto... Textarea zachovava radkovani - respektive za kazdy uzivatelem zadany enter odesila sekvenci "\n"....No jenže mě se nic neodesílá


Tím myslím že se mi ukládá jen text bez sekvenci
juriad
Profil
Podle mě to ukládá i s tím odřádkováním, jen je to těžké vidět, protože HTML považuje odřádkování jen za mezeru.
Můžeš použít funkci nl2br, která nahradí odřádkování pomocí \n za <br>, což sice není odstavec, ale použít to jde. Jinak si můžeš napsat svůj vlastní regex pro preg_replace, který by to dělal lépe (třeba spojoval více odřádkování do jednoho).
Rodgers23
Profil
Tak jsem nějak maturoval, ale nepřišel jsem na nejvhodnější způsob, jak tam funkci nl2br do mého skriptu začlenit.
Mám controller:
    $this->group->toTags( 'group_' );
        require_once( FRAMEWORK_PATH . 'models/topic.php' );
        $topic = new Topic( $this->registry, $topic );
        if( $topic->getGroup() == $this->groupID )
        {
            $topic->toTags( 'topic_' );
            $sql = $topic->getPostsQuery();
            $cache = $this->registry->getObject('db')->cacheQuery( $sql );
            $this->registry->getObject('template')->getPage()->addTag('posts', array( 'SQL', $cache ) );
            $this->registry->getObject('template')->buildFromTemplates('groups/view-topic.tpl.php' );
        }
        else
        {
            $this->registry->errorPage( 'Neplatné téma', 'Požadované téma je neplatné');
        }

který volá models Topic, kde mám funkci, z níž tahám data z databáze:
public function getPostsQuery()
    {
        $sql = "SELECT p.*,p.post FROM posts p, profile pr WHERE pr.user_id=p.creator AND p.topic=" . $this->id . " ORDER BY p.ID ASC";
        return $sql;
    }

A teď, kde to tam mám vložit? Text, který chci odřádkovat je v p.post. Byl bych velmi vděčen za každou radu
Keeehi
Profil
Rodgers23:
Nejlépe v groups/view-topic.tpl.php. Ten jsi ovšem neukázal.

Hodilo by se napsat i jméno frameworku. Ne každý zná všechny.
Rodgers23
Profil
Tady je. Text, který chci odřádkovat je v {post}:
    <table width="800">
                    <tr>
                        <td width="200" bgcolor="">
                            <img src="views/default/images/6.jpg" height="100"/>
                            <p><font size="2">Přidal <a href="profile/view/{ID}">{creator_name}&nbsp;{creator_surname}</a></p>
                            <p>{friendly_created_post}</em></font></p>
                        </td>
                        <td width="600" bgcolor="">
                              {post}
                        </td>
                    </tr>
                </table>
anonymníí
Profil *
Rodgers23:
Jaký šablonovací systém to je? Dokumentace neexistuje?

Třeba ve smarty by to bylo

{post|nl2br}

Třeba to u tebe bude podobné.
Rodgers23
Profil
Jjo,je to šablonovací systém. používám MVC architekturu. No, budu muset nějak na to přijít, protože jak to máš ty, tak mi to nefunguje


Tak jsem to vyřešil jednoduše, ale možná až moc jednoduše...Nebude to dělat bordel?
 <p style="white-space: pre">{post}</p>

 
Bubák
Profil
Rodgers23:
Nebude to dělat bordel?
Bude.
Keeehi
Profil
Tak jsem googlil a dogooglil jsem se, že to je framework napsaný podle knihy. Knihu k dispozici nemám, dokumentace taky nikde není, takže bych ještě zkusil {nl2br(post)} ale to bude nejspíš taky špatně. Mám z toho pocit, že ten systém je celkem dost jednoduchý, takže je dost možné, že to prostě neumí. Já bych tedy přešel na nějaký framework, který má alespoň dokumentaci.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0