Лингвофорум

Общий раздел => Наука и техника => Компьютеры => Тема начата: do50 от сентября 15, 2011, 21:04

Название: вопросы по php
Отправлено: do50 от сентября 15, 2011, 21:04
люди добрые!
есть ли знающие сей чудный язык форумчане?
Название: вопросы по php
Отправлено: Bhudh от сентября 15, 2011, 21:05
RawonaM.
Название: вопросы по php
Отправлено: do50 от сентября 15, 2011, 21:08
а он консультирует?
Название: вопросы по php
Отправлено: arseniiv от сентября 15, 2011, 21:09
Offtop
ЛФ — удивительное место.
Название: вопросы по php
Отправлено: RawonaM от сентября 15, 2011, 21:10
Нельзя сказать, что я его как-то слишком хорошо знаю. Спрашивайте, по возможности буду отвечать, когда время и знания позволять будут.
Название: вопросы по php
Отправлено: Demetrius от сентября 15, 2011, 21:14
Есть. Drundia, ЕМНИП.
Название: вопросы по php
Отправлено: do50 от сентября 15, 2011, 21:15
делаю онлайн словарик.
хочу под формой ввода поставить пять букв (á é í ó ú), нажимаешь на букву - она появляется в форме ввода (типа вирт. клавы)

может скриптик у кого завалялся...
Название: вопросы по php
Отправлено: RawonaM от сентября 15, 2011, 21:20
Это вам не PHP нужен, а JavaScript. Делаете кнопки или ссылки с этим текстом, по нажатию на них JS функция вставляет нужный текст в форму ввода.
Название: вопросы по php
Отправлено: Bhudh от сентября 15, 2011, 21:27
Цитата: do50 от хочу под формой ввода поставить пять букв (á é í ó ú), нажимаешь на букву - она появляется в форме ввода (типа вирт. клавы)
Ну Вы, блин, даёте‼
http://www.mediawiki.org/wiki/Extension:CharInsert/ru
Пример реализации от Hellerickʼа: http://wiki.lingvoforum.net/w/MediaWiki:Edittools
Название: вопросы по php
Отправлено: Bhudh от сентября 15, 2011, 21:30
Кстати, RawonaM же сделал такую юзер-настраиваемую штуку в быстром ответе. Кто мешает посмотреть код?
Название: вопросы по php
Отправлено: do50 от сентября 15, 2011, 21:32
дай вам Бог здоровья, добрые люди!
Название: вопросы по php
Отправлено: do50 от сентября 15, 2011, 21:33
Цитата: Bhudh от сентября 15, 2011, 21:30
Кто мешает посмотреть код?
воровать?  8-)
Название: вопросы по php
Отправлено: Demetrius от сентября 15, 2011, 21:33
Цитата: do50 от сентября 15, 2011, 21:15
делаю онлайн словарик.
хочу под формой ввода поставить пять букв (á é í ó ú), нажимаешь на букву - она появляется в форме ввода (типа вирт. клавы)
Это надо не на PHP делать, а на JavaScript. PHP—серверный язык. То есть выполняется на сервере, выдает пользователю результат и никак не взаимодействует на то, что после этого происходит, до того, как к нему снова обратяться.

На ЖабаСкрипте это делается примерно так:
<input type="text" id="SLON" />
<a href="#" onclick="var e = document.getElementById('SLON'); e.value += 'буква'; e.focus(); return false">буква</a>

Сама ссылка ведет на эту же страницу (#), а весь код записан в части onclick. Первая команда присваивает переменной e объект с ID = SLON. Вторая команда добавляет к тексту в этом объекте одну букву. Так как при щелчке по ссылке управление переходит на ссылку, и вводить текст снова не дает, e.focus() возвращает фокус ввода на объект e. return false сообщает, что основное действие ссылка (переход по ссылке) выполнять не должна.

Блин, думаю, пока я это писал с телефона, уже все ответили.
Название: вопросы по php
Отправлено: Demetrius от сентября 15, 2011, 21:38
Цитата: do50 от сентября 15, 2011, 21:33
Цитата: Bhudh от сентября 15, 2011, 21:30
Кто мешает посмотреть код?
воровать?  8-)
Ну так не обязательно воровать, т.е. дословно копировать. Можно посмотреть, запомнить принципы реализации и написать то же самое, но по-другому. Это ненаказуемо, AFAIK (да и в любом случае недоказуемо).

И вообще, IMO понятие &laquo;воровство&raquo; в сфере интеллектуальной собственности несет очень странный смысл.

А в плане ЖабаСкрипта и подавно. Я, в отличие даже от случаев с Windows, ни на какие условия о тех JavaScript'ах, которые мне посылают, не соглашался (ну, по крайней мере, относительно большинства из них).
Название: вопросы по php
Отправлено: Bhudh от сентября 15, 2011, 21:39
Цитата: do50 от воровать?  8-)
Это не воровство, а использование уже в дупу стандартного решения.
Название: вопросы по php
Отправлено: RawonaM от сентября 15, 2011, 21:45
Цитата: Demetrius от сентября 15, 2011, 21:38
И вообще, IMO понятие «воровство» в сфере интеллектуальной собственности несет очень странный смысл.
Несет вполне нормальный смысл, но в данном случае упомянуто не в тему.

Код открыт, подсмотреть его и сделать точно так же — это не воровство, а обмен опытом.
Название: вопросы по php
Отправлено: do50 от сентября 15, 2011, 21:50
чё вы сегодня все такие серьёзные? код открыт, значит можно пользоваться, я пошутил про воровство
Название: вопросы по php
Отправлено: RawonaM от сентября 15, 2011, 21:52
Я серьезный потому что у меня сегодня приступ зависти помноженный на кучу материала к экзамену, который на носу.
Название: вопросы по php
Отправлено: Bhudh от сентября 15, 2011, 21:53
Запятая лишняя.
Название: вопросы по php
Отправлено: RawonaM от сентября 15, 2011, 21:54
Точно? Вроде как еще одной не хватает.
Название: вопросы по php
Отправлено: do50 от сентября 15, 2011, 21:55
Цитата: RawonaM от сентября 15, 2011, 21:52
приступ зависти
чему завидуем?
Название: вопросы по php
Отправлено: Bhudh от сентября 15, 2011, 21:57
Цитата: RawonaM от сентября 15, 2011, 21:54Точно? Вроде как еще одной не хватает.
Поскольку отсутствующих запятых больше чем присутствующих делается вывод что имелась цель опустить запятые полностью. Ergo одна лишняя.
Название: вопросы по php
Отправлено: do50 от сентября 15, 2011, 23:47
 народ, я теперь с кодировками запутался  :'(
Название: вопросы по php
Отправлено: Demetrius от сентября 16, 2011, 00:01
А в чем проблема, подробнее?

Кодировки, собственно, прописываются в двух местах: на самой странице и в заголовках, посылаемых сервером. Если они не совпадают, браузер сам решит, но у меня серверные считались важнее.

На странице кодировки указываются в разделе head, тегом <meta http-equiv="Content-Type" content="text/html; Charset=UTF-8"> (вместо UTF-8 нужную подставить).

Заголовки сервера можно менять по-разному. Лучше всего&mdash;меняя настройки сервера (на серверах Apache это обычно можно сделать с помощью файлов .htaccess). Если сервер настроить не представляется возможным, можно в самом начале файла (до вывода какого-либо текста, даже пробелов) написать такой код:
<?php
header('Content-Type: text/html; Charset=UTF-8');
?>
Название: вопросы по php
Отправлено: do50 от сентября 16, 2011, 00:12
utf-8 не отображает кириллицу, а ansi не отображает буквы с акутами...
ничего не пойму. знаю, что в настройках БД стоит utf-8
Название: вопросы по php
Отправлено: Demetrius от сентября 16, 2011, 00:25
Цитата: do50 от сентября 16, 2011, 00:12
utf-8 не отображает кириллицу, а ansi не отображает буквы с акутами...
ничего не пойму. знаю, что в настройках БД стоит utf-8
UTF-8 отображает кириллицу. Просто, скорее всего, Ваши файлы не в кодировку UTF-8, а в ANSI. Перекодируйте их каким-нибудь редактором (самый дешевый и сердитый вариант&mdash;AkelPad).

Но при перекодировке выберите UTF-8 без BOM. Поэтому блокнот не подходит: он не умеет записывать файлы без BOM.
Название: вопросы по php
Отправлено: Python от сентября 16, 2011, 00:28
Подробнее? Каким образом система получает текст, и на какой стадии в нем буквы превращаются в кракозяблики?
Название: вопросы по php
Отправлено: do50 от сентября 16, 2011, 00:36
Цитата: Demetrius от сентября 16, 2011, 00:25
Цитата: do50 от сентября 16, 2011, 00:12
utf-8 не отображает кириллицу, а ansi не отображает буквы с акутами...
ничего не пойму. знаю, что в настройках БД стоит utf-8
UTF-8 отображает кириллицу. Просто, скорее всего, Ваши файлы не в кодировку UTF-8, а в ANSI. Перекодируйте их каким-нибудь редактором (самый дешевый и сердитый вариант&mdash;AkelPad).

Но при перекодировке выберите UTF-8 без BOM. Поэтому блокнот не подходит: он не умеет записывать файлы без BOM.

я пользуюсь pspad, им и перекодировал в UTF-8 из ANSI, из-за того, что последний не знает акутов (подла), так вот, акуты появились, а вместо кириллицы ромбики с вопросами...
Название: вопросы по php
Отправлено: Python от сентября 16, 2011, 00:41
Ромбики с вопросами обочно появляются, если текст в анси пытаются отобразить как утф-8. Т.е., редактор, скорее всего, перекодировкать не смог или не захотел, а в самой странице при этом указана кодировка утф-8.
Название: вопросы по php
Отправлено: Python от сентября 16, 2011, 00:46
И да, там было что-то про БД? Текст с ромбиками — это текст самой страницы, или текст, хранимый в БД?
Название: вопросы по php
Отправлено: Demetrius от сентября 16, 2011, 00:49
Offtop

Python, у Вас какой-то очень хороший форк libastral.
Название: вопросы по php
Отправлено: do50 от сентября 16, 2011, 00:51
разобрался:
сделал файл .htaccess с текстом AddDefaultCharset UTF-8 и всё заработало

всем большое спасибо за помощь!!! :UU:
Название: вопросы по php
Отправлено: Python от сентября 16, 2011, 01:15
Цитата: Demetrius от сентября 16, 2011, 00:49
Offtop

Python, у Вас какой-то очень хороший форк libastral.
Просто немного разбираюсь в кракозябликах :)
«Python, � ��� �����-�� ����� ������� ���� libastral.» — windows-1251, который раскодировали как utf-8
«Python, Сѓ Р'ас какой-С,Рѕ очень С...ороший С,,РѕСЂРє libastral.» — то же самое, но наоборот.
«Python, С бЮЯ ЙЮЙНИ-РН НВЕМЭ УНПНЬХИ ТНПЙ libastral.» — windows-1251, раскодированный как koi8-r
«Python, ó Âàñ êàêîé-òî î÷åíü õîðîøèé ôîðê libastral.» — windows-1251 как windows-1252 или ISO-8859-1 (дефолтная кодировка)

«Python, � ��� �����-�� ����� ������� ���� libastral.» — хм., странно. windows-1251, прочитанный как US-ASCII. Впрочем, логично, если это тру-ascii с чистым пространством после 127-го символьного кода.
«Python, �� ������ ����������-���� ���������� �������������� �������� libastral.» — из utf-8 в us-ascii. Ромбиков в два раза больше.

Странно, что дефолтной кодировкй оказался us-ascii — обычно там используется что-то с дополнительными кодами для западноевропейских языков.
Название: вопросы по php
Отправлено: Python от сентября 16, 2011, 01:34
Р.Ѕ. Приведенные примеры перекодировки я делал с помощью небольшой джава-программы. Джава понимает us-ascii как ортодоксальный вариант ascii без ничего лишнего. Однако, Опера, если в ней указать эту кодировку, воспринимают ее как западноевропейскую с дополнительными символами.
Название: вопросы по php
Отправлено: do50 от сентября 16, 2011, 01:34
ещё вопрос образовался, как я уже говорил, делаю словарь, как заставить (скорее всего БД, наверное) воспринимать á = a ?
Название: вопросы по php
Отправлено: Demetrius от сентября 16, 2011, 01:55
Цитата: do50 от сентября 16, 2011, 01:34
ещё вопрос образовался, как я уже говорил, делаю словарь, как заставить (скорее всего БД, наверное) воспринимать á = a ?
Сравнивать не сами строки, а переделанный вариант строк, в котором все &aacute; заменены на a.

В MySQL может сработать примерно такой SQL-запрос:
SELECT *
FROM tablename
WHERE REPLACE(fieldname, '&aacute;', 'a') = REPLACE('входная строка', '&aacute;', 'a')
Название: вопросы по php
Отправлено: do50 от сентября 16, 2011, 09:17
Цитата: Demetrius от сентября 16, 2011, 01:55
В MySQL может сработать примерно такой SQL-запрос:
SELECT *
FROM tablename
WHERE REPLACE(fieldname, 'á', 'a') = REPLACE('входная строка', 'á', 'a')

и куда эту красоту записать?
Название: вопросы по php
Отправлено: Demetrius от сентября 16, 2011, 09:33
Цитата: do50 от сентября 16, 2011, 09:17
и куда эту красоту записать?
А как вы запрос к базе данных делаете?

Вообще-то это был запрос на языке SQL. Если вы используете что-то другое, то надо делать как-то по другому. Базы данных разные бывают.
Название: вопросы по php
Отправлено: do50 от сентября 16, 2011, 10:00
есть файл config.php, в котором прописаны параметры подключения к БД, наверное с ним надо пошаманить?
Название: вопросы по php
Отправлено: arseniiv от сентября 16, 2011, 19:05
Какая у вас вообще структура?
Название: вопросы по php
Отправлено: Bhudh от сентября 16, 2011, 21:01
Цитата: do50 от есть файл config.php, в котором прописаны параметры подключения к БД, наверное с ним надо пошаманить?
Параметры тут ни при чём, запрос пишется в коде.
Название: вопросы по php
Отправлено: Python от сентября 16, 2011, 22:44
config.php — разве не обычный файл с пхп-кодом, пусть даже и с определенной ролью в проекте, с которым работает автор темы?
Название: вопросы по php
Отправлено: Bhudh от сентября 16, 2011, 22:47
Первый раз слышу, чтобы в конфигах сикьюэл-запросы писали... :what:
Название: вопросы по php
Отправлено: Python от сентября 17, 2011, 00:41
Ну так этот конфиг представляет собой простой пхп-файл, который тупо инклудится в индекс.пхп или еще что-нибудь. Технически там может быть что-угодно.
Название: вопросы по php
Отправлено: Bhudh от сентября 17, 2011, 06:07
Технически-то понятно. Но смысл?‥
Название: вопросы по php
Отправлено: jvarg от сентября 17, 2011, 07:19
Цитата: do50 от сентября 16, 2011, 10:00
есть файл config.php, в котором прописаны параметры подключения к БД, наверное с ним надо пошаманить?

Наверное, вы имели в виду "php.ini"?
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 10:17
Цитата: jvarg от сентября 17, 2011, 07:19
Наверное, вы имели в виду "php.ini"?
такого нет, а как с его помощью можно это сделать?

ввод символов в форму реализовал так:
Цитировать
                 <INPUT TYPE=button VALUE="á" onClick="document.getword.elements[0].value='á';">
                 <INPUT TYPE=button VALUE="é" onClick="document.getword.elements[0].value='é';">
                 <INPUT TYPE=button VALUE="í" onClick="document.getword.elements[0].value='í';">
                 <INPUT TYPE=button VALUE="ó" onClick="document.getword.elements[0].value='ó';">
                 <INPUT TYPE=button VALUE="ú" onClick="document.getword.elements[0].value='ú';">
сейчас столкнулся с такой проблемой, клик на кнопку стирает всё, что было написано в форме до него и вводит соответствующий символ. как это побороть?
Название: вопросы по php
Отправлено: RawonaM от сентября 17, 2011, 10:32
Цитата: do50 от сентября 17, 2011, 10:17
сейчас столкнулся с такой проблемой, клик на кнопку стирает всё, что было написано в форме до него и вводит соответствующий символ. как это побороть?
Вместо document.getword.elements[0].value= пишете document.getword.elements[0].value+=.
Будет добавлять в конец.
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 10:39
Цитата: RawonaM от сентября 17, 2011, 10:32
Вместо document.getword.elements[0].value= пишете document.getword.elements[0].value+=.
Будет добавлять в конец.
урааа! заработало!!!
RawonaM, спасибо! осталось ещё заставить БД думать, что á = a ...
Название: вопросы по php
Отправлено: RawonaM от сентября 17, 2011, 10:49
Цитата: do50 от сентября 17, 2011, 10:39
RawonaM, спасибо! осталось ещё заставить БД думать, что á = a ...
А зачем? Что-то я не понял задачи.
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 10:57
Цитата: RawonaM от сентября 17, 2011, 10:49
А зачем? Что-то я не понял задачи.
в словаре есть поиск по слову и поиск по первой букве, т.е. нажимая на букву выдаётся список слов, начинающихся на эту букву. нажимаем А - выдаёт список:
a
am
anois
áiléar
а должно быть:
a
áiléar
am
anois
буквы с акутом должны быть равны буквам без него
Название: вопросы по php
Отправлено: RawonaM от сентября 17, 2011, 11:06
А, это нужно изменить коллацию таблицы и может еще чего-то на аццент-инсенситиве.
Там вариантов может быть уйма и это вообще может оказаться не так просто. Не любой сервер будет это поддерживать.

Можно пойти несколько окольным путем и пересортировать готовый результат уже в PHP, если там не миллионы строк.
Название: вопросы по php
Отправлено: rlode от сентября 17, 2011, 11:59
Цитата: do50 от сентября 17, 2011, 10:57
Цитата: RawonaM от сентября 17, 2011, 10:49
А зачем? Что-то я не понял задачи.
в словаре есть поиск по слову и поиск по первой букве, т.е. нажимая на букву выдаётся список слов, начинающихся на эту букву. нажимаем А - выдаёт список:
a
am
anois
áiléar
а должно быть:
a
áiléar
am
anois
буквы с акутом должны быть равны буквам без него
тут решений может быть много, RawonaM прав - все зависит от размеров базы. Самое топорное решение - иметь в базе дополнительную колонку, где писать то же слово, но без диакритики и при поиске выбирать строки по ней. Можно попробовать регулярными выражениями...
Название: вопросы по php
Отправлено: rlode от сентября 17, 2011, 12:02
Цитата: do50 от сентября 17, 2011, 10:17
ввод символов в форму реализовал так:
Цитировать
                 <INPUT TYPE=button VALUE="á" onClick="document.getword.elements[0].value='á';">
                 <INPUT TYPE=button VALUE="é" onClick="document.getword.elements[0].value='é';">
                 <INPUT TYPE=button VALUE="í" onClick="document.getword.elements[0].value='í';">
                 <INPUT TYPE=button VALUE="ó" onClick="document.getword.elements[0].value='ó';">
                 <INPUT TYPE=button VALUE="ú" onClick="document.getword.elements[0].value='ú';">
сейчас столкнулся с такой проблемой, клик на кнопку стирает всё, что было написано в форме до него и вводит соответствующий символ. как это побороть?
Можно то же самое на jQuery реализовать. Для такой простой задачи можно на чистом javascript писать, но для более сложных задач удобнее jQuery
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 12:13
Цитата: rlode от сентября 17, 2011, 12:02
Можно то же самое на jQuery реализовать. Для такой простой задачи можно на чистом javascript писать, но для более сложных задач удобнее jQuery
это как?
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 12:19
Цитата: rlode от сентября 17, 2011, 11:59
Самое топорное решение - иметь в базе дополнительную колонку, где писать то же слово, но без диакритики и при поиске выбирать строки по ней.
а как это реализовать практически?
Название: вопросы по php
Отправлено: jvarg от сентября 17, 2011, 12:28
Цитата: do50 от сентября 17, 2011, 10:17
Цитата: jvarg от сентября 17, 2011, 07:19Наверное, вы имели в виду "php.ini"?

такого нет, а как с его помощью можно это сделать?

http://www.avege.ru/russian/php_5/php_04.shtml (http://www.avege.ru/russian/php_5/php_04.shtml)


Цитата: do50 от сентября 17, 2011, 10:39
урааа! заработало!!!
RawonaM, спасибо! осталось ещё заставить БД думать

База данных думать не умеет. Попробуйте сами  :) :)
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 12:39
Цитата: jvarg от сентября 17, 2011, 12:28
База данных думать не умеет. Попробуйте сами
дельный совет, спасибо!
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 12:41
Цитата: jvarg от сентября 17, 2011, 12:28
http://www.avege.ru/russian/php_5/php_04.shtml
а это тут при чём?
Название: вопросы по php
Отправлено: RawonaM от сентября 17, 2011, 12:49
Цитата: do50 от сентября 17, 2011, 12:19
Цитата: rlode от сентября 17, 2011, 11:59Самое топорное решение - иметь в базе дополнительную колонку, где писать то же слово, но без диакритики и при поиске выбирать строки по ней.
а как это реализовать практически?
Создаете еще одно поле в таблице, копируете в нее все слова, изменяете в ней все акцентированные буквы на простые. Затем когда делаете выборку (select) в условии (where) используете новое поле.
Название: вопросы по php
Отправлено: jvarg от сентября 17, 2011, 15:50
Цитата: do50 от сентября 17, 2011, 12:41
Цитата: jvarg от сентября 17, 2011, 12:28
http://www.avege.ru/russian/php_5/php_04.shtml
а это тут при чём?

Это ответ на ваш вопрос. Что такое php.ini, и с чем его едят.
Название: вопросы по php
Отправлено: rlode от сентября 17, 2011, 21:36
Цитата: rlode от сентября 17, 2011, 12:02
Цитата: do50 от сентября 17, 2011, 10:17
ввод символов в форму реализовал так:
Цитировать
                 <INPUT TYPE=button VALUE="á" onClick="document.getword.elements[0].value='á';">
                 <INPUT TYPE=button VALUE="é" onClick="document.getword.elements[0].value='é';">
                 <INPUT TYPE=button VALUE="í" onClick="document.getword.elements[0].value='í';">
                 <INPUT TYPE=button VALUE="ó" onClick="document.getword.elements[0].value='ó';">
                 <INPUT TYPE=button VALUE="ú" onClick="document.getword.elements[0].value='ú';">
сейчас столкнулся с такой проблемой, клик на кнопку стирает всё, что было написано в форме до него и вводит соответствующий символ. как это побороть?
Можно то же самое на jQuery реализовать. Для такой простой задачи можно на чистом javascript писать, но для более сложных задач удобнее jQuery
можете здесь читнуть: http://black-zorro.com/mediawiki/Часть_первая_про_jquery (http://black-zorro.com/mediawiki/%D0%A7%D0%B0%D1%81%D1%82%D1%8C_%D0%BF%D0%B5%D1%80%D0%B2%D0%B0%D1%8F_%D0%BF%D1%80%D0%BE_jquery)
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 22:17
это код того самого словаря, сейчас проблема такая: вводя слово из одной буквы выдаётся весь список слов на эту букву, как сделать, чтобы выводилась только статья соответствующая данной букве и желательно с учётом регистра 

Цитировать
$configfile = "config.php";
require $configfile;
$db = mysql_connect("$host", "$username", "$password");
mysql_select_db("$databasename", $db);
if($word)
{
$getWord=mysql_query("SELECT word,definition FROM mdglossary WHERE word LIKE '%$word%' ORDER BY word", $db);

if($getWordArray=mysql_fetch_array($getWord))
{
echo "Here are the results for $word<br><dl>";
do
{
echo "<br><dt><b>";
printf($getWordArray["word"]);
echo "</b></dt><dd>";
printf($getWordArray["definition"]);
echo "</dd>";
}
while($getWordArray=mysql_fetch_array($getWord));
echo "</dl>";
}
else
{
echo "Sorry there are no matches for $word";
}
}
if($letter)
{
if($letter=="number")
{
$getWord=mysql_query("SELECT word,definition FROM mdglossary WHERE word LIKE '0%' OR word LIKE '1%' OR word LIKE '2%' OR word LIKE '3%' OR word LIKE '4%' OR word LIKE '5%' OR word LIKE '6%' OR word LIKE '7%' OR word LIKE '8%' OR word LIKE '9%' ORDER BY word", $db);
}
else
{
$getWord=mysql_query("SELECT word,definition FROM mdglossary WHERE word LIKE '$letter%' ORDER BY word", $db);
}

if($getWordArray=mysql_fetch_array($getWord))
{
echo "Here are the results for the letter <b>$letter</b><br><dl>";
do
{
echo "<br><dt><b>";
printf($getWordArray["word"]);
echo "</b></dt><dd>";
printf($getWordArray["definition"]);
echo "</dd>";
}
while($getWordArray=mysql_fetch_array($getWord));
echo "</dl>";
}
else
{
echo "Sorry, there are currently no words under <b>$letter</b>";
}
}
if(!$word&&!$letter)
{
/*echo "Welcome to the glossary!<br>";*/
}
if($word||$letter)
{
echo "<HR>";
}
/*echo "You can either type in the word you are looking for in the box below or browse by letter<br><br>";*/
?>

<a href="http://dic.gaeilge.ru/"><img src="http://dic.gaeilge.ru/img/home.png"/></a>

<?php
echo "<br><br><br>";
echo "Поиск<br>";
echo "<form name=\"getword\" action=\"index.php\" method=\"get\"><input name=\"word\" type=\"text\" value=\"\"> <input type=\"submit\" value=\"Cuardaigh\"></form>";
?>

Название: вопросы по php
Отправлено: RawonaM от сентября 17, 2011, 22:26
Цитата: do50 от сентября 17, 2011, 22:17
{
$getWord=mysql_query("SELECT word,definition FROM mdglossary WHERE word LIKE '$letter%' ORDER BY word", $db);
}
Нужно убрать %, тогда только одну букву будет искать. А чтобы было регистрозависимо, то нужно регистрозависимую коллацию установить в базе данных.

П.С. Что же у вас отступов нет совсем, ничего ж непонятно...
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 22:30
Цитата: RawonaM от сентября 17, 2011, 22:26
П.С. Что же у вас отступов нет совсем, ничего ж непонятно...

спасибо!
я только учусь, понадёргал из разных скриптов, что то сам по книжкам писал, так что ещё не научился нормально оформлять...


не помогло!:(
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 22:40
Цитата: RawonaM от сентября 17, 2011, 22:26
регистрозависимую коллацию установить в базе данных.
:o это почти матом :D
Название: вопросы по php
Отправлено: RawonaM от сентября 17, 2011, 22:53
Цитата: do50 от сентября 17, 2011, 22:30
не помогло!:(
Как не помогло?! Значит вероятно вы не получаете $letter. Из кода непонятно, какие переменные в каких случаях приходят. Вставьте в добавок перед строкой "if($word)" следущее:
if ($word && strlen($word)==1)
{
    $letter = $word;
    $word = '';
}
Название: вопросы по php
Отправлено: arseniiv от сентября 17, 2011, 22:54
Offtop
Выражаю скепсис по отношению к успешности того, что получится из этого проекта.
Название: вопросы по php
Отправлено: RawonaM от сентября 17, 2011, 22:55
А, подождите, я не так прочитал что вам надо. Дайте еще раз посмотрю.
Вы хотите чтобы если слово из одной буквы, то выдавало только его, да? А если две буквы вводят? Три? Как вообще у вас задумано?
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 22:56
вот теперь работает!
приогромное спасибо!!!
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 22:59
Цитата: RawonaM от сентября 17, 2011, 22:55
А, подождите, я не так прочитал что вам надо. Дайте еще раз посмотрю.
Вы хотите чтобы если слово из одной буквы, то выдавало только его, да? А если две буквы вводят? Три? Как вообще у вас задумано?
всё правильно вы поняли, и теперь всё работает как надо, слово из одной буквы выводится в отдельной статьёй, а не списком из всех слов начинающихся с этой буквы.

ещё раз спасибо
Название: вопросы по php
Отправлено: do50 от сентября 17, 2011, 23:00
Цитата: arseniiv от сентября 17, 2011, 22:54
Offtop
Выражаю скепсис по отношению к успешности того, что получится из этого проекта.

спасибо за поддержку!
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 15:40
новая напасть, теперь набирая (кнопкой или с клавы) в поиске одну букву с акутом, выдаётся список слов, в которых есть эта буква. как это побороть, сделать так, чтобы выдавалось значение слова á, а не все слова, где эта буква встречается?
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 15:44
Попробуйте тут:
Цитата: RawonaM от сентября 17, 2011, 22:53
if ($word && strlen($word)==1)

strlen заменить на mb_strlen.
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 16:00
не помогло :(
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 16:18
Я так до сих пор и не врубился в ваш код, что там откуда принимается. Попробуйте поубирать проценты в запросах:

Цитата: do50 от сентября 17, 2011, 22:17
$getWord=mysql_query("SELECT word,definition FROM mdglossary WHERE word LIKE '$letter%' ORDER BY word", $db);

Цитата: do50 от сентября 17, 2011, 22:17
$getWord=mysql_query("SELECT word,definition FROM mdglossary WHERE word LIKE '%$word%' ORDER BY word", $db);

Процент означает, что добавляются любые символы. Если %$word% заменить на $word%, то по идее должно выбирать только с таким началом, но у вас там ничего не понятно.
Название: вопросы по php
Отправлено: arseniiv от сентября 19, 2011, 17:03
Хэ. Разые SQL потерял оператор BEGINS? Его там не было, я путаю, да?

Ага, вроде бы не терял, т. е. такого не было.
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 18:58
Цитата: RawonaM от сентября 19, 2011, 16:18
Если %$word% заменить на $word%, то по идее должно выбирать только с таким
началом, но у вас там ничего не понятно.
получилось, но не полностью, теперь выдаёт не весь список слов, где в какой-либо позиции встречается эта буква, а только слова начинающиеся с этой буквы...
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 19:03
Цитата: do50 от сентября 19, 2011, 18:58
Цитата: RawonaM от сентября 19, 2011, 16:18Если %$word% заменить на $word%, то по идее должно выбирать только с таким
началом, но у вас там ничего не понятно.
получилось, но не полностью, теперь выдаёт не весь список слов, где в какой-либо позиции встречается эта буква, а только слова начинающиеся с этой буквы...
Ну следовательно уберите второй процент и оставьте только $word, будет искать точно. Причем это касается всех слов, не только однобуквенных.
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 19:09
да! теперь как надо,
а что слишком мудрёный код получился?
спасибо!!!
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 19:12
Если бы хотя бы отступы были, то можно было бы хотя бы быстро вникнуть, а так ломает :)

Мне только непонятно что мы там выше натворили с буквами, у меня ощущение, что что-то не так. Думаю что сейчас не работает список слов начинающихся на какую-то букву, выдаст слово.
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 19:19
Вот штуку нашел: http://www.decodephp.com/codecleaner/
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 19:21
Запостите последний код со всеми изменениями. Я посмотрю, что там вышло.
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 19:35
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 19:44
Цитата: do50 от сентября 19, 2011, 19:35
   if ($word && strlen($word)==1){
      $letter = $word;
      $word = '';
   }
Это нужно убрать, должно работать без этого.

Цитата: do50 от сентября 19, 2011, 19:35

      $getWord=mysql_query("SELECT word,definition FROM mdglossary WHERE word LIKE '$word$' ORDER BY word", $db);
У вас тут лишний доллар, вы уверены, что с ним работает?!

Цитата: do50 от сентября 19, 2011, 19:35

         $getWord=mysql_query("SELECT word,definition FROM mdglossary WHERE word LIKE '$letter' ORDER BY word", $db);
Когда будете делать просмотр по буквам, здесь нужно будет добавить % после $letter, но как я понимаю пока еще этой функциональности у вас нет.
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 20:01
Цитата: RawonaM от сентября 19, 2011, 19:44
Это нужно убрать, должно работать без этого.
работает без этого, но необъяснимым образом сейчас получился поиск чувствительный к регистру!
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 20:05
Цитата: do50 от сентября 19, 2011, 20:01
Цитата: RawonaM от сентября 19, 2011, 19:44Это нужно убрать, должно работать без этого.
работает без этого, но необъяснимым образом сейчас получился поиск чувствительный к регистру!
Не думаю, что это из-за этого, можете вернуть и посмотреть, разницы не должно быть. Так вы ж вроде и хотели чувствительный к регистру.
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 20:13
Цитата: RawonaM от сентября 19, 2011, 20:05
Не думаю, что это из-за этого, можете вернуть и посмотреть, разницы не должно
быть.
да, этот кусочек кода влияет на чувствительность, правда я ещё не определился, нужно это или нет
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 20:22
Цитата: RawonaM от сентября 19, 2011, 19:44
У вас тут лишний доллар, вы уверены, что с ним работает?!
да, верно, второй доллар лишний
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 20:58
Цитата: do50 от сентября 19, 2011, 20:13
Цитата: RawonaM от сентября 19, 2011, 20:05Не думаю, что это из-за этого, можете вернуть и посмотреть, разницы не должно
быть.
да, этот кусочек кода влияет на чувствительность
Это для меня загадка, такого не должно быть. В таком случае нужно смотреть откуда приходят эти переменные $word и $letter, может это как-то прольет свет. Покажите config.php, пароли закройте.
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 21:14

спасибо, а то я тупанул...
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 21:31
Очень странно. Этот файл (главный), вы вызывается напрямую или из какого-то другого php файла?
Неужто у вас register_globals включен...
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 21:43
 
Цитата: RawonaM от сентября 19, 2011, 21:31
Неужто у вас register_globals включен...
не знаю, а где посмотреть?
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 21:47
Цитата: do50 от сентября 19, 2011, 21:43
Цитата: RawonaM от сентября 19, 2011, 21:31Неужто у вас register_globals включен...
не знаю, а где посмотреть?
Нужно выполнить фукнцию phpinfo().
Например создать файл с таким содержимым:

<?php
phpinfo();
?>

Залить на сервер в доступную с сети директорию и открыть в браузере.

Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 21:52
http://dic.gaeilge.ru/s.php

вот, что получилось...
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 21:57
Цитата: do50 от сентября 19, 2011, 21:52
вот, что получилось...
Да, register_globals включен. Это устаревшая директива, сегодня так не делают, тем более в версии 5.3 уже кажется она не поддерживается.

Значит $word вы получаете напрямую с формы. В общем, не может быть, чтобы этот отрывок кода влиял на регистрочувстивельность. Вы точно уверены?
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 21:58
Цитата: RawonaM от сентября 19, 2011, 21:57
Вы точно уверены?
сейчас ещё проверю
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 22:02
нет, сейчас ни с ним, ни без него регистр не чувствует...
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 22:06
Цитата: do50 от сентября 19, 2011, 22:02
нет, сейчас ни с ним, ни без него регистр не чувствует...
Ну вот. :)
Пусть не чувствует, не нужно это.
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 22:09
Цитата: RawonaM от сентября 19, 2011, 22:06
Пусть не чувствует, не нужно это.
это правда, но что ж я накрутил, что это работало? :???
Название: вопросы по php
Отправлено: RawonaM от сентября 19, 2011, 22:11
Цитата: do50 от сентября 19, 2011, 22:09
Цитата: RawonaM от сентября 19, 2011, 22:06Пусть не чувствует, не нужно это.
это правда, но что ж я накрутил, что это работало? :???
Вам наверное показалось. :)
Название: вопросы по php
Отправлено: do50 от сентября 19, 2011, 22:17
Цитата: RawonaM от сентября 19, 2011, 22:11
Вам наверное показалось.
да, я ни-ни, уже две недели (времени нет), хотя... может устал просто  :)
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 16:29
есть такой файл
Цитировать
<?php
function GetDataArt($art_id){
  $sel = "SELECT `title`,`content` FROM `articles` WHERE `id` = '$art_id' LIMIT 1";
  $query = mysql_query($sel);
  if(!$query){
echo('Не удалось взять данные из БД!');
  }
  else{
if(mysql_num_rows($query)>0){
  $res = mysql_fetch_array($query);
  $title = $res['title'];
  $content = $res['content'];
}
else{
  $title = 'К сожалению, такая страница отсутствует на данном сайте!';
  $page_title = 'К сожалению, такая страница отсутствует на данном сайте!';
}
$data_arr = array($title, $content);
return $data_arr;
  }
}
?>

и вывод этого добра
Цитировать
<ul id="menu">
         <li><a href="/"><span>Главная</span></a></li>
         <li><a href="/index.php?art_id=2"><span>Поиск</span></a></li>
         <li><a href="/index.php?art_id=3"><span>Регистрация</span></a></li>
         <li><a href="/index.php?art_id=4"><span>Карта сайта</span></a></li>
         <li><a href="/index.php?art_id=5"><span>О сайте</span></a></li>
</ul>
вопрос у меня такой, как сделать, чтобы активная ссылка выделялась?
Название: вопросы по php
Отправлено: wangjhenbai от июля 3, 2012, 16:49
Я не понял задачу. Вам нужно вывести то же меню, но выделить активную ссылку?

Я бы сделал так:
<ul id="menu">
<?php
   $links = array(
      array(1, 'Главная'),
      array(2, 'Поиск'),
      array(3, 'Регистрация'),
      array(4, 'Карта сайта'),
      array(5, 'О сайте')
   );

   foreach ($links as $ln) {
      $url = ($ln[0] == 1) ? '/' : '/index.php?art_id=' . $ln[0];
      $text = $ln[1];
      $active = $ln[0] == (int)($_GET['art_id']);
      if ($active) {
         print "<li><a href='$url'><span><strong>$text</strong></span></a></li>";
      }
      else {
         print "<li><a href='$url'><span>$text</span></a></li>";
      }
   }
?>
</ul>
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 16:55
wangjhenbai, спасибо! да, то, что нужно!!! ;up:
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 16:58
ой, только я вот запутался, а почему "Главная" не выделяется?
Название: вопросы по php
Отправлено: wangjhenbai от июля 3, 2012, 17:02
Ой, точно, я не подумал про «Главную».

Замените строчку
$active = $ln[0] == (int)($_GET['art_id']);
на
$active = $ln[0] == (isset($_GET['art_id']) ? (int)($_GET['art_id']) : 1);
Название: вопросы по php
Отправлено: wangjhenbai от июля 3, 2012, 17:05
Я чуть поправил код... (isset($_GET['art_id']) ? (int)($_GET['art_id']) : 1) должно быть в скобках.
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 17:10
Цитата: wangjhenbai от июля  3, 2012, 17:02
$active = $ln[0] == (isset($_GET['art_id']) ? (int)($_GET['art_id']) : 1);
не работает!
Parse error: syntax error, unexpected T_STRING in /home/p17717/www/nova.gaeilge.ru/include/siderbar.php on line 16
Название: вопросы по php
Отправлено: wangjhenbai от июля 3, 2012, 17:16
Мне сложно сказать, что там не так, но попробуйте заменить всю эту строчку, скажем, на:
if (isset($_GET['art_id']))
  $active = $ln[0] == (int)($_GET['art_id']) : 1);
else
  $active = $ln[0] == 1;
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 17:24
не-а, не работает, но спасибо! попробую разобраться
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 19:40
Цитировать
print "<li><a href='$url'><span><strong>$text</strong></span></a></li>";
      }
      else {
         print "<li><a href='$url'><span>$text</span></a></li>";
      }
тут функция print( ) обязательна или можно использовать echo( )?
Название: вопросы по php
Отправлено: wangjhenbai от июля 3, 2012, 19:41
А разве между ними есть какая-то разница?
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 19:43
Цитата: wangjhenbai от июля  3, 2012, 19:41
А разве между ними есть какая-то разница?
мне кажется, что  echo( ) побыстрее работает или я ошибаюсь?
Название: вопросы по php
Отправлено: wangjhenbai от июля 3, 2012, 19:59
Нет, они работают с приблизительно одинаковой скоростью.

Разница между echo и print'ом в том, что echo может вывести сразу несколько строк:
echo 'a', 'b', 'c'; //print так не может
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 20:01
Цитата: wangjhenbai от июля  3, 2012, 19:59
Разница между echo и print'ом в том, что echo может вывести сразу несколько строк:
echo 'a', 'b', 'c'; //print так не может
ясно, спасибо вам за помощь
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 20:06
а с "Главной" так и не выходит  :'(
еще один вопрос: нужно чтобы активные пункты были без подчёркивания, как и куда "text-decoration:none" прикрутить?
Название: вопросы по php
Отправлено: Bhudh от июля 3, 2012, 20:11
Цитата: do50 от июля  3, 2012, 20:06нужно чтобы активные пункты были без подчёркивания, как и куда "text-decoration:none" прикрутить?
К a:hover, a:active.
Название: вопросы по php
Отправлено: wangjhenbai от июля 3, 2012, 20:12
Простой путь:
Замените:
print "<li><a href='$url'><span><strong>$text</strong></span></a></li>";
на
print "<li><a href='$url' style='text-decoration: none;'><span><strong>$text</strong></span></a></li>";

Идеологически правильный путь (с разделением смысла и внешнего вида):
Замените:
print "<li><a href='$url'><span><strong>$text</strong></span></a></li>";
на
print "<li class='current'><a href='$url'><span>$text</span></a></li>";

А в файл css/style.css добавьте:
ul#menu li.current a {
   text-decoration: none;
   font-weight: bold;
}
Название: вопросы по php
Отправлено: wangjhenbai от июля 3, 2012, 20:13
Цитата: Bhudh от июля  3, 2012, 20:11
Цитата: do50 от июля  3, 2012, 20:06нужно чтобы активные пункты были без подчёркивания, как и куда "text-decoration:none" прикрутить?
К a:hover, a:active.
Я думал, под «активными» понимались «соответствующие открытой в данный момент странице», а не «те, над которыми наведена мышка»...
Название: вопросы по php
Отправлено: Bhudh от июля 3, 2012, 20:15
Соответствующие странице лучше жырным выделять.
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 20:17
Цитата: wangjhenbai от июля  3, 2012, 20:13
Я думал, под «активными» понимались «соответствующие открытой в данный момент странице», а не «те, над которыми наведена мышка»...
да, вы всё правильно поняли! ещё раз спасибо!
Название: вопросы по php
Отправлено: wangjhenbai от июля 3, 2012, 20:17
Цитата: Bhudh от июля  3, 2012, 20:15
Соответствующие странице лучше жырным выделять.
:fp:
Кому от этого лучше?

К тому же жирным они уже и так выделяются, см. тему выше.
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 20:19
Цитата: wangjhenbai от июля  3, 2012, 20:12
Идеологически правильный путь (с разделением смысла и внешнего вида):
Замените:
print "<li><a href='$url'><span><strong>$text</strong></span></a></li>";
на
print "<li class='current'><a href='$url'><span>$text</span></a></li>";

А в файл css/style.css добавьте:
ul#menu li.current a {
   text-decoration: none;
   font-weight: bold;
}
я примерно так и делал, но ставил двойные кавычки и сервер на меня ругался (почти матом!  ;D)
Название: вопросы по php
Отправлено: Python от июля 3, 2012, 21:25
Цитата: wangjhenbai от июля  3, 2012, 17:16
Мне сложно сказать, что там не так, но попробуйте заменить всю эту строчку, скажем, на:
if (isset($_GET['art_id']))
  $active = $ln[0] == (int)($_GET['art_id']);
else
  $active = $ln[0] == 1;

fixed
Название: вопросы по php
Отправлено: wangjhenbai от июля 3, 2012, 21:25
А, это потому что они уже внутри двойных кавычек, т.е. сервер думал, что строка заканчивается.

Если Вам очень нужны именно двойные кавычки, надо тогда их экранировать, т.е. поставить перед ними знак \":
print "<li class=\"current\"><a href=\"$url\"><span>$text</span></a></li>";

Ну, или заключить всю строку в одинарные кавычки, но тогда нельзя использовать подстановки с помощью доллара (приходится разделить строку на много строк и объединять их оператором .):
print '<li class="current"><a href="' . $url .'"><span>' . $text . '</span></a></li>';


Установите себе какой-нибудь редактор с подсветкой синтаксиса: тогда строки подсвечиваются одним цветом, а всё остальное — другим. И сразу будет понятно, где заканчивается строка. Удобно.
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 21:50
Цитировать
$active = $ln[0] == (isset($_GET['art_id']) ? (int)($_GET['art_id']) : 1);
вот это замечательно работает
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 21:53
Цитата: wangjhenbai от июля  3, 2012, 21:25
Установите себе какой-нибудь редактор с подсветкой синтаксиса: тогда строки подсвечиваются одним цветом, а всё остальное — другим. И сразу будет понятно, где заканчивается строка. Удобно.
у меня их два(!) notepad++ и PSPad editor  :)
Название: вопросы по php
Отправлено: do50 от июля 3, 2012, 21:54
Цитата: wangjhenbai от июля  3, 2012, 21:25
Если Вам очень нужны именно двойные кавычки
нет, я не сумасшедший, одинарные, так одинарные
Название: вопросы по php
Отправлено: do50 от июля 4, 2012, 22:34
wangjhenbai, и остальные люди доброй воли, помогите теперь сделать многоуровневое меню на php + БД из вот этого:
Цитировать
<div id="nav">

<ul class="current"><!-- <<<== активное меню -->
   <li><a href="###"><b>Главная</b></a>
      <ul class="sub_active"><!-- <<<== активное подменю меню -->
      <li class="current_sub"><a href="###">О нас</a></li><!-- <<<== активная страница -->
      <li><a href="###">Контакты</a></li>
      <li><a href="###">Карта сайта</a></li>
      <li><a href="###">Как нас найти</a></li>
      </ul>
   </li>
</ul>

<ul class="select">
   <li><a href="###"><b>Игры</b></a></li>
</ul>
<ul class="sub">
   <li><a href="###">Азартные</a></li>
   <li><a href="###">Гонки</a></li>
   <li><a href="###">Стратегии</a></li>
   <li><a href="###">Аркады</a></li>
   <li><a href="###">Спорт</a></li>
   <li><a href="###">RPG(Ролевые)</a></li>
   <li><a href="###">Логические </a></li>
</ul>

<ul class="select">
   <li><a href="###"><b>Погода</b></a>
      <ul class="sub">
      <li><a href="###">На сегодня</a></li>
      <li><a href="###">На завтра</a></li>
      <li><a href="###">На месяц</a></li>
      <li><a href="###">На неделю</a></li>
      <li><a href="###">На 85 лет вперед</a></li>
      </ul>
   </li>
</ul>

<ul class="select">
   <li><a href="###"><b>Программы для ПК</b></a>
      <ul class="sub">
      <li><a href="###">Аудио-видео плееры</a></li>
      <li><a href="###">Безопасность и защита</a></li>
      <li><a href="###">Интернет</a></li>
      <li><a href="###">Общение (Messeger/Chat/E-mail)</a></li>
      <li><a href="###">Файловые менеджеры, архиваторы</a></li>
      <li><a href="###">Экранные утилиты</a></li>
      </ul>
   </li>
</ul>

</div>
Название: вопросы по php
Отправлено: Python от июля 5, 2012, 08:38
По-моему, тут нужен скорее css и js, чем php. Или нужно сделать его несовместимым со старыми броузерами, и чтобы все время что-то подгружалось?
Название: вопросы по php
Отправлено: do50 от июля 5, 2012, 08:44
Цитата: Python от июля  5, 2012, 08:38
По-моему, тут нужен скорее css и js
эта штука и без js отлично работает. все статьи находятся в БД, их нужно от туда выковыривать   
Название: вопросы по php
Отправлено: wangjhenbai от июля 5, 2012, 12:08
Мы ничем не можем Вам помочь, так как не знаем структуру Вашей БД.
Название: вопросы по php
Отправлено: do50 от июля 5, 2012, 12:28
да какая там структура!
Цитировать
CREATE TABLE IF NOT EXISTS `articles` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(255) NOT NULL,
  `content` longtext NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
вот и вся структура
Название: вопросы по php
Отправлено: wangjhenbai от июля 5, 2012, 12:50
В вашей структуре явно не хватает способа хранить иерархию. Т.е., предположим, у Вас хранятся такие вещи:
«Контакты», «Карта сайта», «Как нас найти», «Азартные» и т.д. А как программа узнает, что первые 3 принадлежат разделу «Главная», а последнее — разделу «Игры»?

Есть 2 способа:
Если одна страница может входить в несколько категорий, тогда не добавляйте поле `parent`/`category`, а создайте таблицу CREATE TABLE `article_parents`(`id` INTEGER AUTO_INCREMENT PRIMARY KEY, `article_id` INTEGER, `parent` INTEGER); или CREATE TABLE `article_categories`(`id` INTEGER AUTO_INCREMENT PRIMARY KEY, `article_id` INTEGER, `category_id` INTEGER);

Скажете, на каком варианте остановились. Только ж учитывайте, что Вам потом надо будет ещё и подобавлять в БД эти странички.

Offtop
Ладно, я сейчас немного занят, так что не обечаю, что отвечу сразу.
Название: вопросы по php
Отправлено: do50 от июля 5, 2012, 16:44
«Главная» и «Игры» сами являются страницами, добавил `parent`
теперь таблица получилась такая:
Цитировать
CREATE TABLE IF NOT EXISTS `articles` (
  `id` int(11) NOT NULL auto_increment,
  `title` varchar(255) NOT NULL,
  `content` longtext NOT NULL,
  `parent` int(11) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=6 ;
правильно?
Название: вопросы по php
Отправлено: wangjhenbai от июля 5, 2012, 17:51
Цитата: do50 от июля  5, 2012, 16:44
правильно?
Да, вполне.



Итак, вот код. Код разбит на 2 части. Первая — функции.
Лучше всего разместить функции в каком-нибудь внешнем файле, например, func.php, а в шаблоне только вызвать этот файл (с помощью строки require 'func.php';).

Spoiler: Файл func.php ⇓⇓⇓
Так как этот файл вызывается из другого файла, тег ?> в конце не нужен.

А в основном файле сделать вот так:
<?php require 'func.php'; ?>
<!-- Тут какой-нибудь ещё код... -->
<div id="nav">
<?php print_menu(isset($_GET['art_id']) ? (int)($_GET['art_id']) : 1); ?>
</div>





Я тестировал на такой базе данных:
Название: вопросы по php
Отправлено: do50 от июля 5, 2012, 20:01
ух ты!!!
wangjhenbai, спасибо вам огромное!
буду разбираться, ещё раз благодарю!!!
Название: вопросы по php
Отправлено: do50 от июля 7, 2012, 22:58
не совсем про php, но...
для заковыристых шрифтов на сайте что лучше использовать cufón или подгружать через css?
Название: вопросы по php
Отправлено: wangjhenbai от июля 7, 2012, 23:15
IMHO CSS гораздо лучше, так как позволяет копировать текст.
Название: вопросы по php
Отправлено: do50 от июля 7, 2012, 23:20
Цитата: wangjhenbai от июля  7, 2012, 23:15
IMHO CSS гораздо лучше, так как позволяет копировать текст.
ну, мне только для оформления заголовков, хотя вы правы, css - лучше
Название: вопросы по php
Отправлено: wangjhenbai от июля 7, 2012, 23:22
Если для оформления заголовков — тогда всё равно, IMHO.
Название: вопросы по php
Отправлено: do50 от июля 7, 2012, 23:27
Цитата: wangjhenbai от июля  7, 2012, 23:22
Если для оформления заголовков — тогда всё равно, IMHO.
js притормаживает работу браузера, там итак много всего понакручено, так, что наверное, лучше через стили
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 10:28
народ, а как думаете, под ie7 надо сайт затачивать?
Название: вопросы по php
Отправлено: Python от июля 9, 2012, 10:36
Только если при этом не теряется совместимость с остальными браузерами.
Название: вопросы по php
Отправлено: wang-jenbair от июля 9, 2012, 10:42
Цитата: do50 от июля  9, 2012, 10:28
народ, а как думаете, под ie7 надо сайт затачивать?
Вот здесь можно посмотреть статистику использования:
http://gs.statcounter.com/#browser_version-ww-monthly-201106-201206-bar

Как видим, IE 7 использует меньше 4% пользователей во всём мире. Нужна ли Вам эта аудитория — решайте сами.

Лично моё мнение такое:
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 10:46
Цитата: Python от июля  9, 2012, 10:36
Только если при этом не теряется совместимость с остальными браузерами.
через css ничего не теряется, но уж очень муторно
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 14:49
Вы про @font-face? А что там муторного-то, урл прописать да шрифты закачать...
Название: вопросы по php
Отправлено: Deme_trius от июля 9, 2012, 15:42
Цитата: Bhudh от июля  9, 2012, 14:49
Вы про @font-face? А что там муторного-то, урл прописать да шрифты закачать...
Нетъ, конечно. Речь о созданіи отдѣльнаго CSS для IE7, а отдѣльнаго для остальныхъ браўзеровъ.
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 15:43
Цитата: Bhudh от июля  9, 2012, 14:49
Вы про @font-face? А что там муторного-то, урл прописать да шрифты закачать...
нет, в IE 7 картинки разъезжаются, везде всё нормально, а в IE 7 как попало
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 15:47
А, я думал, Вы про «заковыристые шрифты».
В IE вообще картинки показываются иначе, чем в других браузерах.
Везде нижний край картинки на уровне нижнего baselineʼа, а у них верхний на уровне верхнего. Поўбіўаў би!
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 15:56
Цитата: Bhudh от июля  9, 2012, 15:47
Поўбіўаў би!
+100500
ну его, этот IE 7, в 8 и в 9 работает, в сафари, опере и файерфоксе тоже и ладно,
можно для любителей IE 7 написать - "выпей йаду и убейся апстол" ;D

Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 17:26
чёй та???
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 17:37
Там же написано, чё. Свойство или метод не поддерживаются. У мелкомягких свои аналоги для половины из них... А для некоторых и вовсе нету.
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 17:40
Цитата: Bhudh от июля  9, 2012, 17:37
Свойство или метод не поддерживаются.
чё делать то?
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 17:42
Добавлять ИЕ-совместимые.
Хотя странно... Там вроде только jquery, и при беглом просмотре ничего такого страшного не обнаруживается. Специалист нужен.
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 17:42
Offtop

Цитата: Bhudh от июля  9, 2012, 17:37
У мелкомягких свои аналоги для половины из них...
>( >( >(
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 17:44
Кстати:
Цитата: //ru.wikipedia.org/wiki/jQueryПоследняя версия   1.7.2
А у вас там предыдущая. Может, обновить, вдруг уже починили... Она же как кроссплатформенная позиционируется...
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 17:55
Цитата: Bhudh от июля  9, 2012, 17:44
Кстати:
Цитата: //ru.wikipedia.org/wiki/jQueryПоследняя версия   1.7.2
А у вас там предыдущая. Может, обновить, вдруг уже починили... Она же как кроссплатформенная позиционируется...
ваще с 1.7.2. работать не хочет
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 19:01
Кстати, у меня курсор не может добраться до ссылки «Экранные утилиты».
Фокус сбрасывается и снова появляется подменю «Главные».
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 19:19
Цитата: Bhudh от июля  9, 2012, 19:01
Кстати, у меня курсор не может добраться до ссылки «Экранные утилиты».
Фокус сбрасывается и снова появляется подменю «Главные».
под рамкой ничего не будет, это так, пока просто макет :yes:
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 19:22
А Lorem ipsum можно пока и на чё-й-либо ирландское заменить :negozhe:.
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 19:31
Цитата: Bhudh от июля  9, 2012, 19:22
А Lorem ipsum можно пока и на чё-й-либо ирландское заменить
ок, щас сделаю
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 20:09
лучше?
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 20:14
Круче! Ещё б пробел между ораментиком и текстом поставить.
Но до «Файловых манагеров» по-прежнему не дотянуться :(.
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 20:23
Цитата: Bhudh от июля  9, 2012, 20:14
Ещё б пробел между ораментиком и текстом поставить.
а было! куда делось?

Цитата: Bhudh от июля  9, 2012, 20:14
Но до «Файловых манагеров» по-прежнему не дотянуться
там ничего не будет!
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 20:25
Цитата: do50 от июля  9, 2012, 20:23а было! куда делось?
:donno:
Но в стилях что-то типа .tb2_2 { padding-left: 1ex; } лучше прописать...

А ещё лучше (http://www.nova.gaeilge.ru/img/list_symbol.png) прописать не картинкой (да ещё и в другой клетке таблицы!), а стилем в виде
                                .tb2_2::before { content: url(img/list_symbol.png); }.
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 20:50
Цитата: Bhudh от июля  9, 2012, 20:25
А ещё лучше  прописать не картинкой (да ещё и в другой клетке таблицы!), а стилем в виде
да, так лучше, спасибо!
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 20:56
Кстати, text-align: left; можно не писать, так как это дефолтное значение :eat:.
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 21:00
Цитата: Bhudh от июля  9, 2012, 20:56
Кстати, text-align: left; можно не писать, так как это дефолтное значение :eat:.
во всех браузерах дефолтно?
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 21:03
Цитата: http://htmlbook.ru/css3/beforeБраузер Internet Explorer до версии 9.0 работает только с нотацией :before, описанной в спецификации CSS 2.1.
Мммать!
Посмотрите, у Вас двойное двоеточие в ИЕ работает?

Цитата: do50 от июля  9, 2012, 21:00во всех браузерах дефолтно?
Не знаю ни одного браузера, где бы текстовый блок в клетке таблицы отображался справа...
Разве что арабский какой-нибудь...
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 21:15
Цитата: Bhudh от июля  9, 2012, 21:03
Посмотрите, у Вас двойное двоеточие в ИЕ работает?
не работает!
убрал одно двоеточие, заработало в ИЕ 8
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 21:16
Сделайте оба варианта.
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 21:18
Цитата: Bhudh от июля  9, 2012, 21:16
Сделайте оба варианта.
зачем?
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 21:22
Для совместимости. В CSS3 одинарные только для этого оставлены.
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 21:30
просто продублировать с двойным двоеточием?
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 21:35
Ага. Очень часто под разные браузеры разные вещи дублируются, как в JS, так и в CSS.
Лучше вообще разные css-ки иметь под это дело. Определять браузер клиента и какую нужно посовывать на стороне сервера.
Или хотя бы в спецблоках писать, как у Вас, кстати, и сделано!
Так что вариант с одним двоеточием суйте в ie.css и/или в ie7.css, а с двумя оставьте где надо.
Название: вопросы по php
Отправлено: do50 от июля 9, 2012, 21:47
Цитата: Bhudh от июля  9, 2012, 21:35
Так что вариант с одним двоеточием суйте в ie.css и/или в ie7.css, а с двумя оставьте где надо.
так и сделал ;up:
Название: вопросы по php
Отправлено: Bhudh от июля 9, 2012, 21:47
Ай-я-яй (http://validator.w3.org/check?uri=%5Burl=http://www.nova.gaeilge.ru&charset=%28detect+automatically%29&doctype=Inline&group=0)!
Название: вопросы по php
Отправлено: do50 от июля 10, 2012, 11:40
Цитата: Bhudh от июля  9, 2012, 21:47
Ай-я-яй (http://validator.w3.org/check?uri=%5Burl=http://www.nova.gaeilge.ru&charset=%28detect+automatically%29&doctype=Inline&group=0)!
а чевой та?
Название: вопросы по php
Отправлено: do50 от июля 10, 2012, 13:31
почему то инфа из БД на страницу не выводится :donno:
Название: вопросы по php
Отправлено: Python от июля 10, 2012, 13:34
По ссылке Bhudh'a вообще битая ссылка проверяется.
Название: вопросы по php
Отправлено: Python от июля 10, 2012, 13:37
http://validator.w3.org/check?uri=http://www.nova.gaeilge.ru&charset=(detect automatically)&doctype=Inline&group=0 (http://validator.w3.org/check?uri=http%3A%2F%2Fwww.nova.gaeilge.ru&charset=%28detect+automatically%29&doctype=Inline&group=0)
Название: вопросы по php
Отправлено: do50 от июля 10, 2012, 13:39
Цитата: Python от июля 10, 2012, 13:37
http://validator.w3.org/check?uri=http://www.nova.gaeilge.ru&charset=(detect automatically)&doctype=Inline&group=0 (http://validator.w3.org/check?uri=http%3A%2F%2Fwww.nova.gaeilge.ru&charset=%28detect+automatically%29&doctype=Inline&group=0)
было 86 ошибок, поисправлял маненько
Название: вопросы по php
Отправлено: do50 от июля 10, 2012, 13:40
Цитата: Python от июля 10, 2012, 13:39
Опере 9
так уже 12 есть, кто же 9 пользуется?
Название: вопросы по php
Отправлено: Python от июля 10, 2012, 13:42
Извиняюсь, в Опере 9 таки работает. Не сразу заметил.
Название: вопросы по php
Отправлено: do50 от июля 10, 2012, 13:52
Цитата: Python от июля 10, 2012, 13:42
Извиняюсь, в Опере 9 таки работает. Не сразу заметил.
:negozhe:
Название: вопросы по php
Отправлено: Bhudh от июля 10, 2012, 14:12
Цитата: Python от июля 10, 2012, 13:34По ссылке Bhudh'a вообще битая ссылка проверяется.
Это не ссылка битая, это парсер урлов у RawonaMʼа недоделанный! >(
Название: вопросы по php
Отправлено: Bhudh от июля 10, 2012, 14:13
Цитата: do50 от июля 10, 2012, 13:39было 86 ошибок, поисправлял маненько
Слэши из idʼов поубирайте, кривой скрипт их вставляет явно.

P. S. А вообще, на фига вам этот Strict? Ставьте <!doctype html> и плюйте в потолок.
Название: вопросы по php
Отправлено: do50 от июля 10, 2012, 14:14
Bhudh, у меня статья из БД не выводится!   :'(
Название: вопросы по php
Отправлено: do50 от июля 10, 2012, 14:19
Цитата: Bhudh от июля 10, 2012, 14:13
P. S. А вообще, на фига вам этот Strict? Ставьте <!doctype html> и плюйте в потолок.
вместо <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> просто <!doctype html>?
Название: вопросы по php
Отправлено: Bhudh от июля 10, 2012, 14:37
Да. Это означает «вместо XHTML 1.0 Strict — HTML5».
Название: вопросы по php
Отправлено: Bhudh от июля 10, 2012, 14:39
Цитата: do50 от июля 10, 2012, 14:14Bhudh, у меня статья из БД не выводится!
Ну, это к Dēmētriō... :donno:
Я в базах ни в зуб копытом :(.
Название: вопросы по php
Отправлено: arseniiv от июля 10, 2012, 18:05
[От Вана Чжэньбо/Wáng Jhēngbái]

do50, не могли бы вы сказать мне Ваш email (например, написал мне письмо с него на dmymd@ya.ru) или дать какой-нибудь ещё способ с Вами связаться? Нынче на форуме вообще запретили писать гостям, а регистрировать нового клона из принципа не хочу, так что я не могу Вам ничего написать. [При этом вопросы и дальше постите на форуме, пожалуйста: я там их читаю, а ещё их там могут прочитать Bhudh, RawonaM, etc.]

Можете показать код, которым вы выводите содержимое статьи? Насколько я понимаю, вы пользуетесь функцией GetDataArt (которую вы постили тут: LF#38228/1375750 (http://lingvoforum.net/index.php/topic,38228.msg1375750.html#msg1375750))?

Я попробовал, используя эту функцию, вывести содержание текста:
<div id="content">
    <?php $art = GetDataArt($_GET['art_id']); ?>
    <span id="headline"><?=$art[0]?></span>
    <?=$art[1]?>
</div>


И у меня всё прекрасно получилось.

Так что проблема где-то у Вас. Если хотите, запостите тот участок кода, где вы выводите текст — будем разбираться.
Название: вопросы по php
Отправлено: do50 от июля 10, 2012, 18:28
Цитата: arseniiv от июля 10, 2012, 18:05
Я попробовал, используя эту функцию, вывести содержание текста:
<div id="content">
    <?php $art = GetDataArt($_GET['art_id']); ?>
    <span id="headline"><?=$art[0]?></span>
    <?=$art[1]?>
</div>

поправил, всё заработало!! спасибо!
Название: вопросы по php
Отправлено: do50 от июля 10, 2012, 18:32
Цитата: arseniiv от июля 10, 2012, 18:05
написал мне письмо
отписал
Название: вопросы по php
Отправлено: do50 от июля 11, 2012, 10:50
вот, что сейчас имеем:
1. БД
2. Файл functions.php
3. Файл func.php
4. Файл siderbar.php
5. Файл contentr.php
Проблема: при переходе на сайт с другого сайта активными являются кнопки (и в меню и в навигации) "Baile" и выводится сообщение: "К сожалению, такая страница отсутствует на данном сайте!".
при нажатии на кнопку "Baile" в меню - ничего не меняется, а при нажатии на "Baile" в навигации открывается начальная статья.

и еще вопрос: как правильно объединить файлы functions.php и func.php, я пробовал, не получилось
Название: вопросы по php
Отправлено: fujhi от июля 12, 2012, 08:58
Моё письмо, видимо, не дошло, так что продублирую вот так.

Цитата: do50 от июля 11, 2012, 10:50
Проблема: при переходе на сайт с другого сайта активными являются кнопки (и в меню и в навигации) "Baile" и выводится сообщение: "К сожалению, такая страница отсутствует на данном сайте!".
при нажатии на кнопку "Baile" в меню - ничего не меняется, а при нажатии на "Baile" в навигации открывается начальная статья.
Проблема в том, что при просто открытии сайта $_GET['art_id'] не установлена. А он должен по умолчанию возвращать число 1, значение не установлено.

Это можно исправить, например, заменив вызов функции GetDataArt таким образом:
<?php $art = GetDataArt(isset($_GET['art_id']) ? $_GET['art_id'] : 1); ?>
<span id="headline"><?=$art[0]?></span>
<span id="text"><?=$art[1]?></span>


Таким образом, isset($_GET['art_id']) ? $_GET['art_id'] : 1 будет возвращать 1, если isset($_GET['art_id']) неверно (т.е. если $_GET['art_id'] не определена), и по умолчанию будет открываться страница с ID 1 (Baile).


НО! Тут ещё одна проблема.

Цитата: do50 от июля 11, 2012, 10:50
при нажатии на кнопку "Baile" в меню - ничего не меняется, а при нажатии на "Baile" в навигации открывается начальная статья.
Это плохо, что ссылки работают по-разному! Это значит, что ссылки в навигации и в меню разные. Гугл может подумать, что nova.gaeilge.ru/index.php?art_id=1 и nova.gaeilge.ru — разные страницы и будет считать, что на сайте повторяется контент — это может ухудшить рейтинг сайта (ну, на самом деле не сильно ухудшит, но всё же лучше всё сделать правильно).

Чтобы этого не было, поменяйте функцию get_item_link таким образом:
function get_item_link($item_id) {
  return $item_id != 1 ? "/index.php?art_id=$item_id" : '/';
}

Таким образом, если $item_id будет равно 1, функция будет возвращать ссылку не /index.php?art_id=1, а /.

Spoiler: Дополнительно ⇓⇓⇓

Цитироватьи еще вопрос: как правильно объединить файлы functions.php и func.php,
я пробовал, не получилось

Думаю, проблема в скобках <?php ... ?>. Главное — чтобы они не были вложены друг в друга. В готовом файле в идеале они должны встречаться один раз:

Лучше всего вот так:

Если закрывающая скобка стоит в конце файла, её можно не писать. Главное — чтобы не было <?php внутри <?php.
Название: вопросы по php
Отправлено: do50 от июля 12, 2012, 13:23
что то у меня не получается
1. в func.php поменял return "/index.php?art_id=$item_id"; на return $item_id != 1 ? "/index.php?art_id=$item_id" : '/';

2. в sidebar.php поменял $url = ($ln[0] == 1) ? '/' : '/index.php?art_id=' . $ln[0]; на $url = get_item_link($ln[0]);

3. include 'functions.php' с самого начала находился в самом верху

теперь "Baile" и в навигации и в сайдербаре выдаёт сообщение "К сожалению, такая страница отсутствует на данном сайте!"
Название: вопросы по php
Отправлено: do50 от июля 12, 2012, 13:31
Цитата: fujhi от июля 12, 2012, 08:58
Моё письмо, видимо, не дошло
можно ещё сюда мылить do50@ya.ru
Название: вопросы по php
Отправлено: fujhi от июля 12, 2012, 13:38
Цитата: 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».
Название: вопросы по php
Отправлено: do50 от июля 12, 2012, 14:28
ну, да! конечно же!!
ура, всё работает!!!
Название: вопросы по php
Отправлено: 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 (это чуть сложнее, тут надо в базу добавлять новое поле, но всё равно достаточно легко).
вот эти моменты очень интересны!
Название: вопросы по php
Отправлено: fujhi от июля 12, 2012, 16:29
Цитата: 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, а потом могу объяснить, как сделать буквенные.
Название: вопросы по php
Отправлено: do50 от июля 12, 2012, 19:02
ок, спасибо! буду разбираться
Название: вопросы по php
Отправлено: fujhi от июля 12, 2012, 19:09
Кстати! Я только что заметил, что у Вас не Apache, у Вас Litespeed Web Server.
Он тоже умеет переписывать адреса (http://www.litespeedtech.com/docs/webserver/config/rewrite/ (http://www.litespeedtech.com/docs/webserver/config/rewrite/)),  по идее он совместим с Apache, но что-то может отличаться.
Название: вопросы по php
Отправлено: fujhi от июля 12, 2012, 19:14
Я тут почитал, что «LiteSpeed Web Server can operate with an Apache configuration file. Most commonly used Apache features have been implemented», так что всё, что написано Выше, будет верно и у Вас. :yes:
Название: вопросы по php
Отправлено: do50 от июля 12, 2012, 19:26
 ;up: замечательно!
Название: вопросы по php
Отправлено: do50 от июля 13, 2012, 14:45
с ЧПУ решил разобраться попозже (хочется всё таки понять как следует), а сейчас такой вопрос:
на странице Книги -> Ирландский будут размещены мини анонсы, литературы набралось много, как сделать так, что бы на одной странице размещалось 7 анонсов, на следующей ещё 7 и так далее (все они относятся к Книги -> Ирландский). и ещё, у каждого мини анонса будет ссылка на страницу с полным описанием книги и ссылкой на скачивание, как лучше это сделать?
Название: вопросы по php
Отправлено: fujhi от июля 13, 2012, 15:08
Создайте дополнительную таблицу. Сделайте там какие-нибудь поля: как минимум поле id (его желательно делать для всех вещей), title и description. Можно ещё поле, скажем, с именем файла картинки обложки (текст); а можно и саму картинку в базу данных запихнуть (тогда используйте тип BLOB). Можно добавить поле с датой добавления книги на сайт, если захотите показывать самое новое сверху.

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

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

Когда создадите таблицу, покажите её схему, тогда можно будет двигаться дальше.
Название: вопросы по php
Отправлено: do50 от июля 13, 2012, 17:00
вот, что получилось:

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

Сейчас ещё напишу.
Название: вопросы по php
Отправлено: do50 от июля 13, 2012, 17:43
готово
Название: вопросы по php
Отправлено: fujhi от июля 13, 2012, 18:43

Знате, что мне у Вас Я, правда, не понял, что такое 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). После основного кода разместите что-то такое:

      Теперь на каждой странице выводится список элементов, связанных со страницей.
Название: вопросы по php
Отправлено: do50 от июля 14, 2012, 13:13
fujhi, спасибо огромное!!! как разберусь, сразу отпишусь
Название: вопросы по php
Отправлено: fujhi от июля 14, 2012, 13:43
Spoiler: Когда доделаете... ⇓⇓⇓
Название: вопросы по php
Отправлено: do50 от июля 20, 2012, 19:26
fujhi, а куда в таблице items нужно вставить код страницы, которую нужно вывести?
Название: вопросы по php
Отправлено: do50 от июля 20, 2012, 19:30
что то я не так сделал, после изменений получил:
Parse error: syntax error, unexpected $end in /home/p17717/www/nova.gaeilge.ru/func.php on line 118
Название: вопросы по php
Отправлено: fujhi от июля 20, 2012, 19:49
Цитата: 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;, либо чего-то подобного).
Название: вопросы по php
Отправлено: do50 от июля 20, 2012, 20:19
запутался  :'(
т.е. в art_id сохраняем html код страницы 1 с книгами 1 -7?
Название: вопросы по php
Отправлено: do50 от июля 20, 2012, 21:34
func.php исправил, сообщений об ошибках нет....
Название: вопросы по php
Отправлено: fujhi от июля 21, 2012, 12:56
Цитата: 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>

Если что-то выводитяся не так, правьте это место.
Название: вопросы по php
Отправлено: do50 от июля 21, 2012, 13:35
context и планировался для этого, страничка вывелась, пока всё нормально, огромное спасибо!!!
Название: вопросы по php
Отправлено: do50 от июля 22, 2012, 11:43
книги с первой по седьмую разместил в context id 1, следующие в context id 2, но они все остались на одной страницы, опять я что то напутал?
Название: вопросы по php
Отправлено: fujhi от июля 22, 2012, 11:55
Цитата: do50 от июля 22, 2012, 11:43
книги с первой по седьмую разместил в context id 1, следующие в context id 2, но они все остались на одной страницы, опять я что то напутал?
Ничего не понял.  :(

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

А можете дать кусок кода, ответственный за вывод, как он теперь выглядит?
Название: вопросы по php
Отправлено: do50 от июля 22, 2012, 11:57
момент, кажется я понял в чём дело...
Название: вопросы по php
Отправлено: do50 от июля 22, 2012, 13:05
fujhi, с той проблемой разобрался. а как теперь сделать переход со страницы с анонсами к страницы с конкретной книгой?
Название: вопросы по php
Отправлено: fujhi от июля 22, 2012, 13:24
Для начала её нужно создать, эту страницу с конкретной книгой.

У меня сейчас нет времени подробно объяснять, пусть кто-то другой пишет.
Название: вопросы по php
Отправлено: do50 от июля 22, 2012, 13:28
ок
Название: вопросы по php
Отправлено: do50 от июля 26, 2012, 10:53
странно, почему то шрифты не выводятся на соответствующую страницу, я сохранил их в таблице items c art_id 22  :(
Название: вопросы по php
Отправлено: fujhi от июля 26, 2012, 11:41
22 — это «Ирландский язык», туда они прекрасно выводятся:
http://nova.gaeilge.ru/index.php?art_id=22

Шрифты — это 25.
Название: вопросы по php
Отправлено: do50 от июля 26, 2012, 11:44
Цитата: fujhi от июля 26, 2012, 11:41
22 — это «Ирландский язык», туда они прекрасно выводятся:
http://nova.gaeilge.ru/index.php?art_id=22

Шрифты — это 25.
:wall:
oops! i did it again...(c)
Название: вопросы по php
Отправлено: fujhi от июля 26, 2012, 11:47
Кстати, было бы логично хранить ссылки «Скачать» в отдельном поле в базе данных, IMHO. И не выводить ссылку, если поле пустое.
Название: вопросы по php
Отправлено: do50 от июля 26, 2012, 12:44
Цитата: fujhi от июля 26, 2012, 11:47
Кстати, было бы логично хранить ссылки «Скачать» в отдельном поле в базе данных, IMHO. И не выводить ссылку, если поле пустое.
пустых то не будет, нет смысла делать анонс, если нет материала для скачивания
Название: вопросы по php
Отправлено: Bhudh от июля 26, 2012, 17:29
Цитата: do50 от июля 26, 2012, 12:44нет смысла делать анонс, если нет материала для скачивания
:o Да Вы идеалист! :=
Название: вопросы по php
Отправлено: do50 от июля 26, 2012, 17:31
Цитата: Bhudh от июля 26, 2012, 17:29
Цитата: do50 от июля 26, 2012, 12:44нет смысла делать анонс, если нет материала для скачивания
:o Да Вы идеалист! :=
каюсь!
Название: вопросы по php
Отправлено: do50 от августа 2, 2012, 18:16
разобрался и сделал сам отдельные страницы для книг! :eat:

1. сделал таблицу books
2. в functions.php добавил следующий код:
<?php
   if (isset ($_GET['id'])) {
                  $id = $_GET['id'];
                     }   
   $boox = mysql_query ("SELECT text FROM books WHERE id = '$id'");
   $myrow = mysql_fetch_array($boox);
?>

3. создал файл books.php из файла index.php заменив <?php include("include/content.php"); ?> на <?php print $myrow['text']  ?>

может и коряво получилось, но работает
Название: вопросы по php
Отправлено: do50 от августа 3, 2012, 14:26
а где конструктивная критика?  :'(
Название: вопросы по php
Отправлено: fujhi от августа 3, 2012, 14:41
«Оно работает? Не трогайте».
Название: вопросы по php
Отправлено: do50 от августа 3, 2012, 17:02
Цитата: fujhi от августа  3, 2012, 14:41
«Оно работает? Не трогайте».
точно как наш сисадмин  ;D