Autor Zpráva
mirio
Profil
Ahoj,

protože si netroufám naprogramovat komentáře ke článkům v PHP sám, našel jsem si tenhle (viz. níže) fajnový článek, kde je popsáno řešení, dokonce bez databáze. Funguje perfektně, ale neumím ho ostylovat. Nechci pomocí tabulek. Chci pomocí CSS, ale nevím jak na to. Poradíte, prosím?

Díky.

Článek:
http://interval.cz/clanky/komentare-k-clankom-bez-databaze/
Alphard
Profil
přiřaď si k tagům třídy a identifikátory a ty pak (třeba externě) nastyluj v CSS
mirio
Profil
Mno, trošku "lidštěji" by to podat nešlo, prosím? :-) Já už mám vzhled těch komentářů předstylovaný. Je to použitelné? A jestli ano, tak jak?

.komentar
{
width: 90%;
margin: 15px auto 15px auto;
background: #f9f9f9 ;
padding: 5px;
border: 1px solid #606060;
}

.komentar_hlavicka
{
font-family: "Trebuchet MS", "Geneva CE", lucida, sans-serif;
font-weight: bold;
font-size: 11px;
color: #606060;
text-align: left;
padding: 5px;
}

.komentar_hlavicka a:link, .komentar_hlavicka a:visited
{
color: #00a048;
text-decoration: underline;
}

.komentar_hlavicka a:hover
{
color: red;
}

.komentar_text
{
font-family: Verdana, Geneva, Arial, Helvetica, sans-serif;
color: #606060;
font-size: 11px;
text-align: left;
margin-left: 30px;
padding: 0px 10px 10px 10px
}
Joker
Profil
mirio
Z PHP generujte strukturu komentáře jakou potřebujete, s příslušnými třídami CSS. Například:

<div class="komentar">
<h5 class="komentar_titulek">Titulek komentáře</h5>
<span class="komentar_autor">napsal: <strong>Joker</strong>, 26.10.2006 11:07</span>
<div class="komentar_text">
</div>
</div>

Skutečná struktura záleží na tom, jak to přesně chcete.
No a potom už jenom píšete styly:
.komentar {...}
.komentar_titulek {...}
.komentar_autor {...}
.komentar_autor strong {...}
.komentar_text{...}
mirio
Profil
Jsem asi úplně blbej, ale nevím, jak to mám udělat. Nemám problém s CSS, mám problém právě s výstupem z PHP a nevím, jak ho definovat. Tohle je hlavní skript, který vypíše komentáře na stránku:

<?
@$test = fopen("komentare/k_$id.dat", "r");
if(!$test):
echo "<tr><td width=500 bgcolor=\"gray\">K tomuto článku nie sú k dispozícii žiadne komentáre</td></tr>";
else:
$text = fread($test, filesize("komentare/k_$id.dat"));
$roz = explode("-----", $text);
for($i=1;$i<count($roz);$i++):
$e = $roz[$i];
$e = nl2br($e);
list($meno,$email,$predmet,$text) = explode("\n", $e);
echo "<tr><td width=500 bgcolor=\"gray\"><a href='mailto:$email'>$meno</a> - $predmet</td></tr>";
echo "<tr><td width=500 bgcolor=\"silver\">$text</td></tr>";
endfor;
fclose($test);
endif;
echo "<tr><td width=500 bgcolor=\"gray\"><a href='pridaj_komentar.php?id=$id'>Pridaj komentár</a></td></tr></table>";
?>

Tenhle skript uloží komentář do externího *.txt souboru:

<?
if(!file_exists("komentare/k_$id.dat")):
$fp = fopen("komentare/k_$id.dat", "w");
chmod("komentare/k_$id.dat", 0766);
else:
$test = fopen("komentare/k_$id.dat", "r");
$stary_text = fread($test, filesize("komentare/k_$id.dat"));
fclose($test);
$fp = fopen("komentare/k_$id.dat", "w");
endif;

$text = nl2br($text);
$txt = "-----$meno\n$email\n$predmet\n$text";

fputs($fp, $txt);
if(isset($stary_text)) fputs($fp, $stary_text);
fclose($fp);
header("Location: komentare.php?id=$id");
?>

No a tohle je formulář:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<title>Formulár</title>
</head>
<body>
<form method="POST" action="komentar_add.php">
<input type=hidden name="id" value="<? echo $id ?>">
<p>Meno: <input type="text" name="meno" size="20"></p>
<p>Email: <input type="text" name="email" size="20"></p>
<p>Predmet: <input type="text" name="predmet" size="20"></p>
<p>Text: <textarea rows="2" name="text" cols="20"></textarea></p>
<p><input type="submit" value="Poslat" name="B1"></p>
</form>
</body>
</html>
Joker
Profil
mirio
No logicky musíte přidat třídy stylů do vypisovaného HTML...
tady:
echo "<tr><td width=500 bgcolor=\"gray\"><a href='mailto:$email'>$meno</a> - $predmet</td></tr>";
echo "<tr><td width=500 bgcolor=\"silver\">$text</td></tr>";

dáte:
echo "<tr><td class=\"nejakatrida\"><a href='mailto:$email'>$meno</a> - $predmet</td></tr>";
echo "<tr><td class=\"jinatrida\">$text</td></tr>";

a pak můžete stylovat přes .nejakatrida a .jinatrida
Joker
Profil
(pardón, ujel mi prst na myšítku a odeslalo se to dvakrát)
mirio
Profil
Já jsem fakt úplně blbej. Vypadlo mi z kódu toto:

<table width=500 cellpadding=1 cellspacing=1 border=0 bgcolor="#f9f9f9">

Proto to nic nedělalo, i když jsem to tak jak píšete už jednou zkoušel.

Ještě jedna pitomá otázka, jak ostylovat tu tabulku? *stydlivý smajlík* Lépe řečeno, ošetřit to tak, aby každý komentář byl stylovatelný zvlášť, ne jen jako celá jedna velká tabulka. Popřípadě, šlo by to i bez ní?

Teď to vypadá takto:
[url=http://mirio.borec.cz/nova_stranka/test.php][/url]

Chtěl bych mít každý komentář zvlášť.
mila
Profil
Pokud chcete programovat v php je třeba si uvědomit jak funguje. Je to nějaký program, který vytvoří stránku. Ta je pak pro prohlížeč úplně stejná, jako byste uložili obyčejný html soubor. Jediný rozdíl je, že příště může být jiná.
Neboli vytvoření komentářů v php a jejich následné ostylování jsou dvě naprosto odlišné věci, které nemají spolu prakticky nic společného.
Prostě udělejte komentáře, pak si nechte v prohlížeči zobrazit zdrojový kód, a s tím pracujte, jako by to byla obyčejná stránka. Nebo lépe udělejte obyčejnou statickou stránku, kde bude několik testovacích formulářů, a tu ostylujte. Pak z ní udělejte šablonu (nahraďte texty příslušným echo, přidejte nějaký ten cyklus), a strčte do php.
(Omlouvám se, jestli to vypadá, že z někoho dělám hlupáka, nemyslím to tak, přijde mi, že tohle je základ, který někomu utíká, ale samozřejmě to tak být nemusí, a já to špatně pochopil..)
mirio
Profil
Omlouvám se, jestli to vypadá, že z někoho dělám hlupáka,
Nene, jak jsem psal, PHP neumím ale nestydím se zeptat a jsem připraven na vše! :-) Ale vážně, radši se zeptám jako blbec a mám jasno, než tápat a dělat chytráka...
Joker
Profil
Jak píše mila, nejlepší metoda jak řešit tohle je naprogramovat si to v PHP, pak si nechat zobrazit ten výsledný zdroják, klasicky v HTML si navrhnout úpravy které potřebujete a potom je přenést do toho PHP.

Úplně nejlepší by bylo používat šablony, ale tím se v téhle fázi asi nezatěžujte ;)
Anonymní
Profil *
Zase já. :-) Zajímalo by mě, jak ve skriptu ošetřit, když se mi za odkazem ( např. tímto <a href='mailto:$email'>$meno</a> ) generuje <br />.

Escape sekvenci mám, podle mne, dobře - \n.

Koukněte:
http://mirio.borec.cz/nova_stranka/test.php
mirio
Profil
To jsem psal já, ale nebyl jsem přihlášen.
Joker
Profil
mirio
To <br /> je zřejmě způsobené tím, že ze souborů to načítáte po řádcích.. takže poslední znak je konec řádku.. no a nl2br ho tedy převede na <br />.
Zkuste nejdřív odstranit netisknutelné znaky pomocí trim()
mirio
Profil
Tak už jsem to vyřešil. Nahradil jsem escape sekvenci \n za <br> a mám to. Ufff... :-)
Toto téma je uzamčeno. Odpověď nelze zaslat.