|
|
|
| Всем доброго суток времени!
У меня проблема состоит в том, что я в БД добавляю одновременно 1 запись в одну таблицу(тему например) а в другую таблицу другую запись(само сообщение). И мне надо id узнать токо что добавленной темы чтобы занести id темы в таблицу(сообщения) потому что сообщения принадлежат токо определенной теме(то есть у меня сделана принадлженость по id)! Поле id (int11)auto_increment ключевое. Я знаю что можно сделать так: добавить тему а потом просто выяснить какая самая последняя тема по дате но так как то глупо - может функция какая нибудь есть?
Вот код который я написал:
<?
$comment = addslashes($_POST['comment']);
$topic = addslashes($_POST['topic']);
$comment = str_replace("\r\n\r\n", "\r\n", $comment);
$author = addslashes($_SESSION['login']);
$query_add = "INSERT INTO topics (topic,
author, login_id, insert_date) VALUES
('$topic', '$author', \"".
addslashes($_SESSION['id_login'])."\", \"".
date("Y:m:d H:i:s")."\")";
mysql_query ($query_add);
if (mysql_errno() != 0)
{
echo "<p>Произошла ошибка при добавлении темы";
}
else
{
//Определение id темы
$query_id = "SELECT * FROM topics
ORDER BY id_topic DESC LIMIT 1";
$result_id = mysql_query ($query_id)
or die("Неправильный запрос : " .
mysql_error());
if (mysql_num_rows ($result_id) == 0)
{
echo "Ошибка";
}
else
{
$row_id = mysql_fetch_object($result_id);
$id_t = $row_id->id_topic;
}
$query_ad = "INSERT INTO comments
(comment, author, login_id, topic_id,
insert_date) VALUES ('$comment', '$author',
\"".addslashes($_SESSION['id_login'])."\",
'$id_t', \"".date("Y:m:d H:i:s")."\")";
mysql_query ($query_ad);
if (mysql_errno() != 0)
{
echo "<p>Произошла ошибка при добавлении темы!";
}
else
{
echo "<p>Ваша тема успешно добавлена</p>";
echo "<p><A HREF='index.php?act=viewtopic&t=".$id_t."'
>Просмотреть добавленную тему</A></p>";
}
}
?>
|
Буду рад если поможете! | |
|
|
|
|
|
|
|
для: Buhen
(08.12.2007 в 19:58)
| | Сразу после запроса в таблицу (после записи), которая у вас определяет ID тем, делайте запрос:
$id_t = mysql_insert_id(); | |
|
|
|
|
|
|
|
для: sim5
(08.12.2007 в 20:03)
| | Большое спасибо! | |
|
|
|
|
|
|
|
для: sim5
(08.12.2007 в 20:03)
| | А если нужно узнать id будущей записи? Как тогда быть? | |
|
|
|
|
|
|
|
для: kis-kis
(03.01.2008 в 20:13)
| | Id будущих записей узнать невозможно, поскольку несколько запросов добавления могут следовать паралельно.
Узнать можно лишь id записи только что добавленной. | |
|
|
|
|
|
|
|
для: Trianon
(03.01.2008 в 20:37)
| | Можно ведь узнать последний id отдельным запросом и прибавить к нему 1? Тогда в принципе получим будущий. Правильно? | |
|
|
|
|
|
|
|
для: kis-kis
(03.01.2008 в 20:40)
| | Нет, неправильно.
Потому что в процессе добавления единицы и использования получившегося числа может пройти еще к примеру 3-5 запросов на добавление. | |
|
|
|
|
|
|
|
для: Trianon
(03.01.2008 в 20:55)
| | А как тогда лучше поступить? | |
|
|
|
|
|
|
|
для: kis-kis
(03.01.2008 в 21:10)
| | sim5 (08.12.2007 в 20:03) уже сказал: mysql_insert_id() | |
|
|
|
|
|
|
|
для: Trianon
(03.01.2008 в 20:55)
| | - | |
|
|
|
|
|
|
|
для: Trianon
(03.01.2008 в 20:55)
| | У Вас нет идей? )) | |
|
|
|
|
|
|
|
для: kis-kis
(04.01.2008 в 15:49)
| | Вы прикидываетесь? mysql_insert_id() | |
|
|
|
|
|
|
|
для: kis-kis
(04.01.2008 в 15:49)
| | Когда у меня спрашивают "Как лучше забить гвоздь?" , я обычно отвечаю "Молотком".
И не боюсь показаться неоригинальным, если до меня этот способ тоже кто-то предложил.
Хотя, таки да, можно пытаться применять почти любой твердый и тяжелый предмет.
Но поймите - лучше не будет. Будет только хуже. | |
|
|
|