[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод из бд краткой и полной новости
Sanya
Привет! Мне нужно сделать вывод из бд краткой новости а при нажатии кнопки подробней должна открыться новая страничка с полной новостью.
Ещё должны работать юрлы.например когда я напишу zlo.ru/new=id15 мне откроется новость с id 15. Помогите пожалуйста кто чем может.
Залив новостей в базу происходит так
Форма:

<form action="sevnow.php" target="nov" method="POST" >
Название:<br /> <input type="text" name="name" id="name" class="form" /><br />
Текст:<br /> <textarea name="tekst" id="tekst" class="form2" /></textarea><br />
<input
type= "submit" value="Создать" class="main3" />
</form>



РНР файл:


mysql_connect($hostname, $username, $password) or die ("Нет соединения с базой");

mysql_select_db($dbName) or die (mysql_error());
$cdate = date("Y-m-d");

$query = "INSERT INTO $table SET name='".$_POST['name']."',
tekst='"
.$_POST["tekst"]."', data='$cdate'";

mysql_query($query) or die(mysql_error());
mysql_close();
echo "Спасибо ваша новость добавлена";
?>

ключевое поле id;



Спустя 1 день, 21 час, 5 минут, 58 секунд (30.04.2012 - 11:33) ilma55 написал(а):
сперва: в чем проблема?
что не можешь реализовать или понять ход работы?

Спустя 2 дня, 23 часа, 37 минут, 7 секунд (3.05.2012 - 11:10) Sanya написал(а):
Цитата (ilma55 @ 30.04.2012 - 09:33)
сперва: в чем проблема?
что не можешь реализовать или понять ход работы?

Я просто не представляю как это всё должно работать. Надо что б кто то доступно объяснил или скинул код примера.

Спустя 16 минут, 15 секунд (3.05.2012 - 11:26) ilma55 написал(а):
ну что ж...
предположим что новость ты добавил в БД.

на странице, где у тебя должны выводиться новости кратко, делай вывод банных из твой базы данных

.....
while ($row = mysql_fetch_assoc($result))
{
echo '<h2>'.$row['title'].'</h2>';
$news = ''; // тут разделяю твой текст по пробелам и вывожу первые 20 слов. ну в нете куча примеров как можно разделить текст. эт так на вскидку
$array=explode(' ',$row['news']);
for ($i=0;$i<20;$i++)
{
$news .= $array[$i].' ';
}
echo '<p>'.$news.'...</p>';

echo '<p><a href="new=.'$row['id']'.">читать далее</a></p>';
}


ну как-то так. это просто пример. а там уже со стилями можно поиграться.
а еще и дату добавления лучше выводить

// тут удаляем все теги из описания. а то будет весело смотреться с ними
выдрал из своего примера. пригодиться тебе
$destr_nws_tag = array('img','p','a','ol','li','strong','span','font','em');
foreach ($destr_nws_tag as $tag)
$row->news = preg_replace('/<[\/]?'.$tag.'[^>]*>/i','',$row->news);
$new_txt1 = '';
$array=explode(' ',$row->news);
for ($i=0;$i<20;$i++)
{
$new_txt1 .= $array[$i].' ';
}
$new_txt1 = str_replace('.','. ',$new_txt1);
?>
<p class="darker"><?php echo stripslashes($new_txt1)."...";?></p>

Спустя 14 минут, 45 секунд (3.05.2012 - 11:41) Sanya написал(а):
Большое спасибо. Щас буду разбираться.

Спустя 2 минуты, 38 секунд (3.05.2012 - 11:43) ilma55 написал(а):
если че то спрашивай

Спустя 24 секунды (3.05.2012 - 11:44) Sanya написал(а):
echo '<p><a href="new=.'$row['id']'.">читать далее</a></p>'; Ругается на эту строчку...

Спустя 8 минут, 20 секунд (3.05.2012 - 11:52) ilma55 написал(а):
ага. тут ругается на кавычки.
либо экранируй их, либо не заморачиваясь
просто
$id_news = $row['id'];

echo '<p><a href="new=.'$id_news'.">читать далее</a></p>';

Спустя 8 минут, 2 секунды (3.05.2012 - 12:00) Sanya написал(а):
<?PHP

$hostname = "localhost";
$username = "sanya";
$password = "25041961";
$dbName = "now";

$table = "newnov";

mysql_connect($hostname, $username, $password) or die ("Нет соединения с базой");
mysql_select_db($dbName) or die (mysql_error());
$result = "SELECT id, name, tekst, data FROM $table ORDER BY id DESC LIMIT 1;";
while ($row = mysql_fetch_assoc($result))
{
echo '<h2>'.$row['name'].'</h2>';
$news = 'tekst'; // тут разделяю твой текст по пробелам и вывожу первые 20 слов. ну в нете куча примеров как можно разделить текст. эт так на вскидку
$array=explode(' ',$row['news']);
for ($i=0;$i<20;$i++)
{
$news .= $array[$i].' ';
}
echo '<p>'.$news.'...</p>';

}
?>
Переделал под свою бд ругается. На эту строку while ($row = mysql_fetch_assoc($result)) . Что эта строка делает?

Спустя 4 минуты, 47 секунд (3.05.2012 - 12:05) Sanya написал(а):
Ой моя тупость.
$query = "SELECT id, name, tekst, data FROM $table ORDER BY id DESC LIMIT 1;";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result))

Спустя 3 минуты, 22 секунды (3.05.2012 - 12:08) ilma55 написал(а):
во первых: так не пиши
SELECT id, name, tekst, data FROM $table ORDER BY id DESC LIMIT 1;
а надо:
SELECT id, name, tekst, data FROM newnov ORDER BY id DESC LIMIT 1;

и походу дела ты не понимаешь что тут...


$query = "SELECT id, name, tekst, data FROM mewnow ORDER BY id DESC";
$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result))
{
echo '<h2>'.$row["name"].'</h2>';
$news = '';
// тут разделяю твой текст по пробелам и вывожу первые 20 слов. ну в нете куча примеров как можно разделить текст. эт так на вскидку
$array=explode(' ',$row['tekst']);
for ($i=0;$i<20;$i++)
{
$news .= $array[$i].' ';
}
echo '<p>'.$news.'...</p>';
$url = $row['id'];
echo '<a href="new='.$url.'">read more...</a>';
}
?>

Спустя 6 минут, 16 секунд (3.05.2012 - 12:15) Guest написал(а):
$table = "newnov"; newnov так что здесь без разницы.
SELECT id, name, tekst, data FROM $table ORDER BY id DESC LIMIT 1;
Это вывод последней новости с конца таблицы.
echo '<a href="new='.$url.'">read more...</a>';
href="new=' куда должна быть направлена эта ссылка?
Сори за такие вопросы учу PHP меньше месяца.

Спустя 2 минуты, 18 секунд (3.05.2012 - 12:17) ilma55 написал(а):
да без проблем

ты сам пишешь, что ссылка на новость идет так: new=23, где 23 это id новости

ну и вот вместо $url подставится 23

<a href="new='.$url.'">read more...</a>

Спустя 3 минуты, 32 секунды (3.05.2012 - 12:20) Sanya написал(а):
проблема в следующем я не знаю как через url открыть данные из бд.
Тесть как надо записать url в браузере чтоб открыть эту новость(((((

Спустя 4 минуты, 47 секунд (3.05.2012 - 12:25) ilma55 написал(а):
ну смотри.

new=23 указывает на что-то...

на что?
ты же сам написал new=id15

не знаю.
сделай страницу full_news.php и туда передавай свой id
то есть:
a href="full_news.php?id=23"

и там уж получаешь методом get этот 23 и уже выводишь стандартными методами новость

Спустя 5 минут, 46 секунд (3.05.2012 - 12:31) Sanya написал(а):
Вот так?
if ($_GET['id']) {

$id = (int)$_GET['id'];

$result = mysql_query("SELECT * FROM $table WHERE `id` = '$id' LIMIT 1");

$row = mysql_fetch_assoc($resut);

$news=$row['News'];

echo $news;

}

Спустя 1 минута, 36 секунд (3.05.2012 - 12:33) ilma55 написал(а):
ну да
тока это не надо if ($_GET['id']) {


Спустя 5 часов, 13 минут, 19 секунд (3.05.2012 - 17:46) Sanya написал(а):
Спасибо большое за помощь!. Без тебя бы не справился. Сделал всё что хотел. Спс.

Спустя 47 минут, 5 секунд (3.05.2012 - 18:33) ilma55 написал(а):
да нема за шо
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.