Здравствуйте, у меня вот такой вопрос: есть бд, в ней есть таблица вида: №|Докладчик|Вопросы|Проверяющий|Год Нужно сделать кнопку "Скопировать на следующий год", при этом во всей таблице поле год должно меняться на следующий (соответственно: был 2012 - стал 2013), а предыдущий вариант этой таблицы должен отправляться в архив. Собственно вопрос - как это сделать? С тем как поменять год во всей таблице понятно, не понятно как отправить в архив и как вообще лучше реализовать такой архив?
Делаешь такую-же табличку архив: №|Докладчик|Вопросы|Проверяющий|Год Кнопкой "скопировать" извлекаешь данные из таблицы с докладами, отправляешь без изменений в табличку с архивом и загоняешь обратно в табличку с докладами, изменив при этом год. Или же в этой табличке с докладами сделай еще одно поле "|Архивный год". Кнопкой "скопировать" меняешь "Год", и в "Архивный год" отправляешь предыдущий год. А когда на сайте выбираешь из этой таблички данные - проверяешь, существует ли у определенной записи "Архивный год". Если да - значит эта запись "заархивированна"
А Можно ли просто создать еще одну бд с названием, ну например "Архив", и, чтобы эта таблица создавалась там с тем годом, с которым она была первоначально?) Или вы это и имели ввиду?)
Хмм, а как в коде это примерно реализовать? Ну например, была у нас табличка Work_Plan, мы ее перенесли и в бд Архив должна появится такая же заполненная табличка с именем Work_Plan_2012. Просто я только начинаю "программировать" на php и не знаю как это реализовать
Хмм, ну а как тогда сделать в той же бд такую же табличку, но с именем Work_Plan_2012, и чтобы в этой табличке менялся при этом год)
Через PhpMyAdmin я могу создать таблицу это понятно, но мне нужно чтобы у меня при нажатии на кнопку создавалась таблица вида: Имя_Таблицы_(архивный год), при этом я не знаю сколько лет(ну в теории) будут использовать это приложение, то есть создать заранее таблицы на каждый год через MyAdmin не вариант)
НУ да, логично, если там будет год, извините за тупку. А как программно сделать так чтобы все туда переносилось?
Ну базу данных можно создать через phpMyAdmin, опять же. А переносить так: Код (PHP): if(кнопочка "скопировать записть с номером id" нажата){ SELECT * FROM табличка с докладами WHERE id=номер доклада INSERT INTO архив (Докладчик, Вопросы, Проверяющий, Год) VALUES (значения извлеченные из таблички с докладами); UPDATE табличка с докладами SET год=2013 WHERE id=номер доклада }
INSERT INTO `table_1` (`field_1_1`, `field_1_2`, `field_1_3`) SELECT (`field_2_1`, `field_2_2`, `field_2_3`) FROM `table_2` WHERE (УСЛОВИЯ) И Т.Д.
Попробовал сделать, как-то я неправильно составил запрос + косяк где-то с кнопкой, т.к. я новичок, пока не смог разобраться. При нажатии на кнопку ничего не происходит, код выглядит вот так: Код (PHP): <html> <head> <title></title> <link href="style.css" rel="stylesheet" type="text/css" /> </head> <div id="container"> <? include "Header.html"; include "SideBar.html"; ?> <body bgcolor="#FFFFFF" text="#000000"> <center mm_ta_src="dede"> <h2>Подготовка новых лекционных курсов</h2> </center> <? /* Соединяемся с базой данных */ $hostname = "localhost"; // название/путь сервера, с MySQL $username = "root"; // имя пользователя (в Denwer`е по умолчанию "root") $password = ""; // пароль пользователя (в Denwer`е по умолчанию пароль отсутствует, этот параметр можно оставить пустым) $dbName = "Diplom"; // название базы данных /* Таблица MySQL, в которой хранятся данные */ $table = "Podgotovka_Lekc_Kursov1"; $table1 = "Podgotovka_Lekc_Kursov1_archiev"; /* Создаем соединение */ mysql_connect($hostname, $username, $password) or die ("Не могу создать соединение"); // в какой кодировке получать данные от клиента @mysql_query('set character_set_client="utf8"'); // в какой кодировке получать данные от БД для вывода клиенту @mysql_query('set character_set_results="utf8"'); // кодировка в которой будут посылаться служебные команды для сервера @mysql_query('set collation_connection="utf8_general_ci"'); /* Выбираем базу данных. Если произойдет ошибка - вывести ее */ mysql_select_db($dbName) or die (mysql_error()); /* Если была нажата кнопка редактирования, вносим изменения */ if(@$_REQUEST['copy']) { $query = "INSERT INTO $table2 ( `FIO`, `CourseName`, `Hours`, `Semestr`, `Year`) SELECT (`FIO`, `CourseName`, `Hours`, `Semestr`, `Year`) FROM $table UPDATE $table SET Year = Year+1"; /* Выполняем запрос. Если произойдет ошибка - вывести ее. */ mysql_query($query) or die (mysql_error()); } /* Заносим в переменную $res всю базу данных */ $query = "SELECT * FROM $table"; /* Выполняем запрос. Если произойдет ошибка - вывести ее. */ $res = mysql_query($query) or die(mysql_error()); /* Узнаем количество записей в базе данных */ $row = mysql_num_rows($res); if($query) { // таблица и заголовок echo "<table border=1>"; echo "<tr><td><b>ФИО</b></td><td><b>Наименование Курсов</b></td><td><b>Объем часов</b></td><td><b>Семестр</b></td><td><b>Год</b></td></tr>"; // Так как запрос возвращает несколько строк, применяем цикл while($row=mysql_fetch_array($res))// берем результаты из каждой строки { echo "<tr><td>".$row['FIO']."   </td> <td>".$row['CourseName']." </td><td>". $row['Hours']." </td><td>".$row['Semestr']." </td><td>".$row['Year']." </td></tr>"; } echo "</table>"; } else { echo "<p><b>Error: ".mysql_error()."</b><p>"; exit(); } ?> <form action="3_edit.php" method="post" name="edit_form"> <input type="submit" class="buttons" value="Редактировать" /> </form> <input type="submit" class="button" name="copy" value= "Скопировать базу на следующий год" /> <? include "Footer.html"; ?> </div> </body> </html> Если кто что подскажет - буду благодарен, пока сижу - разбираюсь)
Код (PHP): $query = "INSERT INTO $table2 ( `FIO`, `CourseName`, `Hours`, `Semestr`, `Year`) SELECT (`FIO`, `CourseName`, `Hours`, `Semestr`, `Year` + 1) FROM $table";
Собственно оказалось, что не работает, точнее работает но 1 раз так как потом пишет что ID повторяется. Вопрос: как сделать так чтобы копировалось все кроме ID, а ID давался новый каждой записи, даже если они повторяются.
Код (PHP): $query = "INSERT INTO $table2 ( `FIO`, `CourseName`, `Hours`, `Semestr`, `Year`) SELECT (`FIO`, `CourseName`, `Hours`, `Semestr`, `Year`) FROM $table"; Вот так вот не работает
Что то странный запрос у тебя попробуй убрать скобки SELECT `FIO`, `CourseName`, `Hours`, `Semestr`, `Year`