MySQL дублирует информацию

Алия

Новичок
На самом деле, не знаю, как сформулировать вопрос. Я только учусь. На локальном хосте делаю сайт, так - экспериментирую. Там есть форма, где пользователь может вводить информацию. Проблема в том, что информация дублируется. Я настроила редирект на другую страницу - в этом случае создается брешь, а в БД сохраняются пустые ячейки. Если информацию вводить через БД, тоже получается дубль.

Когда создавала таблицу, везде проставила NOT NULL. В первичном ключе (id) ставила NULL, AUTO INCREMENT. Но почему в php myadmin в графе null галочка так и не появилась, то есть у id такие же настройки, как и у остальных значений. Переделывала несколько раз.

У меня стоит Open Server. Настройки по умолчанию.
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Автоинкремент не может быть null по определению, на то он и автоинкремент.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Нихрена не понятно. Проблемный кусок кода в студию.
 

Алия

Новичок
Нихрена не понятно. Проблемный кусок кода в студию.
Кусок кода в PHP вот:


<?php $result = mysql_query ("SELECT * FROM poetry_list");
while($myrow = mysql_fetch_array($result))
{
echo '<p><pre><h2>'.$myrow ['title'].'</h2><br><br>'. $myrow ['author'].'<br><br>'.$myrow ['art'].'<br><br>'.$myrow ['yourname'].'<br/></p></pre>';
}
?>

На счёт самой БД. Проверила в adminer - не дублирует. Дублирует только phpmyadmin и собственно форма на сайте.
 

Вурдалак

Продвинутый новичок
Алия, это печально известные видеокурсы одного мошенника, который делает деньги на людях, которые попались на его удочку в надежде стать программистом за неделю. Сам этот человек является абсолютно некомпетентным и я рекомендую найти другой источник знаний.
 

Алия

Новичок
Алия, это печально известные видеокурсы одного мошенника, который делает деньги на людях, которые попались на его удочку в надежде стать программистом за неделю. Сам этот человек является абсолютно некомпетентным и я рекомендую найти другой источник знаний.

Всё остальное мне там нравится. Возможно, ещё дело в том, что я смотрела без звука))) Наушников при себе не было. Может он говорил "нет смысла нажимать на эту кнопку")))
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Алия, потрудитесь прочитать книгу по php. До того момента все наши разговоры здесь считаю преждевременными. Вы не понимаете что делаете.
 

Алия

Новичок
Алия, потрудитесь прочитать книгу по php. До того момента все наши разговоры здесь считаю преждевременными. Вы не понимаете что делаете.
Да, возможно Вы правы. Пока только в процессе чтения Котерова. Ещё читала Маклафина - объясняет хорошо, но там ошибки вводят в заблуждение и теории мало.

Просто захотелось попробовать) Поторопилась.

Какую, кстати, книгу порекомендуете?
 

флоппик

promotor fidei
Команда форума
Партнер клуба
Котеров слегка подустарел, но все еще весьма хорош.
Маклафина скачал, посмотрел по диагонали, и советую выкинуть и не читать его.

А вообще: http://phpfaq.ru/start, http://phpfaq.ru/docs
 

Алия

Новичок
Проблему частично решила:

"SELECT * FROM poetry_list WHERE art != ''"

Теперь дубли есть, но они мне не мешают. Буду дальше изучать - может получше решение найду.

Спасибо вам!
 

WMix

герр M:)ller
Партнер клуба
SELECT * FROM poetry_list WHERE art != ''" это не дубли, или это дубли в базе!
 

Алия

Новичок
SELECT * FROM poetry_list WHERE art != ''" это не дубли, или это дубли в базе!
От дублей я не нашла как избавиться. Но они появляются только в случае добавления через phpmyadmin.

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

WMix

герр M:)ller
Партнер клуба
мне кажется лучше разобраться почему появляются дубли, а ты выискиваешь способ как их отфильтровать
 

Алия

Новичок
И всё-таки я поняла, в чём ошибка. В процессе написания, я экспериментировала разными способами и забыла удалить лишний подключенный файл, дублирующий запрос о вставке данных. Удалила, убрала привязку - ничего не дублируется, всё работает.
 

DiMA

php.spb.ru
Команда форума
Могу и ошибаться, т.к. к мускулю прикасался последний раз очень давно... Но, чтобы вставить новую строку в таблицу, где есть инкрементное поле, нужно либо не указывать это поле в запросе, либо присвоить ему NULL. И база сама вместо NULL вставит новый номер по порядку, а не NULL или не ошибку.

id - auto increment, not null, primary key
INSERT INTO table (id, value) VALUES (NULL, "test")

ведь нет же никакого другого специального слова, чтобы указать в VALUES - "вставь сюда инкремент"
 
Сверху