регистрация и автоматическое создание таблиц в базе
Здравствуйте!
подскажите идею, как реализовать при регистрации создание нескольких таблиц в базе mysql ?
при регистрации логин, пароль, наименование учреждения(одинаковых нет).
будет около 10 таблиц(разных по структуре), не взаимодействующих между собой.
у каждого зарегистрировавшегося будут свои 10 таблиц, но данные у каждого свои, т. е. зашёл под своим логином и на сайте видит только свои 10 таблиц(у других точно такие же таблицы, но со своими данными), которые может заполнять.
может так реализовать к примеру, одна таблица называться «один», вторая «два» и т. д.
мысль такая, зарегился и создаются автоматом таблицы «один» +»наименование учреждения», «два» +»наименование учреждения», «три» +»наименование учреждения»:
«одиннаименование учреждения»
«дванаименование учреждения»
«тринаименование учреждения»
и так 10 таблиц
Спасибо!
Автоматическое создание таблиц
Есть таблица успеваемость студентов, содержит ФИО студента, и предметы там русский, физика и т.д.
Автоматическое создание таблиц из наименований таблиц, имен полей, типов полей
Форумчане, доброго времени суток! Есть таблица в которую автоматом выгрузили имена всех таблиц.
Создание базы данных на лету, создание и заполнение таблиц в базе DB (Paradox? или..).
Здравствуйте Профи! — Видел я "простенькую" (exe-шник небольшого размера, запускается сразу.
Динамическое создание таблиц в базе
Всем добрый день или ночь! Сразу скажу что я новичок на вашем форуме и прежде чем сюда попасть.
вот второй день сижу, не могу понять в чём дело, что за ошибку выдаёт? то базы нет, то кавычек не хватает, везьде по разному ответы, сам с инглишь плохо. вот вставил код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
if (!empty($myrow['id'])) { exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин."); } // если такого нет, то сохраняем данные $result2 = mysql_query ("INSERT INTO users (login,password,name) VALUES('$login','$password','$name')"); // Проверяем, есть ли ошибки if ($result2=='TRUE') { $id = mysqli_insert_id($db);//последний добавленный ид mysqli_query($db, "CREATE TABLE IF NOT EXISTS `test_$id` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. Главная страница"; } else { echo "Ошибка! Вы не зарегистрированы."; }
в базу пароль и id логин заносит
но вот ошибки выдаёт
Warning: mysqli_insert_id() expects parameter 1 to be mysqli, resource given in Z:\home\organizer\www\save_user.php on line 34
Warning: mysqli_query() expects parameter 1 to be mysqli, resource given in Z:\home\organizer\www\save_user.php on line 39
Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. Главная страница
подскажите в чём ошибка, как исправить, спасибо!
Добавлено через 1 минуту
34 срока
$id = mysqli_insert_id($db);//последний добавленный ид
39 строка
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;»);
Вы в итоге используете mysql или mysqli( i на конце). Их смешивать нельзя. Приведите все функции для работы с БД к одному виду, лучше будет если mysqli
второй день мучаюсь, не могу понять в чём проблема, выдаёт ошибку, в инете разные ответы
1 2 3 4 5 6 7 8 9 10 11 12
Warning: mysqli_insert_id() expects parameter 1 to be mysqli, resource given in Z:\home\organizer\www\save_user.php on line 34
Warning: mysqli_query() expects parameter 1 to be mysqli, resource given in Z:\home\organizer\www\save_user.php on line 39
Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. Главная страница
34 строка
$id = mysqli_insert_id($db);//последний добавленный ид
39 строка
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;»);
в базу ид. логин и пароль заносит.
спасибо!
$db = mysql_connect('localhost', 'root', ''); mysql_select_db('dbname');
?))) Обратите внимание Вы в первом запросе используете функцию mysql_query() а дальше почему то mysqli_query, mysqli_inser_id
куда то пропадают ответы, успел про mysqli прочитать, убрал «i»
1 2 3 4 5 6 7 8 9 10 11 12
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in Z:\home\organizer\www\save_user.php on line 39
Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. Главная страница
Добавлено через 1 минуту
понял, наоборот надо, счас «i» везде добавлю, спасибо
Warning: mysqli_query() expects parameter 1 to be mysqli, string given in Z:\home\organizer\www\save_user.php on line 24
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in Z:\home\organizer\www\save_user.php on line 25
Warning: mysqli_query() expects at least 2 parameters, 1 given in Z:\home\organizer\www\save_user.php on line 30
Ошибка! Вы не зарегистрированы.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
if (isset($_POST['login'])) { $login = $_POST['login']; if ($login == '') { unset($login);} } //заносим введенный пользователем логин в переменную $login, если он пустой, то уничтожаем переменную if (isset($_POST['password'])) { $password=$_POST['password']; if ($password =='') { unset($password);} } if (isset($_POST['name'])) { $name=$_POST['name']; if ($name =='') { unset($name);} } //заносим введенный пользователем пароль в переменную $password, если он пустой, то уничтожаем переменную if (empty($login) or empty($password) or empty($name)) //если пользователь не ввел логин или пароль, то выдаем ошибку и останавливаем скрипт { exit ("Вы ввели не всю информацию, вернитесь назад и заполните все поля!"); } //если логин и пароль введены, то обрабатываем их, чтобы теги и скрипты не работали, мало ли что люди могут ввести $login = stripslashes($login); $login = htmlspecialchars($login); $password = stripslashes($password); $password = htmlspecialchars($password); $name = stripslashes($name); $name = htmlspecialchars($name); //удаляем лишние пробелы $login = trim($login); $password = trim($password); $name = trim($name); // подключаемся к базе include ("bd.php");// файл bd.php должен быть в той же папке, что и все остальные, если это не так, то просто измените путь // проверка на существование пользователя с таким же логином $result = mysqli_query("SELECT id FROM users WHERE login='$login'",$db); $myrow = mysqli_fetch_array($result); if (!empty($myrow['id'])) { exit ("Извините, введённый вами логин уже зарегистрирован. Введите другой логин."); } // если такого нет, то сохраняем данные $result2 = mysqli_query ("INSERT INTO users (login,password,name) VALUES('$login','$password','$name')"); // Проверяем, есть ли ошибки if ($result2=='TRUE') { $id = mysqli_insert_id($db);//последний добавленный ид mysqli_query($db, "CREATE TABLE IF NOT EXISTS `test_$id` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;"); echo "Вы успешно зарегистрированы! Теперь вы можете зайти на сайт. Главная страница"; } else { echo "Ошибка! Вы не зарегистрированы."; } ?>
24, 25 строки
$result = mysqli_query(«SELECT id FROM users WHERE login=’$login'»,$db);
$myrow = mysqli_fetch_array($result);
30 строка
$result2 = mysqli_query («INSERT INTO users (login,password,name) VALUES(‘$login’,’$password’,’$name’)»);
знаю, что позно, но если не трудно, подскажите где опять ошибка
Добавлено через 2 минуты
сам не заметил, Вашего ответа, спасибо, заработало!
Добавлено через 2 минуты
понимаю код, но с синтаксисом проблема, умею чужим пользоваться, а вот сам не могу пока! С наступающим!
Добавлено через 11 часов 2 минуты
А что опять не так? Ваша таблица создаётся на УРА!
mysql_query( "CREATE TABLE IF NOT EXISTS `test_$id` ( `id` int(11) NOT NULL AUTO_INCREMENT, `title` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;");
а моя ни в какую(AUTO_INCREMENT мне не нужен, там будет мною введённый инвентарный номер)
mysql_query("CREATE TABLE IF NOT EXISTS `inventarizacia_$id` ( `number` text NOT NULL, `title` text NOT NULL, `kolichestvo` int(3) NOT NULL, `kabinet` text NOT NULL, PRIMARY KEY (`number`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
У меня вопрос, а зачем Вам поле number текстовое? Таблица наверняка не создается что вы пытаетесь присвоить первичный ключ ячейке, не ограниченной по длине. Если все же нужно текстовое поле то попробуйте вот так
CREATE TABLE IF NOT EXISTS `inventarizacia_$id` ( `number` VARCHAR(255) NOT NULL, `title` text NOT NULL, `kolichestvo` INT(3) NOT NULL, `kabinet` text NOT NULL, PRIMARY KEY (`number`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- -- Структура таблицы `users` -- CREATE TABLE IF NOT EXISTS `users` ( `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, `username` VARCHAR(255) NOT NULL, `password` VARCHAR(32) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `username` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
define('DB_HOST', 'root'); define('DB_USER', 'root'); define('DB_PASS', ''); define('DB_NAME', 'dbname'); $db = mysqli_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); mysqli_query($db, "SET CHARSET UTF8"); if($_SERVER["REQUEST_METHOD"] === 'POST') { $username = trim($_POST["username"]); $password = trim($_POST["password"]); if(!empty($username) and !empty($password)) { $username = mysqli_real_escape_string($db, $username); $password = md5($password); if(mysqli_query($db, "INSERT INTO `users`(`username`,`password`) VALUES(' ',' ')")) { $id = mysqli_insert_id($db); mysqli_query($db, "CREATE TABLE IF NOT EXISTS `user_data_ ` ( `id` int(11) NOT NULL DEFAULT ' ', `login` varchar(30) NOT NULL DEFAULT ' ', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;"); header("Location: /"); exit; } } } ?> html> head> meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> head> body> form action="" method="POST"> label>Ваше имя:label>br /> input type="text" name="username" />br /> label>Пароль:label>br /> input type="password" name="password" />br /> button>Регистрацияbutton> form> body> html>
текстовое нужно, потому что там инвентарный номер может быть такой 101.6.2870, и поиск потом думаю лучше будет если точки учитывать, спасибо за помощь!
если я не прав, то скажите как лучше, чтоб потом не исправлять.
Добавлено через 2 минуты
спасибо, с регистрацией разобрался, вот надо таблицы на автомате создавать, потом выводить их на экран, каждая в своей вкладке, и кнопки редактирования добавить.
Добавлено через 2 часа 23 минуты
теперь не получается вывести все записи, подскажите ошибку пожалуйста
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
include ("bd.php"); // там в файле bd.php $db = mysql_connect ("localhost","root",""); // mysql_select_db ("organizer",$db); //$id = $_SESSION['id']; // вот тоже думаю нужно ли. // SQL-запрос $strSQL = "SELECT * FROM inventarizacia_id"; //проверка на ошибку $result = mysql_query($strSQL); if(!$result) { echo "Возникла ошибка - ".mysql_error()."
"; echo $strSQL; exit(); } // Выполнить запрос (набор данных $rs содержит результат) $rs = mysql_query($strSQL); // Цикл по recordset $rs // Каждый ряд становится массивом ($row) с помощью функции mysql_fetch_array while($row = mysql_fetch_array($rs)) { // Записать значение столбца FirstName (который является теперь массивом $row) echo $row['number']; echo $row['title']; echo $row['kolichestvo']; echo $row['kabinet'] . "
"; } ?>
Возникла ошибка — Table ‘organizer.inventarizacia_id’ doesn’t exist
SELECT * FROM inventarizacia_id