X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> Почему размножаются записи в таблице MySQL, При вставке из скрипта иногда вставляет 1 запись, а иногда - 3 шт.
Eugene_hb
Eugene_hb
Topic Starter сообщение 10.6.2009, 3:01; Ответить: Eugene_hb
Сообщение #1


Ситуация.
Имеется таблица articles. В ней поля - id, caption и т.д.
Еще имеется таблица articles_links, в которой нужно организовать перекрестные ссылки между записями из первой таблицы. Таблица articles_links содержит поля id, article_id, linked_article_id. id - это просто ключевое поле (auto increment), article_id и linked_article_id содержат соответственно id "родительской" статьи и id статьи, на которую в родительской нужно поставить ссылку. Для каждой родительской, соответственно, можно чтобы было неограниченное количество дочерних.

Так вот, есть php файл, в котором:
CODE

elseif ($a_mode == "linkeditor")
{
// тут всякая чепуха - выводим кучу текста и прочего

// далее идет форма:
echo "<form method=\"get\" action=\"$action_php_file\">";

// ...тут прописано построение комбо-бокса со списком статей из БД...

echo "<input type=\"hidden\" name=\"category\" value=\"$a_cateуgory\">";
echo "<input type=\"hidden\" name=\"mode\" value=\"linknew\">";
echo "<input type=\"hidden\" name=\"id\" value=\"$a_id\">";
echo "<input type=\"submit\" name=\"link\" value=\"$btn_name_save\">";

// На этом форма заканчивается

И чуть ниже в этом же файле:
CODE

elseif ($a_mode == "linknew")
{
// Тут проверяем все ли правильно передали

$query = "INSERT INTO $db_table_articles_links
(article_id, linked_article_id)
VALUES ($article_id, $article_linked_id)";
$sql = mysql_query($query) or die(mysql_error());

// Ну и дальше проверяем удачно ли добавилось
}


Так вот, в результате работы этого иногда в таблицу articles_links добавляется (как и правильно) всего одна запись, содержащая необходимые ссылки. А иногда целых 3 штуки абсолютно одинаковых (ну кроме поля id - там просто порядковые числа у них будут).
Судорожно трижды кнопку "Сохранить" я не нажимаю, чтобы запрос аж 3 раза отправить. И, причем, никакой логики - когда 1, а когда 3 записи появится тоже нет: на одной и той же статье при связывании ее с другой (тоже одинаковой в обоих случаях) сейчас появится одна запись, а в следующий раз уже 3 штуки.
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 11.6.2009, 1:58; Ответить: ZiTosS
Сообщение #2


EugeneM, что за переменная $a_mode? Случаем не GET?
По какому пути переходим и с какими дополнительными параметрами?

Попробуйте на всякий пожарный, все исполняемые скрипты перенести выше первых выводов на экран. И сразу как добавилась запись перебросить пользователя, чтобы сбросить GET параметры.
header("location: {$_SERVER['PHP_SELF']}");
exit();


Больше толком пока сказать ничего не могу, возможно дело в ваших проверках и скрипт выполняется даже тогда когда get параметры не переданы, хотя это вряд ли.
И я бы вам посоветовал передавать POST а не GET. Возможно проблема в том, что затем вы переходите на страницу у которой уже заведомо get параметры приняли значения из формы.

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Услуги по созданию и доработке скриптов PHP, MySQL, JavaScript, jQuery
Разработка сайтов и сервисов под-ключ
0 alexey 1170 24.11.2023, 14:46
автор: alexey
Открытая тема (нет новых ответов) Web программирование на С/С++/PHP/MySQL/SQL, высоконагруженные проекты
Есть наработки в области бирж трафика, топов, тизеров, видео cj-тубов
4 DFService 3336 8.4.2020, 18:02
автор: DFService
Открытая тема (нет новых ответов) Тема имеет прикрепленные файлыПочему нельзя давать рекламу на бренд?
6 Bilish 1311 12.1.2020, 13:47
автор: BLIK
Открытая тема (нет новых ответов) Почему стоит выбрать именно Berileads?
2 leadkreditrf 1820 27.11.2019, 12:39
автор: -leadkreditrf-
Открытая тема (нет новых ответов) Верстка, php + mysql, недорого
3 devprojectlab 2637 28.10.2019, 18:53
автор: Mukis


 



RSS Текстовая версия Сейчас: 28.3.2024, 22:39
Дизайн