Перенос определенной строки из одной таблицы в другую - MySQL
Формулировка задачи:
Доброго времени суток, я новичок в PHP, поэтому ожидаю, что полетит грязь с камнями. Но столкнулся с такой проблемой. У меня есть таблица в базе, куда вносятся данные с формы, располагаемой на сайте, далее эти данные выводятся сотруднику в таблицу (на его отдельной странице). Теперь сама проблема: есть второй сотрудник, которому, по выбору чекбокса из таблицы данных должна отправиться только та запись, напротив которой стоит галка. На данный момент я достиг того, что при активном чекбоксе идет копирование всех строк, а при деактивированном - не происходит отправки.
Вывод данных сотруднику №1
<?php
mysql_connect("localhost", "root", "")
or die("<p>Ошибка подключения к базе данных" . mysql_error() . "</p>");
mysql_select_db ("amb_db")
or die ("<p>Ошибка выбора базы данных" . mysql_error() . "</p>");
$inser_sql = "INSERT INTO tehnolog_shirka (shirina, visota, kolvo, material, prokleika, luvers, laminat, trosovka, rezka, cvetoproba, srochno, dostavka, skleika)" .
"SELECT shirina_sm, visota_sm, kolvo, materialtest, prokleika, lyvers, laminat, tros, rezka, cvetoproba, srochnost, dostavka, skleika from shirformat ORDER BY id DESC;";
$ban_tkan = $_REQUEST['texnology'];
if ($ban_tkan == 1) {
echo 'Отправлено';
mysql_query($inser_sql);
}
else {
echo 'Вы не выбрали проект';
}
?><?php
// определяем начальные данные
$db_host = 'localhost';
$db_name = 'amb_db';
$db_username = 'root';
$db_table_to_show = 'shirformat';
// соединяемся с сервером базы данных
$connect_to_db = mysql_connect($db_host, $db_username, $db_password)
or die("Could not connect: " . mysql_error());
// подключаемся к базе данных
mysql_select_db($db_name, $connect_to_db)
or die("Could not select DB: " . mysql_error());
// выбираем все значения из таблицы "shirformat"
$qr_result = mysql_query("select * from " . $db_table_to_show)
or die(mysql_error());
//Выбираем материал из таблицы
echo '<div id="tablenav">';
// выводим на страницу сайта заголовки HTML-таблицы
echo '<form action="test.php" method="post"><table>';
echo '<thead>';
echo '<tr>';
echo '<th></th>';
echo '<th colspan="4" class="borders"><h3 class="top">Данные о заказчике</h3></th>';
echo '<th colspan="18"><h3 class="top">Параметры заказа</h3></th>';
echo '</tr>';
echo '<tr>';
echo '<th><p>Дата</p></th>';
echo '<th><p>ФИО клиента</p></th>';
echo '<th><p>Компания</p></th>';
echo '<th><p>Телефон</p></th>';
echo '<th><p>E-mail</p></th>';
echo '<th><p>Ширина</p></th>';
echo '<th><p>Высота</p></th>';
echo '<th><p>Количество</p></th>';
echo '<th><p>Материал</p></th>';
echo '<th><p>Проклейка</p></th>';
echo '<th><p>Шаг люверсовки в см.</p></th>';
echo '<th><p>Ламинация</p></th>';
echo '<th><p>Тросовка</p></th>';
echo '<th><p>Резка</p></th>';
echo '<th><p>Цветопроба</p></th>';
echo '<th><p>Срочная печать</p></th>';
echo '<th><p>Доставка</p></th>';
echo '<th><p>Склейка по ИЗО</p></th>';
echo '<th><p>Интерьерная печать</p></th>';
echo '<th><p>Псевдоинтерьерная печать</p></th>';
echo '<th><p>Скидка</p></th>';
echo '<th><p>Общая площадь</p></th>';
echo '<th><p>Пожелания</p></th>';
echo '<th>Утверждение</th>';
echo '</tr>';
echo '</thead>';
echo '<tbody>';
// выводим в HTML-таблицу все данные клиентов из таблицы MySQL
while($data = mysql_fetch_array($qr_result)){
echo '<tr>';
echo '<td> ' . $data['date'] . '</td>';
echo '<td>' . $data['fio'] . '</td>';
echo '<td>' . $data['company'] . '</td>';
echo '<td>' . $data['tel'] . '</td>';
echo '<td>' . $data['email'] . '</td>';
echo '<td>' . $data['shirina_sm'] . 'см</td>';
echo '<td>' . $data['visota_sm'] . 'см</td>';
echo '<td>' . $data['kolvo'] . 'шт</td>';
echo '<td>' . $data['materialtest'] . '</td>';
echo '<td>' . $data['prokleika'] . '</td>';
echo '<td>' . $data['lyvers'] . '</td>';
echo '<td>' . $data['laminat'] . '</td>';
echo '<td>' . $data['tros'] . '</td>';
echo '<td>' . $data['rezka'] . '</td>';
echo '<td>' . $data['cvetoproba'] . '</td>';
echo '<td>' . $data['srochnost'] . '</td>';
echo '<td>' . $data['dostavka'] . '</td>';
echo '<td>' . $data['skleika'] . '</td>';
echo '<td>' . $data['interier'] . '</td>';
echo '<td>' . $data['psevdointerier'] . '</td>';
echo '<td>' . $data['skidka'] . '</td>';
echo '<td>' . $data['ob_ploshad'] . 'кв.м</td>';
echo '<td>' . $data['pojelaniya'] . '</td>';
echo '<td><input class="checkbox" name="texnology" type="checkbox" value="1" id="texnology"> </td>';
echo '</tr>';
}
echo '</tbody>';
echo '</table><br /><input type="submit"></form>';
echo '</div>';
// закрываем соединение с сервером базы данных
mysql_close($connect_to_db);
?><code lang="php" />Решение задачи: «Перенос определенной строки из одной таблицы в другую»
textual
Листинг программы
$ban_tkan = $_REQUEST['texnology'];
if ($ban_tkan == 1) {
echo 'Отправлено';
$inser_sql = "INSERT INTO tehnolog_shirka (shirina, visota, kolvo, material, prokleika, luvers, laminat, trosovka, rezka, cvetoproba, srochno, dostavka, skleika)" .
"SELECT shirina_sm, visota_sm, kolvo, materialtest, prokleika, lyvers, laminat, tros, rezka, cvetoproba, srochnost, dostavka, skleika from shirformat ORDER BY id DESC;";
mysql_query($inser_sql);
}
else {
echo 'Вы не выбрали проект';
}
?>
Объяснение кода листинга программы
- В первую очередь, предположительно, в переменную
$ban_tkanзаписывается значение, которое было получено через метод$_REQUEST['texnology']. - Затем выполняется проверка: если
$ban_tkanравно 1, то выполняется блок кода, в противном случае - другой блок. - В блоке, который выполняется при условии
$ban_tkan == 1, выводится сообщение 'Отправлено'. - После этого формируется SQL-запрос для вставки данных в таблицу
tehnolog_shirka. В запросе используется функцияINSERT INTO ... SELECT, которая позволяет перенести данные из одной таблицы в другую. - В запросе указываются поля таблицы
tehnolog_shirka, в которые будут вставлены данные, и таблицаshirformat, из которой данные будут взяты. - Запрос сортируется по полю
idв порядке убывания. - Выполняется запрос с помощью функции
mysql_query($inser_sql). - В блоке, который выполняется при условии
$ban_tkan != 1, выводится сообщение 'Вы не выбрали проект'. - В конце кода нет никаких действий или операций, поэтому список можно считать завершенным.