Forum Webscript.Ru

Программирование => PHP => Тема начата: 3D-Dragon от 27 Ноября 2001, 19:47:09

Название: Помогите разобраться с вложениями в PHP
Отправлено: 3D-Dragon от 27 Ноября 2001, 19:47:09
Я начинающий в PHP помогите разобраться.

Я вставляю новости на сайте в зависимости от вызываемой даты (1810 - это например 18 октября)
в url путем вложения в index.php и добавления к ссылке $news=1810

$url = "";
if ($link == 1110) { $url = "news/1110.html"; }
if ($link == 1510) { $url = "news/1510.html"; }
if ($link == 1710) { $url = "news/1710.html"; }
if ($link == 1810) { $url = "news/1810.html"; }
# и т.д.
if ($url == "") { $url = "error.phtml"; }
INCLUDE ($url);

Этот список постоянно растет и очень неудобно его постоянно пополнять и редактировать.

Вопрос:
Как можно (если можно) присвоить дате (1810) переменную и вызывать eё из url типа
http://127.0.0.1/index.php?news=(переменная)
а потом эта переменная будет обрабатываться скриптом и выдавать нужную ссылку ?

Или как по другому организовать все это.
Хочу все это сделать на MySQL, но как у начинающего ничего не получается :(
Название: Помогите разобраться с вложениями в PHP
Отправлено: VaV от 27 Ноября 2001, 19:56:26
Цитировать
if ($link == 1110) { $url = "news/1110.html"; }
if ($link == 1510) { $url = "news/1510.html"; }
if ($link == 1710) { $url = "news/1710.html"; }
if ($link == 1810) { $url = "news/1810.html"; }


можно заменить без mysql
для вывода всех новостей по возрастанию

for ($i=1;$i<=12;$i++) {
 for ($j=1;$j<=31;$j++) {
 {
  $link=$i.$j;
  $url="news/".$link.".html";
  if (@fopen ($url, "r") { INCLUDE ($url);}
 }
}


могут быть неточности с fopen
звиняйте ляпал быстро по теории
Название: Помогите разобраться с вложениями в PHP
Отправлено: Stek от 27 Ноября 2001, 19:57:28
Если правильно понял

$link=trim($link);

if ($link) {
 $url="news/".$link.".html";
}
else {
 $url = "error.phtml";
}
INCLUDE ($url);
Название: Помогите разобраться с вложениями в PHP
Отправлено: Britva от 27 Ноября 2001, 20:02:03
в MySQL усе просто

create table news(
id int(11) NOT NULL auto_increment,
date datetime,
body text,
PRIMARY KEY  (id),
UNIQUE KEY id (id)
)

а потом с помощью php выводить:

$result = mysql_query("select * from news order by date desc limit 5");
while($row = mysql_fetch_array($result)) {
  print $row["date"]." - ".$row["body"]."
\\n";
}

order by date desc - сортировать по дате,
limit 5 выводить последние пять новостей.

а добавлять -
mysql_query("insert into news values(\'\', \'2001-11-27 11:11:11\', \'моя новость номер 1\')");

можно просто поле date а не datetime, тогда будет просто \'2001-11-27\'
Название: Помогите разобраться с вложениями в PHP
Отправлено: 3D-Dragon от 27 Ноября 2001, 20:31:21
Спасибо, не ожидал так быстро ответа и столько вариантов !!!
Уже запутался :(

Britva
Я все таки хочу это сделать на MySQL.

Дело в том что новости выходят не всегда ежедневно и выводить их нужно по ссылкам из календаря.
Если "не влом" глянь структуру на http://all-xp.net.ru
Название: Помогите разобраться с вложениями в PHP
Отправлено: Britva от 27 Ноября 2001, 20:38:39
Можно закинуть все новости в БД, а при отрисовывании календаря проверять, существует ли новость в таблице.

Вот посмотри я для теста выложил - http://ms.eugeny.com/news.php
Есть хороший класс - DateCalc для всего этого
Название: Помогите разобраться с вложениями в PHP
Отправлено: 3D-Dragon от 27 Ноября 2001, 21:24:01
Britva
Мне стыдно за незнания, как новости запихивать в базу и как быть со старыми новостями ?
И где взять этот DateCalc ?
Название: Помогите разобраться с вложениями в PHP
Отправлено: Britva от 27 Ноября 2001, 21:43:21
почитай для начала статьи на
http://webscript.ru
http://detail.phpclub.net

Цитировать
и как быть со старыми новостями ?

конвертер написать :)

Цитировать
И где взять этот DateCalc ?

пиши, я могу выслать
Название: Помогите разобраться с вложениями в PHP
Отправлено: 3D-Dragon от 27 Ноября 2001, 21:51:59
Прочитал то я практически все, только толку от этого никакого :(
Я так и не нашел нормального примера по MySQL

Везде написано типа как ты написал

create table news(
id int(11) NOT NULL auto_increment,
date datetime,
body text,
PRIMARY KEY (id),
UNIQUE KEY id (id)
)

Мне понятно, что создается таблица news c полями id, date, body.
Но я никак не пойму для чего эти null, not null, primary key :(
И что с этой таблицей делать дальше.
Кстати полно статей как выводить данные, а как вводить не встречал.
Название: Помогите разобраться с вложениями в PHP
Отправлено: Britva от 27 Ноября 2001, 21:55:53
вообщем то просто можно перевести с англ. на русский
primary key - первичный ключ, unique key - уникальный
null - ноль
not null не ноль, т.е. поле не может быть 0, или пусто.

купи книжечку http://books.ru/shop/books/9673
Название: Помогите разобраться с вложениями в PHP
Отправлено: Макс от 27 Ноября 2001, 22:23:21
ИМХО если не планируется поиск по новостям, то лучше сделать таблицу вроде такого
CREATE TABLE news(
id int not null auto_increment,
date date,
primary key(id));

А тексты новостей хранить в отдельной папке в файлах с именами .txt и при выводе новостей вставлять их с помощью virtual().
Такая таблица имеет фиксированную длинну а значит быстрее работает.

А при отрисовке календаря делать примерно такое:
SELECT  id,DAYOFMONTH(date) AS day FROM news WHERE YEAR(date)=$year and MONTH(date)=$month" ORDER BY date ASC;

Получишь id новостей и day - числа указанного месяца ($month) указанного года ($year), на которые есть новость в БД. Используя эти даты рисуешь календарь
Название: Помогите разобраться с вложениями в PHP
Отправлено: 3D-Dragon от 04 Декабря 2001, 02:00:23
Britva

Я во всем разобрался и уже написал скрипт.

Поделись DataCalc, пожалуйста.
Название: Помогите разобраться с вложениями в PHP
Отправлено: Britva от 04 Декабря 2001, 19:50:39
Пиши, я тебе вышлю (mail at eugeny.com)
а наз-ся он DateCalc а не DataCalc :)
Название: Помогите разобраться с вложениями в PHP
Отправлено: 3D-Dragon от 05 Декабря 2001, 14:32:15
М-да, спасибо за DateCalc,
но я не пойму как мне его прикрутить к своим нуждам :(
Название: Помогите разобраться с вложениями в PHP
Отправлено: 3D-Dragon от 05 Декабря 2001, 16:52:10
Britva,

Как при отрисовывании календаря проверять, существует ли новость в таблице ?
И как это прикрутить к DateCalk и вывести этот календарь ?
Название: Помогите разобраться с вложениями в PHP
Отправлено: Britva от 05 Декабря 2001, 17:34:56
3D-Dragon
Выполняешь запрос к базе для соответствующего дня в цикле
в DateCalc есть просто много полезных функций для отрисовки самого календаря