Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

вопросы по php

Автор do50, сентября 15, 2011, 21:04

0 Пользователи и 1 гость просматривают эту тему.

fujhi

Цитата: do50 от июля 12, 2012, 13:23
что то у меня не получается
Вы всё правильно сделали, но ещё надо вот это (в файле contentr.php):
Цитата: do50 от июля 11, 2012, 10:50
<?php $art = GetDataArt($_GET['art_id']); ?>
    <span id="headline"><?=$art[0]?></span>
    <span id="text"><?=$art[1]?></span>

Замените на вот это:
Цитата: fujhi от июля 12, 2012, 08:58
<?php $art = GetDataArt(isset($_GET['art_id']) ? $_GET['art_id'] : 1); ?>
<span id="headline"><?=$art[0]?></span>
<span id="text"><?=$art[1]?></span>


Иными словами, было: «вызвать GetDataArt со значением $_GET['art_id']», стало: «вызвать GetDataArt со значением $_GET['art_id'], если значение $_GET['art_id'] установлено, иначе со значением 1».
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, [email]dmymd@yandex.ru[/email]. Всем пока!

do50

Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

do50

Цитата: fujhi от июля 12, 2012, 08:58
Вам может понадобиться в будущем вносить изменения в структуру ссылок? Например, можно сделать вместо //nova.gaelige.ru/index.php?art_id=3 ссылки вида //nova.gaelige.ru/art-3.html (это очень легко делается с помощью mod_rewrite; если надо, могу рассказать как) или вообще вида //nova.gaelige.ru/ailtireacht.html (это чуть сложнее, тут надо в базу добавлять новое поле, но всё равно достаточно легко).
вот эти моменты очень интересны!
Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

fujhi

Цитата: do50 от июля 12, 2012, 14:57
Цитата: fujhi от июля 12, 2012, 08:58
Вам может понадобиться в будущем вносить изменения в структуру ссылок? Например, можно сделать вместо //nova.gaelige.ru/index.php?art_id=3 ссылки вида //nova.gaelige.ru/art-3.html (это очень легко делается с помощью mod_rewrite; если надо, могу рассказать как) или вообще вида //nova.gaelige.ru/ailtireacht.html (это чуть сложнее, тут надо в базу добавлять новое поле, но всё равно достаточно легко).
вот эти моменты очень интересны!
Если вкратце, сервер может «переписывать» запросы по определённым правилам.
Spoiler: Пример ⇓⇓⇓
В разных серверах правила переписывания задаются по-разному. Обычно все используют сервер Apache. Я дальше буду описывать работу именно с ним. Если у Вас какой-то другой сервер, например, MS IIS, там правила переписывания надо задавать не так (хотя это тоже возможно — почти во всех серверах есть такая опция).

В Apache должен быть установлен модуль mod_rewrite и должна быть включена поддержка настроек в файле .htaccess. Это зависит только он настроек хостинга, но почти на всех хостингах оно включено.

Если на Вашем сервере уже есть файл .htaccess, скопируйте его к себе на компьютер и редактируйте. Если нет — создайте. В «Проводнике» Windows могут быть проблемы с созданием файлов, которые начинаются с точки; используйте Total Commander или командную строку.

В этом файле обязательны 3 строки:
RewriteBase /
(Если вы хотите переписывать внутри только какой-то папки, например, //nova.gaelige.ru/slon/..., то поместите файл .htaccess в эту папку и замените / на /slon/)
RewriteBase должна встречаться только один раз. Если вы редактируете уже готовый файл .htaccess, убедитесь, что там уже нет RewriteBase.

Дальше, нужна ещё одна строка:
RewriteEngine On
Эта строка означает, что правила переписывания на сервере включены. Эта строка тоже должна встречаться только один раз: если вы редактируете уже готовый .htaccess, убедитесь, что там уже нет RewriteEngine. Если там встечается RewriteEngine Off, замените его на On.

После этого идут правила замен: RewriteRule. Пишутся они так:
RewriteRule   что_заменять   чем_заменять

Что_заменять — это регулярное выражение. В что_заменять может использоваться подстрока из что_заменять с помощью $N, где N — номер подстроки
Spoiler: Вкратце про регулярные выражения ⇓⇓⇓

Чтобы заменять art-333.html на index.php?art_id=333, напишите такое правило:
RewriteRule   ^art-([0-9]+).html$   index.php?art_id=$1


Потом, когда вы сделаете, что ссылки art-333.html работают, можно будет переписать get_item_link, чтобы он возвращал ссылки в новом формате.
Spoiler: Вот так ⇓⇓⇓

Названия типа blablabla.html сделать сложнее. Надо переписывать blablabla.html в index.php?art_name=blablabla, а затем в php-файле получать номер статьи по URL-у. Но где вообще взять соотношения blablabla<->номер? Надо добавлять новое поле в базу данных. Короче, сначала разберитесь со ссылками вида art-2324.html, а потом могу объяснить, как сделать буквенные.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, [email]dmymd@yandex.ru[/email]. Всем пока!

do50

Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

fujhi

Кстати! Я только что заметил, что у Вас не Apache, у Вас Litespeed Web Server.
Он тоже умеет переписывать адреса (http://www.litespeedtech.com/docs/webserver/config/rewrite/),  по идее он совместим с Apache, но что-то может отличаться.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, [email]dmymd@yandex.ru[/email]. Всем пока!

fujhi

Я тут почитал, что «LiteSpeed Web Server can operate with an Apache configuration file. Most commonly used Apache features have been implemented», так что всё, что написано Выше, будет верно и у Вас. :yes:
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, [email]dmymd@yandex.ru[/email]. Всем пока!

do50

Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

do50

с ЧПУ решил разобраться попозже (хочется всё таки понять как следует), а сейчас такой вопрос:
на странице Книги -> Ирландский будут размещены мини анонсы, литературы набралось много, как сделать так, что бы на одной странице размещалось 7 анонсов, на следующей ещё 7 и так далее (все они относятся к Книги -> Ирландский). и ещё, у каждого мини анонса будет ссылка на страницу с полным описанием книги и ссылкой на скачивание, как лучше это сделать?
Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

fujhi

Создайте дополнительную таблицу. Сделайте там какие-нибудь поля: как минимум поле id (его желательно делать для всех вещей), title и description. Можно ещё поле, скажем, с именем файла картинки обложки (текст); а можно и саму картинку в базу данных запихнуть (тогда используйте тип BLOB). Можно добавить поле с датой добавления книги на сайт, если захотите показывать самое новое сверху.

Кроме того, надо различать, где книги будут для ирландского, где — для шотландского... Поэтому надо добавить колонку art_id. Чтобы у книг по ирландскому art_id было равно 17, у книг по шотландскому — 18, у книг по мэнскому — 19.

Самым простым вариантом было бы назвать таблицу books — но в будущем вы, возможно, захотите использовать тот же код для каких-то других вещей, не только для книг (например, на странице «Архитектура» может быть список красивых архитектурных памятников, на странице шрифты — обзор основных гарнитур и т.д). Так что предлагаю назвать таблицу items, entries или как-нибудь так. Думаю, так логичнее.

Когда создадите таблицу, покажите её схему, тогда можно будет двигаться дальше.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, [email]dmymd@yandex.ru[/email]. Всем пока!

do50

вот, что получилось:

Структура таблицы `items`
--

CREATE TABLE IF NOT EXISTS `items` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(250) NOT NULL,
  `description` text NOT NULL,
  `context` longtext NOT NULL,
  `art_id` varchar(250) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

fujhi

Цитата: do50 от июля 13, 2012, 17:00
  `art_id` varchar(250) NOT NULL,
Сделайте int NOT NULL. Так как в таблице articles у вас id — это число, то и тут нужно число: art_id может содержать только те поля, которые содержит id в articles. Не имеет смысла создавать книги, которые не принадлежат какому-то разделу (если имеет, можно тогда сделать int NULL; в любом случае, строка, да ещё и на 250 символов — это ужасная трата памяти).

Сейчас ещё напишу.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, [email]dmymd@yandex.ru[/email]. Всем пока!

do50

Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

fujhi


Знате, что мне у Вас Я, правда, не понял, что такое context, ну да не важно. ;D

Spoiler: Я тестировал на таких данных ⇓⇓⇓

Дальше. Нужно определять, какие элементы показывать: 1—7, 8—14, 15—21... Есть два способа: указывать в запросе номер страницы (то есть 1—7 — это 1, 8—14 — это 2) или номер первого элемента (то есть 1—7 — это 1, 8—14 — это 8, и т.д.). В принципе, разницы никакой. Я предлагаю указывать номер страницы.

Назовём переменную page. Тогда мы будем к ней обращаться $_GET['page'], а адрес страницы примет вид index.php?art_id=XXX&page=YYY. Если page не указан, считаем, что пользователю нужна первая страница.


Для начала сделаем получение всех элементов с данной страницы. Функция будет принимать номер статьи, номер страницы (по умолчанию 1) и число сообщений на странице (по умолчанию 7), а возвращать — массив с элементами:

Эта функция возвращает массив. К элементам массива надо обращаться
  • ['id'][/tt],
    • ['title'], [1]['description'], [1]['context'], [2]['id'], [2]['context']...

      Разместите эту функцию в файл с функциями.

      Ещё создадим функцию get_items_count, возвращающую число элементов у страницы (разместите её рядом с первой):

      К статьям можно будет обращаться index.php?art_id=17, а к остальным страницам статьи — index.php?art_id=17&page=2 и так далее.

      Надо отразить это в функции get_item_link. Изменим её так, чтобы она принимала 2 значения — номер статьи и номер страницы с айтемами. Кстати, получается, что она нелогично названа (надо бы get_article_url), но чтобы её переназвать, придётся искать все места в коде, где она используется...

      Итак, изменим её:



      Теперь нужно сделать вывод сообщений в файле, где выводится список событий (contentr.php). После основного кода разместите что-то такое:

      Теперь на каждой странице выводится список элементов, связанных со страницей.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, [email]dmymd@yandex.ru[/email]. Всем пока!

do50

fujhi, спасибо огромное!!! как разберусь, сразу отпишусь
Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

fujhi

Spoiler: Когда доделаете... ⇓⇓⇓
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, [email]dmymd@yandex.ru[/email]. Всем пока!

do50

fujhi, а куда в таблице items нужно вставить код страницы, которую нужно вывести?
Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

do50

что то я не так сделал, после изменений получил:
Parse error: syntax error, unexpected $end in /home/p17717/www/nova.gaeilge.ru/func.php on line 118
Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

fujhi

Цитата: do50 от июля 20, 2012, 19:26
fujhi, а куда в таблице items нужно вставить код страницы, которую нужно вывести?
Всё наоборот: страницы выводят итемы, а не итемы страницы.

Код страницы, к которой принадлежит item, я предлагаю писать в поле art_id из таблицы items. Но вообще-то это Ваша база, как сделаете, так и будет.

Цитировать
Parse error: syntax error, unexpected $end in /home/p17717/www/nova.gaeilge.ru/func.php on line 118
В func.php не закрыт какой-то код: скорее всего не хватает } (либо endif;, либо endforeach;, либо чего-то подобного).
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, [email]dmymd@yandex.ru[/email]. Всем пока!

do50

запутался  :'(
т.е. в art_id сохраняем html код страницы 1 с книгами 1 -7?
Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

do50

func.php исправил, сообщений об ошибках нет....
Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

fujhi

Цитата: do50 от июля 20, 2012, 20:19
запутался  :'(
т.е. в art_id сохраняем html код страницы 1 с книгами 1 -7?
А! Нет, в art_id сохраняем 17, 18, 19... В зависимости от того, о каком языке книга.

Сам код описаний, наверное, в context... Или в description. Вы же, создавая эти поля, представляли, для чего они. Если честно, я не знаю, зачем нужны 2 этих поля.

Вот какой я написал код вывода одного элемента:
  <?php foreach($items as $item): ?>
    <div class="item">
      <h4><?=$item['title']?></h4>
      <p class='description'><?=$item['description']?></p>
      <?=$item['context']?>
    </div>

Если что-то выводитяся не так, правьте это место.
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, [email]dmymd@yandex.ru[/email]. Всем пока!

do50

context и планировался для этого, страничка вывелась, пока всё нормально, огромное спасибо!!!
Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

do50

книги с первой по седьмую разместил в context id 1, следующие в context id 2, но они все остались на одной страницы, опять я что то напутал?
Проблемы интеграции России в ад должны волновать ад, а не Россию

«Россия управляется непосредственно Господом Богом. Иначе невозможно представить, как это государство до сих пор существует», Генерал-фельдмаршал Х. А. Миних
«Россией управлять не сложно, но совершенно бесполезно», Александр II

fujhi

Цитата: do50 от июля 22, 2012, 11:43
книги с первой по седьмую разместил в context id 1, следующие в context id 2, но они все остались на одной страницы, опять я что то напутал?
Ничего не понял.  :(

По идее они сами должны разбиваться на страницы по 7, без дополнительного указания на номер страницы. :???

А можете дать кусок кода, ответственный за вывод, как он теперь выглядит?
Этот аккаунт официально заброшен. Связаться со мной можно по всё тому же адресу, [email]dmymd@yandex.ru[/email]. Всем пока!

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр