Создаем компонент — пятница, 29 октября 2010-го

Потренируемся создавать запросы

Просмотров: 1466

В колонках звучит: Only The Good Die Young

Итак начнем.

 

SQL запросы на выборку данных:

1.      SELECT * FROM <Имя таблицы>

SELECT * FROM `#__users` -используя, описанные в предыдущем шаге методы класса database выполните запрос.


$query = 'SELECT * FROM `#__users`';


$database->setQuery($query);


$result = $database->loadResultArray(3);


foreach ($result as $row)


{


            echo($row."<br>");


}

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

2.      SELECT <Имя поля1>, <Имя поля2>, …, <Имя поляN> FROM <Имя таблицы>

SELECT `id`, `name`, `username` FROM `#__users`

 


$query = 'SELECT `id`, `name`, `username` FROM `#__users`';


$database->setQuery($query);


$result = $database-> loadAssocList();


foreach ($result as $row)


{


            echo($row['id'].' - '.$row['name'].' - '.$row['username']."<br>");


}

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

3.      SELECT * FROM `Имя таблицы` WHERE `Имя поля`  <  <Параметр>

SELECT * FROM `Имя таблицы` WHERE `Имя поля`  =  <Параметр>

SELECT * FROM `Имя таблицы` WHERE `Имя поля`  >  <Параметр>

            SELECT * FROM `#__users` WHERE `id`<69

 


$query = 'SELECT * FROM `#__users` WHERE `id`<69';


$database->setQuery($query);


$result = $database-> loadAssocList();


foreach ($result as $row)


{


                        echo($row['id'].' - '.$row['name'].' - '.$row['username']."<br>");


}

Отображает данные только тех пользователей, id которых меньше 69. За ключевым словом WHERE идет условие отбора записей. Условие может быть как простым (в прмере), так и сложным.((Имя поля1 < 1) AND (Имя поля2 > 2)).

 

4.      SELECT <Имя таблицы1>.<Имя поля3>, <Имя таблицы2>.<Имя поля4>

FROM <Имя таблицы1>,<Имя таблицы2>

WHERE <Имя таблицы1>.<Имя поля1>=<Имя таблицы2>.<Имя поля2>

SELECT `#__content`.`title`, `#__users`.`id` FROM `#__users`, `#__content`

WHERE `#__users`.`id`= `#__content`.`created_by`

 


$query = 'SELECT `#__content`.`title`, `#__users`.`id`


                                   FROM `#__users`, `#__content`


                                   WHERE `#__users`.`id`= `#__content`.`created_by`';


            $database->setQuery($query);


            $result = $database-> loadAssocList();


            foreach ($result as $row)


            {


                        echo($row['id'].'-'.$row['title']."<br>");


            }         

Отображает список заголовков статей, и идентификатор пользователя, который их создал.

5.      SELECT * FROM <Имя таблицы> LIMIT <целое неотрицательное число>

SELECT * FROM `#__content` LIMIT 5

 


$query = 'SELECT * FROM `#__content` LIMIT 5';


$database->setQuery($query);


$result = $database-> loadAssocList();          


foreach ($result as $row)


{


            echo($row['title']."<br>");


}

            Отобразит значения поля title первых пяти записей таблицы #__content

6.      SELECT * FROM <Имя таблицы>

LIMIT <целое неотрицательное число1>,<целое неотрицательное число2>

SELECT * FROM `#__content` LIMIT 2, 5

 


$query = 'SELECT * FROM `#__content` LIMIT 2, 5';


$database->setQuery($query);


$result = $database-> loadAssocList();          


foreach ($result as $row)


{


            echo($row['title']."<br>");


}

Отобразит значения поля title 5 записей из таблицы #__content, начиная с 2 (Нумеруются записи с нуля)

7.      SELECT * FROM <Имя таблицы> ORDER BY <Имя поля>

SELECT * FROM `#__content` ORFDER BY `modified`

 


$query = 'SELECT * FROM `#__content` ORDER BY `modified`';


$database->setQuery($query);


$result = $database-> loadAssocList();          


foreach ($result as $row)


{


            echo($row['modified'].' - '.$row['title']."<br>");


}

            Выводятся поля значения полей modified и title всех записей таблицы #__content. Сортировка при выводе идет по полю modified.

            SQL запросы на создание, удаление и редактирование таблиц.

1.      CREATE TABLE <Имя таблицы> [(параметры)]

 


$query = 'CREATE TABLE `test` (


                  `id_test` INT NOT NULL ,


                  `test` TEXT NOT NULL ,


                  `description` TEXT NOT NULL ,


                  PRIMARY KEY ( `id_test` )


                  );';


$database->setQuery($query);


if ($database->query()){echo('Успешно');}


else {echo('НЕУспешно');}

Создает таблицу в текущей базе данных с полями id_test (целочисленное, не нуль), test, description (текстовые). Поле id_test – первичный ключ. (Если запрос выполнится, то будет выведена надпись Успешно, Неуспешно в обратном случае.)

2.      ALTER TABLE `test` <параметр>

Основные значения параметра приведены в таблице:

ADD <Имя поля1> <Тип поля>

[FIRST | AFTER <Имя поля2>]

Добавление нового поля в таблицу

Конструкция FIRST добавляет новое поле перед столбцом <Имя поля2>. Конструкция AFTER добавляет поле после поля <Имя поля2>.

ADD INDEX [<Имя индекса>]

(<Имя поля1>, …)

Добавление индекса для поля <Имя поля1>. Если имя индекса не указано, то ему присваивается имя совпадающее с именем поля.

ADD PRIMARY KEY

(<Имя поля1>, …)

Делает поле <Имя поля1> первичным ключом таблицы.

CHANGE <Старое имя поля>

<Новое имя поля> <Тип поля>

Изменение поля <Старое имя поля> на поле <Новое имя поля> с типом <Тип поля>

DROP <Имя поля>

Удаление поля

DROP PRIMARY KEY

Удаление первичного ключа таблицы

DROP INDEX <Имя индекса>

Удаление индекса

 

Например отредактируем таблицу test, созданную ранее. Удалим у неё поле description.


$query = 'ALTER TABLE `test` DROP `description`';


$database->setQuery($query);


if ($database->query()){echo('Успешно');}


else {echo('НЕУспешно');}

3.      DROP TABLE <Имя таблицы>


$query = 'DROP TABLE `test`';


$database->setQuery($query);


if ($database->query()){echo('Успешно');}


else {echo('НЕУспешно');}

Удаление таблицы test.

            SQL запросы на вставку, редактирование и удаление данных в таблицах.

1.      INSERT INTO <Имя таблицы> VALUES (<Значение1>, …)


$query = 'INSERT INTO `mdo_message` VALUES (1,"text", 1,1,1)';


$database->setQuery($query);


if ($database->query()){echo('Успешно');}


else {echo('НЕУспешно');}

2. INSERT INTO <Имя таблицы> (<Имя поля1>, …) VALUES (<Значение1>, …)


                        $query = 'INSERT INTO `mdo_message` (`message`) VALUES ("text")';


                        $database->setQuery($query);


                        if ($database->query()){echo('Успешно');}


                        else {echo('НЕУспешно');}

            Вставляет запись в таблицу mdo_message. Значения всех полей кроме message устанавливаются по умолчанию.

2.      DELETE FROM <Имя таблицы> WHERE <Усвловие>


$query = 'DELETE FROM `mdo_message` WHERE `id_message`<1000';


      $database->setQuery($query);


      if ($database->query()){echo('Успешно');}


      else {echo('НЕУспешно');}

Из таблицы mdo_message будут удалены все записи у которых значение поля id_message меньше 1000.

 

Итак на этом шаге мы рассмотрели основные виды SQL запросов. Рассмотрели несколько примеров использования их в Joomla. На следующем шаге мы опишем разработку реакции на нажатие подпункта меню Наша доска->Просмотр и удаление объявлений.

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Если вы уже зарегистрированы как комментатор или хотите зарегистрироваться, укажите пароль и свой действующий email.

(При регистрации на указанный адрес придет письмо с кодом активации и ссылкой на ваш персональный аккаунт, где вы сможете изменить свои данные, включая адрес сайта, ник, описание, контакты и т.д.)



(обязательно)