Jak wprowadzać znaczniki html do bazy danych, aby podczas wyświetlana ich na stronie traktowane były jako elementy html a nie zwykły tekst?
Trzeba je wprowadzić jako elementy HTML :)
A jak stworzyłem skrypt newsów oparty o bazę danych, to czy nie mogę np. do jednego newsa wprowadzić hiperłączę, a do drugiego znacznik <img.../> lub ... ?
Wg mnie możesz. Ale musisz zapisać (i odczytać) HTML-a (lub odpowiednio spreparowanego HTML-a)
ale gdy tak robię, to wyświetlają się znaczniki jako zwykły tekst
Pokaż kod zapisu i odczytu.
Zapis
[code]<?php
// doł±czenie kodu współużytkowanego
include '../lib/common.php';
include '../lib/db.php';
include '../lib/User.php';
// użytkownik musi się zalogować
include '401.php';
// aby uzyskać dostęp do strony, użytkownik musi posiadać odpowiednie uprawnienie
$user = User::getById($_SESSION['userId']);
if (~$user->permission & User::CREATE_FORUM)
{
die('
Przepraszamy. Nie masz uprawnień do tworzenia nowych wpisów.
');}</p>
// wygenerowanie dodatkowych elementów w sekcji HTML head
ob_start();
?>
// wygenerowanie formularza wpisu
?>
<label for="post_id">Wpis w blogu</label> |
<select name="post_id" id="post_id" />
<option value="select">WYBIERZ</option>
<option value="new">Dodaj nowy</option>
<?php
// odczytanie listy tytułów wpisów
$query = sprintf('SELECT POST_ID, POST_TITLE, UNIX_TIMESTAMP(POST_DATE) ' .
'AS POST_DATE FROM %sBLOG_POST ORDER BY POST_DATE DESC, POST_TITLE ASC',
DB_TBL_PREFIX);
$result = mysql_query($query, $GLOBALS['DB']); |
<label for="post_title">Tytuł</label> | <input type="text" name="post_title" id="post_title" /> |
<label for="post_date">Data</label> | <input type="text" name="post_date" id="post_date" maxlength="10" size="10" value="<?php echo date('Y-m-d'); ?">"/> |
<label for="news_content"">Treść</label> | <textarea id="post_text" name="post_text" rows="15" cols="60"></textarea> |
<input type="checkbox" id="delete" name="delete" /> <label for="delete">Usuń wpis</label> | |
<input type="submit" value="Zapisz" id="form_submit" class="button" /> <input type="reset" value="Anuluj" id="form_reset" class="button" /> |
include '../templates/template-page.php';
mysql_close($GLOBALS['DB']);
?>
[/code]
Odczyt
[code]
News
<?php // doł±czenie kodu współużytkowanego include 'lib/common.php'; include 'lib/db.php';// odwołania Javascript
$GLOBALS['TEMPLATE']['extra_head'] = <<<ENDHTML
ENDHTML;
// odczytanie wpisów
$query = sprintf('
SELECT
POST_ID, POST_TITLE, POST_TEXT,
UNIX_TIMESTAMP(POST_DATE) AS POST_DATE
FROM
%sBLOG_POST
ORDER BY
POST_DATE DESC',
DB_TBL_PREFIX,
$year, $month,
$year, $month);
$result = mysql_query($query, $GLOBALS['DB']);
ob_start();
if ($total = mysql_num_rows($result))
{
// przesunięcie pozycji na li¶cie
$start = (isset($_GET['start']) && ctype_digit($_GET['start']) &&
$_GET['start'] <= $total) ? $_GET['start'] : 0;
// przesunięcie wskaĽnika do odpowiedniego rekordu pocz±tkowego
mysql_data_seek($result, $start);
// wy¶wietlenie 10 pozycji
$count = 0;
while ($count++ < 10 && $row = mysql_fetch_assoc($result))
{
echo '<section>';
echo '<h6>' . $row['POST_TITLE'] . '</h6>';
echo date('d-m-Y', $row['POST_DATE']) . '<br/>';
echo $row['POST_TEXT'];
echo '</section>';
}
// wygenerowanie menu stronicowania
echo '<footer class="news">';
if ($start > 0)
{
echo '<a rel="nofollow" href="index.php?&start=' .
($start - 10) . '">< Młodsze</a>';
}
if ($total > $start + 10)
{
echo ' ';
echo '<a rel="nofollow" href="index.php?&start=' .
($start + 10) . '">Starsze ></a>';
echo '</footer>';
}
}
mysql_free_result($result);
?>
Odczyt (teoretycznie) masz dobrze. Nic nie wycinasz, nic nie dodajesz...
Nie wiem, czy wiesz, ale w MySQL-u jest coś takiego jak LIMIT :)
Co do zapisu, to nie wiem, co tam robisz, bo nie dałeś go - plik 'post_admin.php'.
A sprawdzałeś w kodzie czyw < section > nie masz dobrego HTML-a?
O LIMIT wiem, a oto post_admin.php
[code]
[/code]
< section > jest taki jak pokazałem w tym drugim pliku
Sprawdź w WYGENEROWANEJ stronie, co masz w < section >.
[code]
...
News 4
02-02-2011Boże, Ojcze każdego człowieka, Tobie polecamy papieża z rodu Polaków, Jana Pawła II. Rozpoczynamy nowennę modlitwy o zasięgu narodowym, żeby wyprosić i uzyskać nowe narodzenie dla Polski, poprzez ponowną łaskę Ducha Świętego. Włączamy się w tą nowennę bardzo, bardzo licznie. Zyskujemy potężnego Orędownika i Opiekuna w Niebie. Nowenna znajduje się pod tym linkiem <a href="http://www.fjp2.com/pl/jan-pawel-ii/modlitwy/nowenna" target="_blank">www.fjp2.com/pl/jan-pawel-ii/modlitwy/nowenna</a></section> ... [/code]
I co mam zrobić?