powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Разнести данные по таблицам
12 сообщений из 12, страница 1 из 1
Разнести данные по таблицам
    #38456925
serebr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, не знала как коротко обозначить тему.

Суть в том, что в базе данных создается временная таблица, в которую не администратор имеет право вносить данные, по окончании ввода оных, данные разносятся по двум таблицам, в которых автоматически заполняются соответствующие id-поля, и вот эти-то id мне нужно внести в четвертую таблицу.

Во временной в строке вносятся данные ФИО ребенка и ФИО родителя (+ еще пару полей).
Каждая строка делится и они отправляются каждый в свою табличку, а вот только что созданные id, должны попасть в последнюю таблицу и тут я буксую...
Понимаю что неправильно сделала последний Select и его тоже надо каким-то образом зациклить, но что-то никак не соображу что же делать???

Помогите, пожалуйста.

Код: php
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.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
<?php
mysql_query ("set character_set_client='cp1251'");
mysql_query ("set character_set_results='cp1251'");
mysql_query ("set collation_connection='cp1251_general_ci'");
  //Подключаемся к БД
  $host = "localhost";
  $name = "root";
  $password = "";
  $db = "children";
  @mysql_connect($host,$name,$password) or die(mysql_error());
  @mysql_select_db($db) or die(mysql_error());
  
 
 	 //Извлечение данных из временной таблицы vvod_child_parent и перемещении их в таблицы
	 //children и parents
if($_POST['yes'])//При нажатии кнопки "Да"
{
	$result = mysql_query("SELECT * from children_perents_vrem");
		while ($row = mysql_fetch_array($result))
		{
			$last_name_chl = $row['last_name_chl'];
			$first_name_chl = $row['first_name_chl'];
			$middle_name_chl = $row['middle_name_chl'];
			$birthday_chl = $row['birthday_chl'];
			$number_group = $row['number_group'];
			$last_name_prn = $row['last_name_prn'];
			$first_name_prn = $row['first_name_prn'];
			$middle_name_prn = $row['middle_name_prn'];
			$phone_prn = $row['phone_prn'];
			
					
	 
		mysql_query("INSERT INTO children (last_name_chl, first_name_chl, middle_name_chl, birthday_chl, number_group)
			   VALUES ('$last_name_chl', '$first_name_chl', '$middle_name_chl', '$birthday_chl', '$number_group')");
		mysql_query("INSERT INTO parents (last_name_prn, first_name_prn, middle_name_prn, phone_prn)
			   VALUES ('$last_name_prn', '$first_name_prn', '$middle_name_prn', '$phone_prn')");
   		
		$select = mysql_query("SELECT id_child, id_parent from children, parents");
			$stroka=mysql_fetch_array($select);
			$id_child = $stroka['id_child'];
			$id_parent = $stroka['id_parent'];							
		mysql_query("INSERT INTO child_parent (id_child, id_parent) VALUES ('$id_child', '$id_parent')");
		}
}
?>
<!--=============================================================================-->
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1251">
<title>База данных "Дети"</title>
</head>

<body bgcolor=#99CCC>
<h3>Вы действительно завершаете ввод данных?</h3><!--Заголовок HTML-->
<b>После завершение вы уже не сможете редактировать ранее введенные данные!!!</b>
<table>
<td>
<form method='post' action="">
<input type=submit name="yes" value="Да"/>
</form>
</td>
<td>
<form method='post' action='vvod_child_parent.php'>
<input type=submit name="no" value="Нет"/>
</form>
</td></table>

</body>
</html>



...
Рейтинг: 0 / 0
Разнести данные по таблицам
    #38456933
serebr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, забыла написать, БД в mysql, временная таблица на следующем шаге очищается.
В моем коде данные в последнюю таблицу вносятся только из первой строки, а надо по циклу от первой до последней из только что введенных (а не вообще из 2 и 3 таблиц в целом)

Модератор: Не понятно, каким тут боком PHP/Perl. Вы уверены что со структурой БД все в порядке? Возможно, топик следует перенести в "Проектирование БД". Или в профильный форум по MySQL, если проблема только в запросе.
...
Рейтинг: 0 / 0
Разнести данные по таблицам
    #38460866
serebr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Модератору виднее, переносите... может и с самой БД что-то не так, я же не профессионал, который ломает голову над какой-то головоломкой, а среднестатистический студент ))
...
Рейтинг: 0 / 0
Разнести данные по таблицам
    #38460959
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serebr,


Что-то тут понакручено странное. Вашу операцию легче провести 2 путями:
1) через реализацию на уровне триггеров
2) через вызов хранимой процедуры

P.S. Вообще выполнять бизнес логику на клиенте без контроля целостности БД (я контроля пока не увидел, может ТС что-то недоговаривает?) в многопользовательской среде чревато.
...
Рейтинг: 0 / 0
Разнести данные по таблицам
    #38460978
serebr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster, я пока никакую проверку на вводимые данные не делала, копаюсь со всем остальным, проверку буду довешивать везде позднее.
Подскажите как именно это можно реализовать? Я ни с триггерами ни с хранимыми процедурами не работала? Откуда начинать копать и в какую сторону лучше?
...
Рейтинг: 0 / 0
Разнести данные по таблицам
    #38461005
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serebr,

У вас (глядя на диаграмму) есть связка id_child<->id_parent. Вы выполняете insert в две таблицы, а потом пытаетесь установить соотношение id_child<->id_parent между ними. Причем каким-то хитросделанным способом, организуя в запросе декартово произведение ;)

Вопросы:
- зачем там только INSERT? Данные обновлятся не могут разве?
- зачем там декартово произведение? Вы действительно желаете узнать, кто мог бы стать отцов Вовы Сидорова, если б звезды сложились иначе?
- зачем временная таблица, какую смысловую нагрузку она несет? Почему нельзя сделать (грубо) 2 формы и спросить - введите данные о ребенке, введите данные о родителе и сохранить или обновить информацию.
...
Рейтинг: 0 / 0
Разнести данные по таблицам
    #38461018
serebr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster, во временную таблицу вносит данные обычный вожатый, в процессе ввода данных, пока он не закрыл сессию, он может эти данные редактировать, вносить новые данные, удалять уже введенные. После того как он заканчивает сеанс, введенные им данные разлетаются по разным таблицам, а временная опустошается и вожатый больше не может редактировать данные, он сможет только получать выборки из таблиц.

Про "только INSERT" - это пока "только", просто я еще не вставила проверку на то существует ли уже такой ребенок/родитель в БД.

И я не хочу узнать кто мог бы стать потенциальным родителем ребенка, в этом у меня и проблема, я не знаю как организовать эту часть ввода данных ((
...
Рейтинг: 0 / 0
Разнести данные по таблицам
    #38461045
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serebr,

1) Представь, что у тебя в процессе работы вожатого что-то поломалось - комп. завис, или к Инету в гости пришел пушистый зверек. А он уже навводил во временную таблицу 100500 детей/родителей. Что делать будешь? - это о временной таблице
2) Чтобы не гадать, "кто же папа?" - достаточно сделать такую выборку:
Код: sql
1.
2.
3.
4.
     select child.id_child,parent.id_parent
     from child_to_parent
     left join child on (child.id_child=child_to_parent.child_id)
     left join parent on (parent.id_parent=child_to_parent.parent_id)


3) Что-то топик все дальше и дальше уходит от PHP - тебе сначала в профильные форумы по БД надо...
...
Рейтинг: 0 / 0
Разнести данные по таблицам
    #38461051
serebr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster, пыталась и в профильные обратиться, а они как видят <? дальше видимо и не читают, сюда отправляют ))

Временная она только по названию, для себя я ее так обозначила, а так она вполне себе реальная, данные туда вносятся сразу, а обнуляются только после разнесения их по нужным мне таблицам ...

И к сожалению, я видимо невнятно сформулировала свою проблему, мне не нужна данная выборка, у меня последняя табличка не заполнена. Я не знаю как грамотно ее заполнить (( У меня же во "временной" таблице нет id-ребенка и id-родителя! (тот id-ребенка что имеется к ним отношения не имеет :-), он служит совсем для других целей)
...
Рейтинг: 0 / 0
Разнести данные по таблицам
    #38461095
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serebr,

1) Раздели свой вопрос на 2 - "как правильно спроектировать БД", и "как мне с этой БД сделать следующее"
2) Если у тебя во временной/третьей/левой таблице нет однозначных связей с уже существующими/заполненными таблицами - у тебя в этой таблице мусор, который можно "занести" куда угодно. Вот я пишу на листике "Вася" - что дальше я должен делать? Кто или что это - "Вася"? В общем - марш в профильный форум. С картинкой и без <?...?> чтобы поняли и прочитали.
...
Рейтинг: 0 / 0
Разнести данные по таблицам
    #38462616
serebr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DarkMaster, спасибо за то что потратили на меня время.
Не знаю насколько все учла, но пока сделала так и на мой взгляд работает ))

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
select children.id_child, parents.id_parent from 
(children_perents_vrem
right outer join children
on (children_perents_vrem.last_name_chl = children.last_name_chl)
) 
right outer join parents
on (children_perents_vrem.last_name_prn = parents.last_name_prn)
;
...
Рейтинг: 0 / 0
Разнести данные по таблицам
    #38462650
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
serebr,

Да и на здоровье. Надеюсь, вы учти при разработке структуры БД советы, которые вам дали здесь и в профильном форуме.

Модератор: Тема перенесена из форума "PHP, Perl, Python".
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Разнести данные по таблицам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]