Новостная лента.

NO25mart

Guest
Новостная лента.

Доброго времени суток. Рискну задать вопрос. В поиске искал нужный мне ответ - не на нашёл. Я новичок. Прочёл мануалы, которые выложены на форуме и сайте. Решил сделать движок, пока новостную ленту вот по этой статье http://detail.phpclub.ru/article/2000-12-04 И у меня возникли вопросы:
1)раздел 2. Запись новостей
куда вписать этот код:

mysql_query ("INSERT INTO news (ntitle, ntext, ndate) VALUES ('". addslashes($ntitle). "', '". addslashes($ntext). "', NOW())");

2)раздел 3. Вывод новостной ленты

Куда вписать этот код? В поле "Выполнить SQL запрос(ы) на БД"?

$request = "SELECT ntext, ntitle, ndate FROM news";

если вписываю, то выдаётся ошибка:

Ошибка
SQL-запрос:

$request = "SELECT ntext, ntitle, ndate FROM news"
Ответ MySQL:

#1064 - You have an error in your SQL syntax near '$request = "SELECT ntext, ntitle, ndate FROM news"' at line 1

3)раздел 3. Вывод новостной ленты

Куда вписать этот код? Туда же?

$request = "SELECT ntext, ntitle, ndate FROM news ORDER BY ndate DESC";

4)И наконец последний вопрос, куда "выводить ленту"?

Только не надо пожалуйста писать "делай руками и головой", у меня оыта в програмировании никакого, а ответьте сразу чётко. Может если я пойму это, у меня уже не будет вопросов. И ещё, FAQ по MySQL хороший, как мне начать работать с базой данной? почему там нет наглядных примеров? Практики?
Заранее премного благодарен.
 

Romantik

TeaM PHPClub
NO25mart
купи хорошую книгу PHP и MySQL (на форуме, воспользовавшись поиском, найдешь отзывы)
потому как ответить на эти вроде бы простые вопросы, тяжело, так как их возникнет еще больше =) тут проще написать, но тогда ты не научишься =)
 

NO25mart

Guest
Автор оригинала: Romantik
NO25mart
купи хорошую книгу PHP и MySQL (на форуме, воспользовавшись поиском, найдешь отзывы)
потому как ответить на эти вроде бы простые вопросы, тяжело, так как их возникнет еще больше =) тут проще написать, но тогда ты не научишься =)
Спасибо за совет. Но дело в том, что я живу в Крыму, Керчи, а с книгами у нас очень туго. Я спрашиваю вообще скорее не как написать скрипт или что неправильно, а просто кудаа вводить код в phpMyAdmin.
Даже если я купил бы книгу, я бы её всю не осилил. Я прочёл то что мне нужно - формы. но не могу найти информацию по MySQL (с примерами). Напиши пожалуйста, и я научусь, обещаю.
 

SelenIT

IT-лунатик :)
NO25mart

1) Код добавления новостей вписать в скрипт, обрабатывающий форму добавления новостей с полями ntitle и ntext.

2) Этот запрос в общем никуда вписывать не надо - это просто учебный пример составления запроса "от общего к частному".

3) Это часть кода вывода новостей, который приведен в этом же разделе статьи через 1 абзац.

4) Для начала выводи ленту как отдельную страницу, с помощью кода из п.3. Потом, когда разберешься, что к чему, сможешь изменить ее вывод по вкусу.

5) Кажется, в конце статьи есть ссылка для скачивания, скорее всего с примерами...
 

NO25mart

Guest
Автор оригинала: SelenIT
NO25mart

1) Код добавления новостей вписать в скрипт, обрабатывающий форму добавления новостей с полями ntitle и ntext.

2) Этот запрос в общем никуда вписывать не надо - это просто учебный пример составления запроса "от общего к частному".

3) Это часть кода вывода новостей, который приведен в этом же разделе статьи через 1 абзац.

4) Для начала выводи ленту как отдельную страницу, с помощью кода из п.3. Потом, когда разберешься, что к чему, сможешь изменить ее вывод по вкусу.

5) Кажется, в конце статьи есть ссылка для скачивания, скорее всего с примерами...
С твоими ответами 2 и 3 я понял. В вот 1й и 4й не очень...
Растолкуй мне пожалуйста поподробнее... ну чайник я, потерпите меня, плиз!

1) Где этот скрипт находится? Я этого не понял, как вписать? :(

Если этот код вписать в "Выполнить SQL запрос(ы) на БД" и там выбрать ntitle или ntext, то выдаётся ошибка:

Ошибка
SQL-запрос:

mysql_query(

"INSERT INTO news (ntitle, ntext, ndate) VALUES ('".addslashes(
$ntitle
). "', '".addslashes(
$ntext
). "', NOW())"
)
Ответ MySQL:

#1064 - You have an error in your SQL syntax near 'mysql_query ("INSERT INTO news (ntitle, ntext, ndate) VALUES ('". addslashes($nt' at line 1

4)Как отдельную я и хочу выводить, но как с помощью кода из п3 ? Поподробнее напиши пожалуйста... мне ещё трудно разобраться...:(

з.ы. спасибо что ответил!
 

Olimp

Guest
Может не стоит зацикливаться на ленте новостей.
Если хочется изучать это зайди на http://www.kurepin.ru/php/
там есть пример как работать с пхп и MySQL
 

NO25mart

Guest
Автор оригинала: Olimp
Может не стоит зацикливаться на ленте новостей.
Если хочется изучать это зайди на http://www.kurepin.ru/php/
там есть пример как работать с пхп и MySQL
Конечно спасибо за ссылку, но я хочу сделать движок! А именно добовление новостей... Сейчас на этом сайте посмотрю о новостях...
 

Romantik

TeaM PHPClub
NO25mart
Возьми пару готовых скриптов новостей и посмотри как они сделаны. Бери простенькие.
 

SelenIT

IT-лунатик :)
NO25mart

Под "Выполнить SQL запрос(ы) на БД", вероятно, подразумевается phpMyAdmin? Он здесь не при чем. Ты должен сам написать простенький скрипт, например, такой:
PHP:
<html>
<head><title>Добавление новостей</title></head>
<body>
<?php
// если скрипт получил нужные поля методом POST
if (isset($_POST['ntitle']) && isset($_POST['ntext'])) {
   // нужная процедура, смысл которой хорошо описан в http://phpfaq.ru/slashes
   if (get_magic_quotes_gpc()) {
      $_POST['ntitle'] = stripslashes($_POST['ntitle']);
      $_POST['ntext'] = stripslashes($_POST['ntext']);
   }
   // соединимся с базой
   mysql_connect('localhost','root',''); // при необх. замени на свои хост, логин и пароль к базе
   // выбираем свою базу
   mysql_select_db('имя_базы'); // здесь должно быть имя БД с новостями
   // а вот теперь формируем запрос на вставку
   $query = "INSERT INTO news (ntitle, ntext, ndate) VALUES ('" . mysql_real_escape_string($_POST['ntitle']) . "', '" . mysql_real_escape_string($_POST['ntext']) . "', NOW())";
   // и отдаем его на выполнение соответствующей функции PHP
   mysql_query($query) or die(mysql_error());
   // если скрипт не "умер" с сообщением об ошибке - значит, все ОК
  ?><p>Новость успешно добавлена</p><?
}
// а форму мы выведем в любом случае, чтобы можно было добавлять новость за новостью
?>
<h1>Добавить новость</h1>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];  ?>">
Заголовок<br><input name="ntitle" type="text"><br>
Текст<br><textarea name="ntext"></textarea><br>
<input type="submit" value="Добавить">
</form>
</body>
</html>
Скрипт вывода будет еще проще - стандартная "шапка", открывающий тег <?php, коннект к БД, код из статьи, закрывающий ?> и закрытие </body></html>.

А статьи Курепина как образец для первых шагов очень не рекомендуются. Начинать лучше с http://php5.ru/study и http://phpfaq.ru
 

Sizz

Новичок
Но дело в том, что я живу в Крыму, Керчи, а с книгами у нас очень туго.
есть такая вещь как интернет-магазины. слышал, наверно? ;) так вот книги, особенно которые трудно найти в городе очень удобно покупать в таких интернет магазинах. я уже больше 3х лет пользуюсь books.ru - никаких проблем
 

NO25mart

Guest
Автор оригинала: SelenIT
NO25mart

Под "Выполнить SQL запрос(ы) на БД", вероятно, подразумевается phpMyAdmin? Он здесь не при чем. Ты должен сам написать простенький скрипт, например, такой:
PHP:
<html>
<head><title>Добавление новостей</title></head>
<body>
<?php
// если скрипт получил нужные поля методом POST
if (isset($_POST['ntitle']) && isset($_POST['ntext'])) {
   // нужная процедура, смысл которой хорошо описан в [url]http://phpfaq.ru/slashes[/url]
   if (get_magic_quotes_gpc()) {
      $_POST['ntitle'] = stripslashes($_POST['ntitle']);
      $_POST['ntext'] = stripslashes($_POST['ntext']);
   }
   // соединимся с базой
   mysql_connect('localhost','root',''); // при необх. замени на свои хост, логин и пароль к базе
   // выбираем свою базу
   mysql_select_db('имя_базы'); // здесь должно быть имя БД с новостями
   // а вот теперь формируем запрос на вставку
   $query = "INSERT INTO news (ntitle, ntext, ndate) VALUES ('" . mysql_real_escape_string($_POST['ntitle']) . "', '" . mysql_real_escape_string($_POST['ntext']) . "', NOW())";
   // и отдаем его на выполнение соответствующей функции PHP
   mysql_query($query) or die(mysql_error());
   // если скрипт не "умер" с сообщением об ошибке - значит, все ОК
  ?><p>Новость успешно добавлена</p><?
}
// а форму мы выведем в любом случае, чтобы можно было добавлять новость за новостью
?>
<h1>Добавить новость</h1>
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];  ?>">
Заголовок<br><input name="ntitle" type="text"><br>
Текст<br><textarea name="ntext"></textarea><br>
<input type="submit" value="Добавить">
</form>
</body>
</html>
Скрипт вывода будет еще проще - стандартная "шапка", открывающий тег <?php, коннект к БД, код из статьи, закрывающий ?> и закрытие </body></html>.

А статьи Курепина как образец для первых шагов очень не рекомендуются. Начинать лучше с http://php5.ru/study и http://phpfaq.ru
Эти две ссылки посещал, читал! Всё вродебы понятно! Но есть одно НО, php там с примерами, а вот MySQL только одна теория... поэтому мне трудно ещё понять на прктике как БД с php писать.
К новостям:
Про страничку я понял, спасибо.
А про вывод не совсем:
шапка <html>
<head><title>вывод новостей</title></head>
БД <body><?php коннект к БД - вот это мне не понятно, как это написать? Нигде не могу найти синтаксиса БД! напиши пожалуйста.... , код какой именно из статьи? Там много его... напиши плыз, просто я никогда ещё не писал скриптов, и мне трудно ещё въехать, объясни плиз пошагово (коннект к БД и код из статьи)?>
</body>
</html>
 

SelenIT

IT-лунатик :)
коннект к БД - вот это мне не понятно, как это написать?
PHP:
<?php
// соединимся с базой
mysql_connect('localhost','root',''); // при необх. замени на свои хост, логин и пароль к базе
// выбираем свою базу
mysql_select_db('имя_базы'); // здесь должно быть имя БД с новостями 
... // а дальше код из статьи после слов "Теперь выводим ленту:"
 

NO25mart

Guest
SelenIT
Ура! Спасибо! "Новость успешно доавлена в базу данных!"
Первая страница, в которой я ввожу новость, она "добавлятеся в базу данных" - news_add.php
код её ты писал полностью.
А вот со страницей вывода... праивльно ли я сделал?
<html>
<head><title>Добавление новостей</title></head>
<body>
<?php
// соединимся с базой
mysql_connect('localhost','root',''); // при необх. замени на свои хост, логин и пароль к базе
// выбираем свою базу
mysql_select_db('имя_базы'); // здесь должно быть имя БД с новостями
// а дальше код из статьи после слов "Теперь выводим ленту:"
$request = "SELECT ntext, ntitle, ndate FROM news ORDER BY ndate DESC";
$result = mysql_query($request);
if (!mysql_error()) {

// Цикл, вынимающий строку как массив с числовым индексом
while ($row = mysql_fetch_row($result)) {
print("<tr><td><h3>". $row[1]. "</h3>");
print("<font size=-1>". $row[2]. "</font>");
print("<p align=justify>". $row[0]. "</p>");
};
}

/* в случае ошибки БД программа выводит сообщение сервера (конечно, можно обойтись
без такой проверки, но тогда пользователю посыплются ругательства PHP). */

else {
print ("Ошибка БД в запросе "$request". MySQL пишет ". mysql_error());
};

/* если дальше предусмотрено выполнение каких-либо операций, лучше всего сразу
очистить память */
mysql_free_result ($result);

?>

</body>
</html>

Мне кажется что нет... Вообще как должен выглядить "вывод страницы", объясни пожалуйста.
 

SelenIT

IT-лунатик :)
Приблизительно так и должен - коннект к базе, запрос на выборку и в цикле формирование нужного HTML с подстановкой результатов выборки. Другое дело, что данный конкретный код генерит кривой HTML - тег <table> отсутствует, а <tr><td> на каждом шаге цикла открываются, но не закрываются. Вряд ли браузер сможет правильно нарисовать такую "таблицу".

Для начала можно попробовать выводить новости без таблиц - просто строкой.
 

NO25mart

Guest
SelenIT
Спасибо! И ещё такой вопрос, то что в html-коде есть имя моей базы, логина, пароля, этим никто ен сможет мне навредить?
 

SelenIT

IT-лунатик :)
NO25mart
А что они делают в html-коде? Там их конечно быть не должно, они должны быть только в php-исходнике, внутри <? ?>.
 
Сверху