Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
 Аватар для posthuman
10 / 10 / 2
Регистрация: 26.09.2009
Сообщений: 93

Занесение данных запросом в Бд сразу в 2 таблицы

15.03.2011, 10:48. Показов 1685. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Вот хотел бы узнать, как выполнить один интересный момент.
Имеется 2 таблицы в бд mysql: user[ id(int(3)), fio(varchar(50)), id_prof(int(3))] и prof [id_prof(int(3)),prof(varchar(50)].
В окне браузера имеется поле ввода фамилии и выбор профессии полем select.
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
<form action="new_test.php" method="post">
<p>Ф.И.О.&nbsp;<input name="fio" id="fio" type="text" maxlength="50" size="50">&nbsp;
<?php
    $change_prof = ''; 
    $select_prof = mysql_query('SELECT * FROM prof');
    while ($result = mysql_fetch_assoc($select_prof)) {
        $change_prof .= "<option value=\"{$result['id_prof']}\">{$result['prof']}</option>";
    }
    echo "<td><select name=\"change_prof\">$change_prof</select></td>";
?>&nbsp;<input name="submit" type="submit" value="Добавить">
<p class="style1">*Если нужной Вам профессии нет в списке, можете добавить с помощью формы ниже</p>
</form>
Организация занесения информации в БД:
PHP
1
2
3
4
5
6
7
8
9
10
11
<?php
if (isset($_POST['fio'])) {$fio = $_POST['fio']; if($fio == '') {unset($fio);} }
if (isset($_POST['id_prof'])) {$id_prof = $_POST['id_prof']; if($id_prof == '') {unset($id_prof);} }
if (isset($fio) && isset($id_prof)) {
    $result = mysql_query ("INSERT INTO user (fio,id_prof) VALUES ('$fio', '$id_prof') LEFT JOIN prof ON user.id_prof=prof.id_prof");
    if ($result == 'true') { echo "<p>Вы успешно добавили нового пользователя.</p>";}
    else {echo "<p>Новый пользователь не добавлен.</p>";}
}
    else
    { echo "<p>Вы ввели не всю информацию, поэтому пользователь не может быть добавлен в базу данных.</p>";}
?>
Но почему то данные не заносятся. Хотелось бы чтобы в таблицу user заносилось fio и id_prof (цифра). Как это удобнее организовать?? Возможно ошибка где то в запросе.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.03.2011, 10:48
Ответы с готовыми решениями:

Добавление данных в 2 таблицы PHP запросом
Вобщем проблема такая, нужно добавить принятые POST методом данные в 2 таблицы сразу, конструкция $query = &quot;INSERT INTO namet...

Занесение в ячейку сразу несколько позиций и извлечение, как лучше сделать?
Задача следующая, есть таблица, в которой есть поле, к примеру «пункты», в это поле требуется ввести несколько значений - номера id из...

Одним запросом сразу несколько лимитов по категориям?
можно ли выполнить одним запросом сразу несколько лимитов по категориям? Например мне нужно вытянуть из базы 10 записей категории А и 20...

8
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
15.03.2011, 10:52
Цитата Сообщение от posthuman Посмотреть сообщение
и выбор профессии полем select
Форма профессию возвращает в виде номера или строки? Если в виде номера, то таблицу prof и не надо вообще трогать... только в user добавь.
0
 Аватар для posthuman
10 / 10 / 2
Регистрация: 26.09.2009
Сообщений: 93
15.03.2011, 10:56  [ТС]
Добавлено через 54 секунды
Возвращает в виде строки. Находит эту строку в таблице prof.prof находит prof.id_prof этой строки. и этот id_prof заносится в таблицу user.
0
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
15.03.2011, 11:07
По твоему же коду получается, что в $_POST['id_prof'] приходит цифра. Именно номер профессии, а не название. Поэтому и заносить надо просто:
PHP
1
$result = mysql_query ("INSERT INTO user (fio,id_prof) VALUES ('$fio', '$id_prof')");
Только не забывай экранировать спецсимволы в $fio... и $id_prof приводи к целому типу:
PHP
1
2
if (isset($_POST['fio'])) {$fio = addslashes($_POST['fio']); if($fio == '') {unset($fio);} }
if (isset($_POST['id_prof'])) {$id_prof = (int)$_POST['id_prof']; if($id_prof == 0) {unset($id_prof);} }
0
 Аватар для posthuman
10 / 10 / 2
Регистрация: 26.09.2009
Сообщений: 93
15.03.2011, 11:12  [ТС]
Я это пробовал, ну и только что еще раз повторил. Все равно fail.
0
 Аватар для __PION__
960 / 801 / 85
Регистрация: 21.07.2010
Сообщений: 3,522
15.03.2011, 12:05
может в этот массив
Цитата Сообщение от posthuman Посмотреть сообщение
isset($_POST['id_prof'])
передавать значение селекта - change_prof
1
 Аватар для posthuman
10 / 10 / 2
Регистрация: 26.09.2009
Сообщений: 93
15.03.2011, 15:42  [ТС]
Попробовал, ни ошибки, ни результата.
Если сделать вот так, то информация нормально заносится в бд. Фактически ошибка в строке получения id_prof.
Добавлено через 11 минут
PHP
1
2
3
4
5
6
7
8
9
if (isset($_POST['fio'])) {$fio = addslashes($_POST['fio']); if($fio == '') {unset($fio);} }
$id_prof=1;
if (isset($fio) && isset($id_prof)) {
    $result = mysql_query ("INSERT INTO user (fio,id_prof) VALUES ('$fio', '$id_prof')");
    if ($result == 'true') { echo "<p>Вы успешно добавили нового пользователя.</p>";}
    else {echo "<p>Новый пользователь не добавлен.</p>";}
}
    else
    { echo "<p>Вы ввели не всю информацию, поэтому пользователь не может быть добавлен в базу данных.</p>";}
PHP
1
if (isset($_POST['$result["id_prof"]'])) {$id_prof = (int)$_POST['$result["id_prof"]']; if($id_prof == 0) {unset($id_prof);} }
0
Почетный модератор
 Аватар для Humanoid
11556 / 4351 / 452
Регистрация: 12.06.2008
Сообщений: 12,454
15.03.2011, 15:47
В форме у тебя
HTML5
1
<select name="change_prof">
А принимаешь $_POST['id_prof']
Проверяй не id_prof, а change_prof:
PHP
1
if (isset($_POST['change_prof'])) {$id_prof = (int)$_POST['change_prof']; if($id_prof == 0) {unset($id_prof);} }
И что у тебя там был за $_POST['$result["id_prof"]'] ?
1
 Аватар для posthuman
10 / 10 / 2
Регистрация: 26.09.2009
Сообщений: 93
15.03.2011, 15:52  [ТС]
Спасибо. заработало.
PHP
1
if (isset($_POST['change_prof'])) {$id_prof = (int)$_POST['change_prof']; if($id_prof == 0) {unset($id_prof);} }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.03.2011, 15:52
Помогаю со студенческими работами здесь

Автоматическое занесение данных из поля формы Access в поле таблицы
Задание такое: Дана БД , есть таблица Building, в ней поле Wear. Создана форма. поле формы wear вычисляется автоматически (задано с...

Добавление данных сразу в 2 таблицы
Суть в следующем, есть 2 таблицы: Группы(ид_группы, имя_группы) и Места(ид_места, номер_места, статус_места) необходимо реализовать...

Выборка данных из таблицы запросом на основании поля формата [Дата/время]
Доброго времени суток. На основании таблицы с разнообразными данными создал перекрёстный запрос которым необходимо выбрать и посчитать...

Как SQL запросом получить список полей таблицы текущей базы данных?
Пробую получить поля таблицы текущей базы данных. Нашёл пример: SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE...

Люди как создать в базе данных отчёт определённого человека из таблицы, а не всех сразу!
Нужна помощь, есть задание, начал делать базу и столкнулся с проблемой как сделать ее именно под такое задание....вроде не сложно но не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru