Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: index.php#.. как передать значение якоря в php страницу?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: При переходе по ссылке "index.php#2" в адрессной строке выходит "index.php#" без якоря
fenomen51
Отправлено: 11 Июня, 2010 - 19:31:53
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




При переходе по ссылке "index.php#2" в адрессной строке выходит "index.php#" без самого якоря, как передать якорь?

с программированием я не так много...

пробывал передать методом get и потом подставить в window.location.hash="", но переменную передавать из php в JS показалось тяжким трудом

Ничего найти в интернете не получается, подскажите по каким ключевым словам и что поискать, каким путём пойти лучше?

Ещё интересно сделать все ссылки вида "/.../...", а не "?id...", найти пока тоже не смог, а ковырять готовые системы не хочу пока, они обычно огромные..?
 
 Top
isle
Отправлено: 11 Июня, 2010 - 22:44:01
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Окт. 2009  
Откуда: Казахстан, Алматы


Помог: 0 раз(а)




Честно сказать - не помню, как передавал якорь, в последнее время всегда ссыль пишу с вопросиком, а далее задаю переменную... типа: /index.php?id=1

Но натолкну на мысль: почитайте http://php.net/manual/en/reserve...ables.server.php

Например, если я сижу на site.ru/sitemap.html, то получаю вот что:

#echo $_SERVER['PHP_SELF']; #/index.php
#echo $_SERVER['REQUEST_URI']; #/sitemap.html?cat=4&page=2
#echo $_SERVER['DOCUMENT_ROOT']; #/home/master/data/www/site.ru
#echo $_SERVER['SCRIPT_FILENAME']; #/home/master/data/www/site.ru/index.php
#echo $_SERVER['QUERY_STRING']; #do=islemap
#echo $host = $_SERVER['HTTP_HOST']; #site.ru

Далее есть несколько различных вариантов парсинга этих переменных из строки - зависит от вашей конкретной ситуации как и чем парсить... Можно просто разбить експлодом по знаку, например, "=" и получить значение из строки, можно спец. функциями, типа parse_url или подобными (их 2 или 3 точно, но по памяти так не скажу, давно клепал).

Я когда-то не знал как парсить, делал что-то типа этого:

CODE (htmlphp):
скопировать код в буфер обмена
  1. function go() {
  2.   global $go; $go = array();
  3.   $action = $_SERVER['REQUEST_URI'];
  4.   $uri = parse_url($action);
  5.   $query = explode('&',str_replace(array('cat','page','='),'',$uri['query']));
  6.   $p = intval($query[1]); $c = intval($query[0]);
  7.   $go['cat'] =  !$c || empty($c) || $c < 0 ? 0 : $c;
  8.  $go['page'] = !$p || empty($p) || $p < 2 ? 1 : $p;
  9. }


Распечатать из php результат в яву не сложно, достаточно написать что-то вроде:

echo "<script>document.wright(".$param.");</script>";

Где $param - ваш результат обработки.

Надеюсь, помог Улыбка

(Отредактировано автором: 11 Июня, 2010 - 22:45:03)

 
 Top
Carzil
Отправлено: 12 Июня, 2010 - 10:12:43
Post Id



Гость


Покинул форум
Сообщений всего: 127
Дата рег-ции: Нояб. 2009  
Откуда: Россия, Москва


Помог: 0 раз(а)




fenomen51 пишет:
Ещё интересно сделать все ссылки вида "/.../...", а не "?id...", найти пока тоже не смог, а ковырять готовые системы не хочу пока, они обычно огромные..?

Статья о ЧПУ


-----
Не помогли на форуме? Не растраивайтесь!
 
 Top
JustUserR
Отправлено: 13 Июня, 2010 - 12:54:07
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




fenomen51 пишет:
При переходе по ссылке "index.php#2" в адрессной строке выходит "index.php#" без самого якоря, как передать якорь?
При работе с якорями необходимо учитывать несколько вещей - во-первых они являются свойсвом локальной HTML-страницы и не передаются PHP-скрипту в любом случае - поэтому если вам приедтся его передавать то необходимо использование JS-скрипт для соответствующего считывания и зашифрованной передачи Во-вторых в DOM-модели якоря лежат в объекте document.anchors и соответственнно для обращения к ним они должны иметь правильное имя - в частности содержать только латинские буквы и цифры и знак подчеркивания но не начинаться с цифры - в вашем случае так оно и есть


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
fenomen51
Отправлено: 15 Июня, 2010 - 07:57:25
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




У меня большие списки сотрудников и коллективов, очень желательно как-то реализовать прокрутку страницы к нужному элементу, чтобы человеку не приходилось самому искать нужную строчку, может это проще сделать без якорей? Чтобы перейдя по ссылке на страницу, она сразу вставала на нужное место, как и при использовании якорей

Какие-то другие способы существуют, может функции прокрутки какие или..?

Я давно не боюсь освоения новых вещей, но быть одновременно и дизайнером и программистом и писателем - не просто, с JS сейчас может не время разбираться

Буду благодарен любым соображениям и благодарю тех людей. которые тут уже писали, мне помогло, я уже кое-что на сайте сделал, очень нужной оказалась технология обработки ошибок запроса страницы, для реализации красивых ссылок, хотя раньше собирался это сделать для индексации. Теперь решил, что большой необходимости нет, может в каком-то небольшом сайте пригодится. А в крупном не хочется загружать серсвер ещё и обработкой намеренно сделанных ошибок, у меня и случайных хватает

Может php может формировать файл html формата, отдавать его и нужды в мучениях не будет?
php на большинстве страниц используется только для формирования страницы из шаблонов, динамики не содержат и ущебра от такой реализации не будет
(Добавление)
JustUserR пишет:
fenomen51 пишет:
При переходе по ссылке "index.php#2" в адрессной строке выходит "index.php#" без самого якоря, как передать якорь?
При работе с якорями необходимо учитывать несколько вещей - во-первых они являются свойсвом локальной HTML-страницы и не передаются PHP-скрипту в любом случае - поэтому если вам приедтся его передавать то необходимо использование JS-скрипт для соответствующего считывания и зашифрованной передачи Во-вторых в DOM-модели якоря лежат в объекте document.anchors и соответственнно для обращения к ним они должны иметь правильное имя - в частности содержать только латинские буквы и цифры и знак подчеркивания но не начинаться с цифры - в вашем случае так оно и есть

Кроме цифр я попробывал к тому моменту и буквы...

А с JS пока не досуг был разобраться, у меня много сайтов, я их с 0 сам пишу, символ за символом и дизайн и базы данных и статьи пишу, а ещё у меня три работы.. и тп... Как у всех)

Соответственно не так давно освоил php.

JS мне тоже интересен, просто у меня подход практичный, учить обычно начинаю то, без чего не обойтись, а остальное ждёт моего свободного времени и настроения

(Отредактировано автором: 15 Июня, 2010 - 07:58:33)

 
 Top
isle
Отправлено: 15 Июня, 2010 - 15:10:09
Post Id



Гость


Покинул форум
Сообщений всего: 111
Дата рег-ции: Окт. 2009  
Откуда: Казахстан, Алматы


Помог: 0 раз(а)




fenomen51 пишет:
Какие-то другие способы существуют, может функции прокрутки какие или..?


На js, если знаете на сколько и куда опускать страницу (вверх-вниз) реализуется так:

window.scroll(0,1000);
window.scroll(0,-1000);

Еще потребоваться может определение текущей позиции, чтоб от нее поднять-опустить страницу - это на jquery относительно легко делается, но всё равно гемор.

На php можно не только через ГЕТ, но и через РОСТ запрос передать переменную, которая и будет определять куда именно сдвинуть страницу, предварительно только установить счетчик положения нужно в нуль, но это - морока... Лучше просто якорем - самый простой и эффективный способ.

Через ПОСТ нужно форму писать и кнопочку ставить - не всегда удобно и не везде подходит.

(Отредактировано автором: 15 Июня, 2010 - 15:12:56)

 
 Top
JustUserR
Отправлено: 16 Июня, 2010 - 11:12:17
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




fenomen51 пишет:
У меня большие списки сотрудников и коллективов, очень желательно как-то реализовать прокрутку страницы к нужному элементу, чтобы человеку не приходилось самому искать нужную строчку, может это проще сделать без якорей? Чтобы перейдя по ссылке на страницу, она сразу вставала на нужное место, как и при использовании якорей
То есть после совершения определенного запроса к серверу у вас генерируется достаточно большой список в котором нужно сразу сделать переход на нужное место - для этого можно воспользоваться несколькими методам
Вы можетие сделать реальный якорь и в самом начале показать пользователю ссылку с этим якорем и при нажатии на нее он перейдет в нужное место страницы - то же самое можно осуществить за счет window.location.hash или эмуляции нажатия на ссылку Можно реализовать и целиком на JS путем поиска offsetTop у нужного элемента и текущего scrollHeight на основании чего уже можно сделать прокрутку


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
fenomen51
Отправлено: 17 Июня, 2010 - 11:17:02
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




Сделать получилось так:

ссылка по которой переходим на страницу имеет вид: pc.php#b
тогда в текст pc.php вставляем код:

CODE (javascript):
скопировать код в буфер обмена
  1. <SCRIPT language=JavaScript>self.location.href=location.hash;
  2. </SCRIPT>


NAME="b" добавляется в тот элемент кода страницы, к которому требуется перейти

Едва ли не первый раз пользовался форумом, с детства предпочитаю находить ответы самостоятельно, но очень порадовал данный эксперимент, без вышеприведённых ответов я бы не скоро ещё сделал, а тут уж пришлось покопаться (третий переход по яндексовому поиску дал сей результат), только раньше я не знал как сформулировать нужно правильно

Когда первый раз экспериментировал с передачей id через РОST и переходу по этому id средствами JS, зашёл в тупик, ибо JS я абсолютно не использовал раньше JS

Всем спасибо)

Как бы вместо location.hash и якоря, использовать id ?

(Отредактировано автором: 17 Июня, 2010 - 11:39:33)

 
 Top
JustUserR
Отправлено: 17 Июня, 2010 - 11:54:09
Post Id



Активный участник


Покинул форум
Сообщений всего: 8715
Дата рег-ции: Июнь 2009  


Помог: 17 раз(а)




fenomen51 пишет:
Как бы вместо location.hash и якоря, использовать id ?
Если вы имеете в виду прокрутку к конкретному div-элементу с заданным идентификатором то это можно реализовать различными способами Если ваша HTML-страница строится статическим методом с указанием некоторых фиксированных разделов то можно сделать расчет - например вы смотрите позицию div-блока в документе и рассчитваете высоту всех элементов выше него на основе фиксированого размера шрифта - и далее делаете прокруту с помощью scrollTo
Как вариант можно использовать CSS-свойства типа offsetHeight для определения абсолютной позиции элемента - или при относительном положении каскадного определения позиций всех родительских элементов аналогичным образом и вычисление общего остступа Также можно использоваь свойсво document.body.scrollTop для определения текущей позиции прокрутки - и выполнять плавную прокруту к примеру
Также возмжно создание невидимый гиперссылки с указанеем якоря - и эмуляция нажатия на нее путем генерации события element.click
PS Тема все-таки больше по JS поэтому переношу ее в соответствующий раздел


-----
Сделать можно все что угодно - нужно только старание, терпение и хороший поисковик Улыбка
Безлимитный web-хостинг от 15 рублей за 40 МБ дискового пространства - http://ihost[dot]oks71[dot]ru/
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB