SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 06.12.2008 18:53:03

Ундина
Участник
Зарегистрирован: 06.12.2008
Сообщений: 8

Неправильно передается id

Здравствуйте. У меня такой вопрос. Есть две таблицы - клиенты и договоры. После того как добавляешь клиента появляется форма для добавления договора, и, соответственно, в таблице договоров есть поле user_id, которое должно показывать к какому клиенту относятся конкретные договоры. Но у меня при добавлении договора передается id либо первого созданного клиента, либо, наоборот, последнего. Что-то я делаю не так, а что не могу понять. Вот кусочек кода:
$sql = "select user_id from ".$user_prefix."_users";
    $result = $db->sql_query($sql);
    while ($row = $db->sql_fetchrow($result)) {   
    $uid = $row[user_id];
    $uid = trim($uid);
      if (!$result = $db->sql_query("INSERT INTO ".$user_prefix."_users_dogovors (dogovor_id, user_id, user_numberdogovor, user_data, user_dataend, user_uslugi, user_uslugione, user_zena, user_sbor, user_uslovia, user_coments) VALUES (NULL, '$uid', '$add_user_numberdogovor', '$add_user_data', '$add_user_dataend', '$add_user_uslugi', '$add_user_uslugione', '$add_user_zena', '$add_user_sbor', '$add_user_uslovia', '$add_user_coments')")) {   
      return;
    }
    }
Подскажите что не так.

Неактивен

 

#2 07.12.2008 03:21:25

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Неправильно передается id

Приведенный Вами код делает что-то малопонятное наподобие обновления всех договоров.

Как Вы определяете id клиента, к которому будет принадлежать добавляемый договор?

Неактивен

 

#3 07.12.2008 09:53:01

Ундина
Участник
Зарегистрирован: 06.12.2008
Сообщений: 8

Re: Неправильно передается id

Этот код не обновляет договоры, а именно создает новый, вернее сохраняет, сама форма для добавления у меня отдельно. А вот в определении id компании у меня и проблема, я никак не пойму как правильно его определить и передать в таблицу договоров.

Неактивен

 

#4 07.12.2008 11:46:03

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Неправильно передается id

select user_id from ".$user_prefix."_users - проблема вот в этом. Этот запрос всегда
вытаскивает всех пользователей. Соответственно, этот кусок кода добавляет по
договору для каждого клиента.

Вообще, я бы делал немного по-другому (простите, что не в ОО-нотации, но как уж
привык):

mysql_query ("INSERT INTO users (...) VALUES (...)");
$userid = mysql_insert_id();
mysql_query ("INSERT INTO agreements (...) VALUES (..., $userid, ...)");

Неактивен

 

#5 07.12.2008 12:00:44

Ундина
Участник
Зарегистрирован: 06.12.2008
Сообщений: 8

Re: Неправильно передается id

Для всех клиентов созается договор если убрать $result в if (!$result = $db->sql_query("INSERT INTO ".$user_prefix."_users_dogovors (...) VALUES (...)")) {   
      return;
    }
а так создается договор для первого созданного клиента...

А что значит
mysql_query ("INSERT INTO agreements (...) VALUES (..., $userid, ...); ?

Неактивен

 

#6 07.12.2008 12:20:06

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Неправильно передается id

Я там немножко опечатался (кавычку-скобку забыл), подправил smile

return я пропустил. Да, тогда Вы добавляете договор действительно для одного произвольного
пользователя из таблицы, а не для всех.

В моем случае - это значит "добавить договор для последнего созданного пользователя".

Неактивен

 

#7 07.12.2008 12:29:55

Ундина
Участник
Зарегистрирован: 06.12.2008
Сообщений: 8

Re: Неправильно передается id

А для последнего созданного пользователя договор у меня добавлялся если переставить фигурную скобку в выражениии while.smile Мне нужно немного не то... Мне нужно, чтбы в любое время можно было создать договор, для любого клиента, вне зависимости от того, какой клиент был создан последним/первым.

Неактивен

 

#8 07.12.2008 12:38:45

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Неправильно передается id

Ну, для того, чтобы создать договор для определенного пользователя, нужно понять,
что значит "определенный". Если Вам известен user_id этого пользователя, то задача
уже решена. Если Вам известно что-то другое, то нужно найти user_id по этому чему-то
другому (SELECT user_id FROM users WHERE что-то другое). Честно говоря, не пойму,
в чем тогда задача состоит smile

Неактивен

 

#9 07.12.2008 13:03:54

Ундина
Участник
Зарегистрирован: 06.12.2008
Сообщений: 8

Re: Неправильно передается id

Как мне правильно передать этот id клиента? Его же сначала надо вытащить из таблицы клиентов, а потом записать в таблицу договоров, вот я и пытаюсь понять что у меня в коде не так. Вроде я так и делаю... Я понимаю, что задаю глупые вопросы, я только начала изучать mysql, но проблему мне эту надо решить в любом случае.smile

Неактивен

 

#10 07.12.2008 13:12:21

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Неправильно передается id

Какие данные у Вас есть о клиенте? Что его идентифицирует? По каким данным Вы
собираетесь конкретному клиенту создавать договор? Это фамилия-имя? Номер
паспорта? Что-то еще?

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

Неактивен

 

#11 07.12.2008 13:20:23

Ундина
Участник
Зарегистрирован: 06.12.2008
Сообщений: 8

Re: Неправильно передается id

Его идентифицирует поле user_id, такое же поле есть и в таблице договоров, нужно чтобы значение этих полей в обеих таблицах были одинаковые.
Я пробовала сделать запрос вот так:
$sql = "select user_id from ".$user_prefix."_users where user_id=$user_id";
Но тогда вобще договор не добавляется.

Неактивен

 

#12 07.12.2008 13:28:39

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Неправильно передается id

Ага, Вы таки увлеклись реализацией smile Вы делаете запрос вида
"Скажи мне названия овощей в корзине, если известно, что это огурец".
Достаточно просто использовать знание, что у Вас есть огурец.

Если у Вас уже есть user_id, то его уже не нужно ниоткуда получать smile

Неактивен

 

#13 07.12.2008 13:42:42

Ундина
Участник
Зарегистрирован: 06.12.2008
Сообщений: 8

Re: Неправильно передается id

Ну что же мне надо сделать, а?smile

Неактивен

 

#14 07.12.2008 13:46:25

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Неправильно передается id

Ничего не надо делать, у Вас уже есть user_id. Просто добавляете новый договор с ним.
db->sql_query("INSERT INTO ".$user_prefix."_users_dogovors (dogovor_id, user_id, user_numberdogovor, user_data, user_dataend, user_uslugi, user_uslugione, user_zena, user_sbor, user_uslovia, user_coments) VALUES (NULL, '$user_id', '$add_user_numberdogovor', '$add_user_data', '$add_user_dataend', '$add_user_uslugi', '$add_user_uslugione', '$add_user_zena', '$add_user_sbor', '$add_user_uslovia', '$add_user_coments')"))

Неактивен

 

#15 07.12.2008 14:10:37

Ундина
Участник
Зарегистрирован: 06.12.2008
Сообщений: 8

Re: Неправильно передается id

Тогда в поле user_id таблицы договоров заносится вобще 0...

Неактивен

 

#16 08.12.2008 00:53:36

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Неправильно передается id

Это значит лишь то, что $user_id у вас равен 0.

Где-то ранее в коде у вас ошибка (в месте присвоения значения переменной). Откуда берется значение переменной $user_id?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson