Архив метки: таблица БД

Запрос SQL для добавления записи в БД

Запрос SQL для добавления записи в таблицу БД.

Общий вид  запроса

INSERT INTO имя таблицы (поле1, поле2) VALUES (‘данные поля1’,’данные поля2’)
или
INSERT INTO имя таблицы SET поле1=‘данные поля1’, поле2=’данные поля2’

Пример запроса

INSERT INTO fruit (Name, color) VALUES (‘apple’,’green’);

Рабочий пример листинга использования запроса на добавления (MySql + php.)

/* Соединяемся с базой данных */
$hostname = "localhost"; // название/путь сервера, с MySQL
$username = "root"; // имя пользователя
$password = ""; // пароль пользователя (если пароль отсутствует, этот параметр можно оставить пустым)
$dbName = "test"; // название базы данных
 /* Таблица MySQL, в которой хранятся данные */
$table = "test_table";
 /* Создаем соединение */
mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение");
/* Корректный вывод русских букв */
mysql_query('SET NAMES cp1251') or header('Location: Error');
/* Выбираем базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die (mysql_error());
/* Запрос на добавление */
  $query = "INSERT INTO
   	     $table
	    SET
	     dolzhnost='$dolz',
	     inn='$inn',
	     fullnameorg='$fname',
	     fio='$fioname',
	     date='$cdate',
	     yuradres='$yuradress',
	     factadres='$fadress'
  	   ";
/* Выполняем запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die(mysql_error());
/* В случае успешного сохранения выводим сообщение и ссылку возврата */
echo ("<div style=\"text-align: center; margin-top: 10px;\">
<font color=\"green\">Данные успешно отправлены!</font>
<a href=\"index.php\">Вернуться назад</a></div>");
header("Location: /eoz/index.php");
        exit;
};
/* Закрываем соединение */
mysql_close();)

Также можно посмотреть:

Пример запроса SQL на обновления поля в таблице БД

Пример технологии доступа к данным DAO

Начальные условия:

Использование технологии доступа к данным DAO в Microsoft Access.
Язык Microsoft Visual Basic for Applications.

Пример реализации на основе формы ниже на картинке. Необходимо при нажатии кнопки бронировать, в таблице комнат, у выбранного номера комнаты поставить статус бронирован.

Форма бронирования

Для добавления кода необходимо перейти в окно свойств кнопки (Правой кнопкой мыши по необходимой кнопке в режиме конструктора —> Свойства). Вкладка События. Нажать кнопку с многоточием напротив текста Нажатие кнопки. Затем выбрать из списка пункт «Программы» и нажать ОК.

Попадаем в программную среду Microsoft Visual Basic for Applications, как на рисунке ниже

Visual Basic
Вставляем следующий код:

rem Если Ошибка выходим 
On Error GoTo Err_Кнопка15_Click
 Dim er
 er = False

Dim rs As DAO.Recordset
Dim strSql As String
rem Создаем текст запроса 
    strSql = "SELECT [Состояние], [Number Ap] FROM House;"
rem Подключаем БД и выполняем запрос с помощью DAO
    Set rs = DBEngine(0)(0).OpenRecordset(strSql)

rem Проверка на пустые поля в Форме
If (IsNull([Фамилия])) Then
    er = True
    MsgBox "Необходимо Заполнить поле Фамилия ", vbCritical
    GoTo Exit_Кнопка15_Click:
   End If
   If (([Срок]  [Дата прибытия])) Then
        er = True
        MsgBox "Некорректные даты ", vbCritical
        GoTo Exit_Кнопка15_Click:
   End If
   If ((IsNull(Срок)) Or (IsNull([Дата прибытия]))) Then
    er = True
    MsgBox "Даты необходимо заполнить ", vbCritical
    GoTo Exit_Кнопка15_Click:
   End If
rem работаем с БД, проходим по всем записям таблицы
If (Not (er)) Then
    Do While Not rs.EOF
           rem ищем нашу комнату
           If rs![Number Ap] = [ID Номер Апарт] And (Not (IsNull([Фамилия]))) Then
                rem редактируем запись в таблице
                rs.Edit
                rs![Состояние] = "бронирован"
                rs.Update
            Else
            End If
     rs.MoveNext
    Loop
    rs.Close
End If
rem здесь точки выхода из программы
    Set rs = Nothing
   Me.Dirty = False
   DoCmd.Close acForm, Me.Name
Exit_Кнопка15_Click:
    Exit Sub
Err_Кнопка15_Click:
   MsgBox Err.Description, vbCritical
   Resume Exit_Кнопка15_Click

Вывод каталога используя smarty

Smarty ШаблонизаторИтак необходимо реализовать вывод каталога с подкаталогами неограниченной вложенностью, используя шаблонизатор smarty.

Один из способов:

1. Прежде чем начать необходимо иметь таблицу в нашей БД с необходимыми данными. К примеру как на рисунке ниже.

Таблица MySql для реализации вывода каталогов2. Теперь пишем необходимый php код в файле index.php
в комментариях необходимые пояснения

require('../libs/Smarty.class.php'); //подключение smarty

include "authBD.php"; //в этом файле подключаем БД

$smarty = new Smarty; // создаем объект шаблонизатора

// создаем текст запроса для выборки из нашей БД
$query = "select * from category"; 

// делаем выборку и заносим в массив
$result_table  = mysql_query($query) or die(mysql_error());
$rows_array=array();
while ($row=mysql_fetch_array($result_table))
   $rows_array[]=$row;

//формируем дерево из выборки
 $cat_tree=select_to_array_tr($rows_array); 

//создаем переменную для нашего дерева каталогов
$smarty->assign('cat1', $cat_tree);

//вызываем шаблон
$smarty->display('index.tpl');

3. Формирования дерева из массива выборки

Функция не использует рекурсию, основана на ссылках, в child хранятся подкаталоги если они есть у родителя.

Листинг

function select_to_array_tr($arr,$mk='Id_cat',$sk='Id_parent',$child='child')
{  // если нет создаем
    if(!$arr) {
        return array();
    }

    $mas = array();
    $l = count($arr); //кол-во элементов в массиве
    for($i = 0; $i < $l; $i++) {
        $mas[ $arr[$i][$mk] ] = &$arr[$i];
    }
    // child - массив дочерних каталогов
    foreach($mas as $k => $v) {
        $mas[ $v[$sk] ][$child][] = &$mas[$k];
    }

    $res = array();
    foreach($arr as $v) {
        if(isset($v[$sk]) && $v[$sk] == 0) {
            $res[] = $v;
        }
    }
//возвращаем готовый массив
     $arr = $res;
    return $arr;
}

необходимо добавить ее в наш файл index.php перед ее вызовом.

4. Необходимо отредактировать шаблон index.tpl, он находится в папке templates.

Листинг шаблона index.tpl

<ul>
{foreach item='ListTree' from=$cat1}
{* вывод корневых каталогов *}   
     <li>{$ListTree.Name}    </li>
{* вывод подкаталогов используется рекурсия шаблонов *}
    {if count($ListTree.child)>0}
        {include file='ListTree.tpl' object=$ListTree}
    {/if }    
{/foreach}
</ul>

5. Затем создадим файл ListTree.tpl со следующим кодом(ниже) и сохраним в папке templates. Этот шаблон будет вызываться для всех дочерних каталогов.

Листинг шаблона ListTree.tpl

<ul>
{foreach item='ListTree' from=$object.child}
{* вывод корневых каталогов *}
     <li>{$ListTree.Name}    </li>
{* вывод подкаталогов используется рекурсия шаблонов *}
    {if count($ListTree.child)>0}
        {include file='ListTree.tpl' object=$ListTree}
    {/if }
{/foreach}
</ul>

Результат получается такой

Вывод каталога используя Smarty

SQL запрос на изменение данных в таблице БД

SQL Запрос на изменение данных UPDATEИзменение значений полей в таблице

Чтобы изменить значение в поле в таблице БД необходимо выполнить запрос UPDATE.

Общий синтаксис запроса UPDATE

UPDATE [LOW_PRIORITY] имя_таблицы
    SET название_поля1=выражение1,название_поля2=выражение2,...
    [WHERE условное_выражение] [LIMIT количество_записей]

UPDATE заменит значения текущих полей таблицы на новые значения.
SET устанавливает какие поля изменять и новые значения, которые нужно присвоить этим полям.
WHERE (если необходимо) — условие на изменение определенных записей. Если WHERE не указан, изменены будут все записи.
При указании параметра LOW_PRIORITY, выполнение UPDATE задержится пока другие клиенты читают таблицу.

Пример запроса на изменение всех записей поля «apple» таблицы «fruit» на определенное значение

UPDATE fruit SET apple=5;

Пример запроса с WHERE который изменяет определенную запись:

UPDATE tovar SET price=500 WHERE id=5

При изменении значения поля можно использовать его текущее значение.
Пример запроса увеличивающего значение поля price в 2 раза:

UPDATE tovar SET price=price*2;

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

UPDATE tovar SET price=price*2, price=price-10;

Запрос UPDATE возвратит количество полей, которые были изменены в этом запросе.
Использование LIMIT позволит изменять заданное количество записей.