Правильный url на полную новость.

slmark

Новичок
Правильный url на полную новость.

Есть новостная лента. Есть анонс и полная новость. На странице новостей отображается анонс со ссылкой, ведущей на полную новость. Новости добавляются через форму на странице администрирования.

Хотелось бы сделать эту ссылку на полную новость вида:
Подведены итоги развития компании за 2006 год.

Не хотелось бы

Подведены итоги развития компании за 2006 год. >>
Подведены итоги развития компании за 2006 год. Подробнее.

Сам я придумал следующее решение:

1.В текстовом поле анонса пишем, собственно, анонс:
Подведены итоги развития компании за 2006 год.

2.ВВ-кодом выделяем текст будущей ссылки
[lnk]Подведены итоги[/lnk] развития компании за 2006 год

3.Пишем в базу datetime новости и получаем id записи
PHP:
mysql_query('INSERT INTO news SET datetime = NOW()');
$id = mysql_insert_id();
4.Делаем UPDATE вставленной записи, вставляем анонс и полную новость, заменив ВВ-код на ссылку
PHP:
mysql_query('UPDATE news SET anons = '.preg_replace('/\[lnk\](.+)\[\/lnk\]/', '<a href="/news.php&id='.$id.'">\1</a>', $_POST['anons']).', body = '.$_POST['body'].' WHERE news_id = '.$id);
Вот такая процедурка. Может подскажете более эффективный, красивый способ, если он есть :)
Спасибо.
 

kruglov

Новичок
bb-коды полезны, когда их много, этих кодов.
Вы много кодов используете для форматирования заголовка? Может, { } хватит?

А заменять, конечно, надо при выводе, что дает возможность их, вообще говоря, на разные вещи заменять в зависимости от контекста. Вам же внутри новости при показе ее заголовка уже не надо делать ссылку на себя? И в <title>? И в альте фотографии? А при отдаче новостей какому-то другому сайту к hrefу придется www.site.ru вписывать.
 

slmark

Новичок
Спасибо, я использую DBSimple, так что с этим у меня все ок:)

во-вторых, никто не мешает заменять bb-код на выводе.
А заменять, конечно, надо при выводе, что дает возможность их, вообще говоря, на разные вещи заменять в зависимости от контекста. Вам же внутри новости при показе ее заголовка уже не надо делать ссылку на себя? И в <title>? И в альте фотографии? А при отдаче новостей какому-то другому сайту к hrefу придется www.site.ru вписывать.
А вот об этом я не подумал :) Огромное спасибо!

А еще, у меня 6 кнопок ВВ-кода, как вы считаете, их все лучше на выходе обрабатывать, а в базу писать как есть?
Спасибо.
 

Апокалипсис

тех дир matras.ru
Если подразумевается что запись можно будет редактировать то конечно обрабатывать bb на выходе...
 

Фанат

oncle terrible
Команда форума
mysql_query('UPDATE news SET anons = '.preg_replace('/\[lnk\](.+)\[\/lnk\]/', '<a href="/news.php&id='.$id.'">\1</a>', $_POST['anons']).', body = '.$_POST['body'].' WHERE news_id = '.$id);
можно попросить показать пальцем, где здесь DBSimple?
 

slmark

Новичок
Автор оригинала: Фанат
можно попросить показать пальцем, где здесь DBSimple?
Я на форум DBSimple не писал, чтобы было более понятно, может кто-нибудь и не использовал, не знает.
Реальный код:
PHP:
$DB->query('UPDATE ?_news SET news_title = ? WHERE news_id = ?', preg_replace('/\[murl\](.+)\[\/murl\]/', '<a href="/news/'.date('Y').'/'.$_GET['id'].'">\1</a>', $_POST['news_title']), $_GET['id']);
Спасибо.
 

slmark

Новичок
:)
Ух, какой ты придирчивый.

PHP:
define('TABLE_PREFIX', 'lk_');
$DB->setIdentPrefix(TABLE_PREFIX);

$DB->query('UPDATE ?_news SET news_title = ? WHERE news_id = ?', preg_replace('/\[murl\](.+)\[\/murl\]/', '<a href="/news/'.date('Y').'/'.$_GET['id'].'">\1</a>', $_POST['news_title']), $_GET['id']);
Теперь все ок? :)
 

Фанат

oncle terrible
Команда форума
Да.
Последне моё замечание было лишним.
Я не очень силен в dbsimple, а префиксный плейсхолдер уж очень напоминает строковый плюс подчеркивание, и я их перепутал. а сейчас увидел свою ошибку.
 
Сверху