Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ПОиск записи через адрес сайта, www.a.ru/id=123 
:(
    Опции темы
nicka47
  Дата 28.2.2008, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2005
Где: Грузия

Репутация: нет
Всего: нет



Надо чтобы записывая в адресснуя строку браузера строку в формате http://www.a.ru/id=123 я должна принять id  и выдать соотсвутствующую страницу. Как это реализовать?
PM MAIL   Вверх
GeneralElectric
Дата 28.2.2008, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



сделать файл index.php внутри которого написать
Код

if (isset($_GET['id'])) {
  echo "страница, соответствующая id = ".$_GET['id'];
}

PM MAIL   Вверх
awers
Дата 28.2.2008, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



nicka47, во-первых ?id=123
а в теле скрипта include($_GET['id']);
PM MAIL WWW ICQ Skype   Вверх
mishaSL
Дата 28.2.2008, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



В общем случае так:
http://www.a.ru/?id=123
Код

$id = (empty($_GET['id']) ? 0 : intval($_GET['id']);

if (!empty($id)) {
    $sql = "SELECT `page` FROM `my_table` WHERE `id` = {$id} LIMIT 1";
    $query = mysql_query($sql) or die("Ошибка SQL запроса: {$sql}");
    if (mysql_num_rows($query) > 0) {
         list($contentPage) = mysql_fetch_array($result, MYSQL_NUM);
         print $contentPage;
    }
}


Чтобы получить ответ более конкретно, надо задать вопрос подробнее.


--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
GeneralElectric
Дата 28.2.2008, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



awers, вот за такое вот include($_GET['id']); программистам надо руки отрывать.

Это сообщение отредактировал(а) GeneralElectric - 28.2.2008, 13:31
PM MAIL   Вверх
nicka47
Дата 28.2.2008, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2005
Где: Грузия

Репутация: нет
Всего: нет



Я ошиблась, формат должен быть такой: пользователь вносить в строку адреса например след: http://www.a.ru/123

а я распознаю цифры за слешем  и перенправляю на соответствующую страницу, на которой уже показываю данные из базы по этому номеру

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

PM MAIL   Вверх
mishaSL
Дата 28.2.2008, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1046
Регистрация: 10.1.2007
Где: Санкт-Петербург

Репутация: 19
Всего: 54



nicka47, написать в .htaccess следующее:
Код

RewriteEngine On

RewriteRule ^([0-9]+)$  index.php?id=$1 [L]



--------------------
Лучший способ научиться программированию - это посмотреть как это делают другие...
PM MAIL   Вверх
GeneralElectric
Дата 28.2.2008, 13:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



сделать файл index.php внутри которого написать
Код

$qs=$_SERVER['QUERY_STRING'];
if (ctype_digit($qs)) {
  $sql = "SELECT * FROM `users` WHERE `id` = $qs";
  $res = mysql_query($sql) or trigger_error(mysql_error().$sql);
  if ($row=mysql_fetch_array($res)) {
    echo $row['name'];
  } else {
    echo "пользователь не найден";
  }
}

 
 


Это сообщение отредактировал(а) GeneralElectric - 28.2.2008, 13:41
PM MAIL   Вверх
awers
Дата 28.2.2008, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



GeneralElectric, блин. человек попросил абстрактный пример. защита своего кода - дело того, кто пишет ) ну давай я за него напишу весь скрипт... нельзя настолько буквально относиться к вещам
PM MAIL WWW ICQ Skype   Вверх
skyboy
Дата 28.2.2008, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



nicka47, тебе надо разделить задачу: 
  • преобразовать URL-путь в передаваемые скрипту параметры(например, чтоб пользователь вводил "mysite.com/something", а обрабатывалось сервером как "mysite.com/search.php?q=soething") можно при помощи мезанизма Apache(если используешь Apache, конечно) mod_rewrite. Что это и как с этим работать - смотри и задавай вопросы в разделе "Администрирование Web-серверов и служб". 
  • после преобразования адресной строки происходит вызов определяемого тобой скрипта  с передачей ему в виде параметров "кусков" адресной строки. Механизм поиска на твоем сайте - это второй вопрос, который решается отдельно от первого.
  • прочие примочки(подсказки по поиску, индексирование для ускорения и улучшения поиска, разбивка результатов поиска на страницы) - это уже совсем отдельные вопросы.
когда ты смешиваешь совсем разные задачи в одну кучу, разобраться становится сложно, в первую очередь, тебе! учись разделять!
PM MAIL   Вверх
nicka47
Дата 28.2.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2005
Где: Грузия

Репутация: нет
Всего: нет



skyboy, возможно я неправильно обьяснила задачу. На самом деле я задала вопрос по одному направлению, конкретно по первому из перечисленных тобой пунктов.
Спасибо за подробный ответ, я учусь уже 10 лет

GeneralElectric, спасибо за конкретный пример, только наверно мне он не подходит

awers, не злитесь пожалуйста, мне всегда интересно посмотреть каким способом пишут программисты-проффи, я согласно с подписью mishaSL,  - Лучший способ научиться программированию - это посмотреть как это делают другие...



Значит единственный способ  - это mod_rewrite?


PM MAIL   Вверх
BIG BROTHER
Дата 28.2.2008, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 9.12.2004
Где: Россия, Москва

Репутация: 2
Всего: 4



то что в адресе после "?" - придут скрипты в виде GET данных в глобальный массив $_GET 
значит нам необходимо взять соответсвующий элемент массива, в данном примере $_GET["id"]
и на основе него выполнить какие-то действия (подставить в запрос, для получения и вывода данных, подключить соответсвующий файл)
НО т.к. эти данные приходят от клиента, при чем достаточно явно, НЕОБХОДИМО позаботиться о соответсвующей обработке и фильтрации этих данных.
Т.к. в конкретном примере мы заведомо знаем что ID может быть только цифровым - нам ныжно проверить цифра-ли к нам пришла
Если да - работаем, нет, посылаем пользователя, например с помощю вывода ему банального 404...

Если нужно принять данные именно в таком виде, как в первом посте, т.е. /id=123 или /123 то один из способов - mod_rewrite 
другой - принудительно отправлять пользователю вместо 404 - ответ 200 и обрабатывать строку адреса с помощю регулярок

Это сообщение отредактировал(а) BIG BROTHER - 28.2.2008, 21:18
--------------------
Mess with the best, die like the rest
PM MAIL ICQ   Вверх
skyboy
Дата 28.2.2008, 22:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



Цитата(nicka47 @  28.2.2008,  20:06 Найти цитируемый пост)
Значит единственный способ  - это mod_rewrite?

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

Добавлено через 3 минуты и 2 секунды
да, и не только под Apache такое реализовано.
PM MAIL   Вверх
GeneralElectric
Дата 28.2.2008, 22:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 797
Регистрация: 11.1.2008

Репутация: 13
Всего: 16



nicka47, не вижу ни одной причины, по которой мой код не подходил бы.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0664 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.