Начнём: есть у меня система регистрации, всё отлично, человек регистрируется, его данные заносятся в БД в таблицу users, но задача усложнилась. Когда пользователь регистрируется ему предлагается огромный выбор, например, языков, т.е. он выбирает языки и уровень познания каждого языка который он знает. Проблема в том, что я не могу распределить данные пользователя.
Я додумался до такого алгоритма:
1. Все данные, кроме выбора языков, отправляются в таблицу users.
2. Данные массива "Языки" имеет такой вид:
- ru=>lev1
- ua=>lev2
- uk=>lev4
3. В базу, в таблицу lang, должны заносится данные по каждому языку. Т.е:
- id | lang | lev
- 1 | ua | lev2
- 2 | uk | lev4
Проблема состоит в том, что я не знаю как при выводе информации о пользователе, указать скрипту, что вот эти данные с таблицы lang относятся к пользователю с id = 89.
ID пользователя создаётся в базе, т.е, перегнать с одной таблицы в другую я не могу.
Думал так же rand() - ом генерировать случайное число и записывать в 2 таблицы, но вдруг они когда-то повторятся ?! Будет не очень хорошо.
Спустя 6 минут, 45 секунд (13.02.2011 - 00:31) Snus написал(а):
Ты когда добавляешь юзверя в таблицу при регистрации, возвращай ID добавленного пользователя и пиши в таблицу с языками. Сложности нет. А вообще я бы тебе посоветовал бы создать отдельную колонку в таблице с юзверями и писать твой массив с языками в нее, используя сериализацию.
Спустя 24 минуты, 32 секунды (13.02.2011 - 00:55) RCuPeR написал(а):
Подскажи, пожалуйста, первый вариант.
Спустя 2 минуты, 39 секунд (13.02.2011 - 00:58) Snus написал(а):
RCuPeR
После твоего запроса INSERT в таблицу юзверей дописывай
И используй этот ID в таблице языков. Но это только если у тебя первичный ключ указан с автоинкрементом.
После твоего запроса INSERT в таблицу юзверей дописывай
$id = mysql_insert_id();
И используй этот ID в таблице языков. Но это только если у тебя первичный ключ указан с автоинкрементом.
Спустя 10 минут (13.02.2011 - 01:08) RCuPeR написал(а):
Да, с AI, но как заставить это функцию понять, что у это пользователя БУДЕТ такой ID ?
Вот смотри, общий запрос для юзера:
Вот запрос на вставку языков:
Где и как нужно использовать функцию mysql_insert_id(); ???
Вот смотри, общий запрос для юзера:
$insert = mysql_query("INSERT INTO `wp_users`
(`user_login`, `user_pass`, `user_email`, `user_nicename`, `user_registered`, `user_age`, `state`, `city`, `user_address`, `user_tel`, `user_skype`, `user_lang`, `working_hours`, `user_level`, `user_post` ,`user_about`)
VALUES
( '". mysql_real_escape_string($login) ."',
'". mysql_real_escape_string($password) ."',
'". mysql_real_escape_string($email) ."',
'". mysql_real_escape_string($name) ."',
'". mysql_real_escape_string($user_registered) ."',
'". mysql_real_escape_string($age) ."',
'". mysql_real_escape_string($state) ."',
'". mysql_real_escape_string($city) ."',
'". mysql_real_escape_string($address) ."',
'". mysql_real_escape_string($tel) ."',
'". mysql_real_escape_string($skype) ."',
'".$value."',
'". mysql_real_escape_string($working_hours) ."',
'". mysql_real_escape_string($level) ."',
'". mysql_real_escape_string($user_post) ."',
'". mysql_real_escape_string($user_about) ."')
")
or die (mysql_error());
Вот запрос на вставку языков:
$lang = mysql_query("INSERT INTO `wp_lang`
(`lang`, `level`)
VALUES
( '". mysql_real_escape_string($lang) ."',
'". mysql_real_escape_string($level) ."')
")
or die (mysql_error());
Где и как нужно использовать функцию mysql_insert_id(); ???
Спустя 5 минут, 43 секунды (13.02.2011 - 01:14) Snus написал(а):
в wp_lang добавь еще одну колонку userId, а после
$id = mysql_insert_id();
$lang = mysql_query("INSERT INTO `wp_lang`
(`userId`,`lang`, `level`)
VALUES
( '".$id."', '". mysql_real_escape_string($lang) ."',
'". mysql_real_escape_string($level) ."')
")
or die (mysql_error());
Спустя 7 минут, 23 секунды (13.02.2011 - 01:21) RCuPeR написал(а):
Большое тебе спасибо. Завтра попробую работоспособность.
_____________
Гнусный социопат с комплексом Бога.