26 декабря 2013
7157
передача параметров, get, php

PHP передача параметров GET

PHP
Демонстрация » Скачать »

Дорогие друзья, хотелось бы сделать небольшое отступление и поздравить Вас всех с наступающим Новым Годом! Надеюсь, в следующем, 2014 году, каждый сможет осуществить свои задуманные мечты и превратить их в реальность! Ну, а теперь перейдем к теме сегодняшнего урока, это PHP передача параметров GET через адресную строку. Тема скорее всего для начинающих веб программистов, думаю будет очень полезна, ведь в дальнейшем, могу сказать со сто процентной вероятностью, она Вам ни раз еще пригодится! Данную передачу GET параметров Вы можете наблюдать и на нашем сайте и практически на любом другом, когда в адресную строку подставляются параметры. Есть и другие уроки, например, постраничная навигация, в которой тоже используется передача параметров GET посредством PHP в адресную строку после перехода. Так же похож еще урок добавление и удаление полей, можете посмотреть и увидите такой же просто передачи параметров.

 

 

ШАГ ПЕРВЫЙ. MySQL.

 

Для начала, давайте создадим базу данных get с привилегиями логин - "root", пароль - "".

В ней будут храниться три таблицы, а именно materials - таблица с материалами, cat - таблица с категориями материалов и author - таблица с авторами материалов.

 

Таблица materials. Дамп и структура.

 

--
-- Table structure for table `materials`
--

CREATE TABLE IF NOT EXISTS `materials` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  `cat` int(5) NOT NULL,
  `author` int(5) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=5 ;

--
-- Dumping data for table `materials`
--

INSERT INTO `materials` (`id`, `title`, `cat`, `author`) VALUES
(1, 'Volvo', 1, 2),
(2, 'Apple', 2, 1),
(3, 'Mercedes', 1, 1),
(4, 'Microsoft', 2, 2);

 

 

PHP передача параметров GET

 

 

Таблица cat. Дамп и структура.

 

--
-- Table structure for table `cat`
--

CREATE TABLE IF NOT EXISTS `cat` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `cat`
--

INSERT INTO `cat` (`id`, `title`) VALUES
(1, 'Машины'),
(2, 'Компьютеры');

 

 

 

GET передача

 

 

 

Таблица author. Дамп и структура.

 

--
-- Table structure for table `author`
--

CREATE TABLE IF NOT EXISTS `author` (
  `id` int(5) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=3 ;

--
-- Dumping data for table `author`
--

INSERT INTO `author` (`id`, `title`) VALUES
(1, 'Роман'),
(2, 'Евгений');

 

 

 

Передача GET параметров

 

 

 

ШАГ ВТОРОЙ. PHP.

 

С таблицами мы завершили, теперь перейдем к понимаю принципу реализации передачи GET параметров через адресную строку. Допустим, у нас есть таблица с материалами, у каждого материала есть свой идентификатор id, который имеет название title, категорию cat и автора author. Последние два поля хранятся, в соответствии, с идентификаторами других таблиц cat и author. У таблиц cat и author есть два поля идентификатор id и название title.

Теперь суть в чем, если мы допустим, судя по выше написанным дампам и структурам MySQL каждой таблицы, наберем такую строчку в адресной строке http://сайт.домен/index.php?id=2&cat=2&author=1, то получим полнейшее совпадение и взаимодействие трех таблиц, а именно то, что мы набрали: index.php - файл, ? - знак вопроса, после которого можно прописывать параметры get, id=2 - открываем материал с идентификатором 2 из таблицы materials, а именно Apple, & - обозначение идет как "и", то есть после него еще следуют какой то параметр, cat=2 - открываем категорию с идентификатором 2 из таблицы cat, а именно Компьютеры, далее опять идет "и" &, после которого последний параметр, author=1 - передаем автора с идентификатором 1 из таблицы author, а именно Роман.

 

 

"Теперь, что же у нас получилось: Открываем файл index.php в котором идентификатор материалов равен одному и имеет название Apple, категория у него Компьютеры и автор материала Роман." Переходим к коду и для начала подключимся к базе данных.

 

/* Подключение к базе данных get, 
с логином "root" и пустым паролем ""*/
$db = mysql_connect ("localhost", "root", "");
mysql_select_db ("get", $db);
/* Проверка соединения */
if (!$db) echo mysql_error();

 

Делаем запрос к таблицам и получаем нужные параметры.

 

/* Устанавливаем запрос к таблице materials и выбираем все поля */
$sql = mysql_query("select id, title, cat, author from materials");
$res = mysql_fetch_array($sql);
do
{
/* Выводи ссылку с передаваемыми параметрами id - материала, категории и автора, 
а также название материала*/
echo"<a href='index.php?id=$res[id]&cat=$res[cat]&author=$res[author]'>$res[title]</a>";
}
while($res = mysql_fetch_array($sql));


/* Проверка на глобальные переменные: материала, категории и автора */
if (isset ($_GET['id'])) {$id=$_GET['id']; }
if (!isset($id)) {$id==1;}

if (isset ($_GET['cat'])) {$cat=$_GET['cat']; }
if (!isset($cat)) {$cat==1;}

if (isset ($_GET['author'])) {$author=$_GET['author']; }
if (!isset($author)) {$author==1;}

/* Устанавливаем запрос к таблице материалы и выводим оттуда все 
поля, а также взаимодействии с другими таблицами выводим названии 
категории и авторов, после устанавливаем условие, где id=$id - 
глобальное переменной материалов и проделываем тоже самое для других 
параметров и переменных таблицы cat и author */
$sql_get = mysql_query("select materials.id, materials.title,
(select cat.title from cat where cat.id=materials.cat) as cat,
(select author.title from author where author.id=materials.author) as author
from materials where id=$id and cat=$cat and author=$author");
@$res_get = mysql_fetch_array($sql_get);
do
{
/* Выводим материал, категорию и автора */
echo"
<strong>$res_get[title]</strong><br>
<strong>Категория: </strong>$res_get[cat]<br>
<strong>Автор: </strong>$res_get[author]";
}
while(@$res_get = mysql_fetch_array($sql_get));

 

 

Большое спасибо Вам за внимание, еще раз с наступающим Новым Годом, всего наилучшего! Удачи!