Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/18: Рейтинг темы: голосов - 18, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 26.07.2012
Сообщений: 3

php форма для mysql - заносятся одинаковые данные в строки БД

26.07.2012, 13:37. Показов 3569. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Cразу скажу опыта у меня почти ноль, написал форму для заполнения данных в базе mysql
Проблема состоит в том что в базу данных вносятся одинаковые строки, сделал проверку чтобы проверяло перед записью в базу о наличии данных, но все равно скрипт пишет данные в таблицу.

БД: mysql
база данных - spamlist
в ней одна таблица - whitelistsender, с одним единственным полем adress (varchar)

код скрипта - spamlist.php

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<html>
<head><title>Spamlist</title></head>
<body>
<?php
$hostname = "localhost";
$username = "spaml";
$password = "123456";
$dbname = "spamlist";
$dbtable = "whitelistsender";
 
$connect = @mysql_connect($hostname, $username, $password) OR DIE("Error Mysql");
mysql_select_db($dbname, $connect) or die("Error connect");
 
$adress = $_POST['adress'];
 
if(isset($_POST['adress'])) {
if ($_POST['adress'] == '') {
    echo 'Вы не указали адрес!<br>';
    }
}
 
$checkadress=mysql_query("SELECT * FROM whitelistsender WHERE adress='$adress'");
if(mysql_num_rows($checkadress)!=0);
{
echo 'Такой адрес уже существует<br>';
}
$sql=mysql_query("INSERT IGNORE INTO $dbtable (adress) VALUES ('$adress')");
$result=mysql_query($sql);
//if(mysql_num_rows($checkadress)!=0)
{
echo 'Адрес добавлен успешно<br>';
}
 
mysql_close();
?>
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
Введите адрес: <input type="text" name="adress" value="<?=$adress?>"> <br>
<input type="submit" name="submit" value="Добавить">
</form>
</body>
</html>
Вопрос как сделать чтобы во время проверки при совпадении данных данные не вносились в базу данных????
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.07.2012, 13:37
Ответы с готовыми решениями:

При нажатии "ОК" данные заносятся в таблицу, форма для добавления должна закрыться, и появиться сообщение
Проблема в следующем: Есть форма Справочники, на ней dbgrid, при нажатии на кнопку Добавить открывается форма для добавления записи, при...

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

Форма: как сделать используя данные таблицы из поля со списком, данные второго поля заносятся автоматически
Добрый день уважаемые форумчане! Разрабатывается база по учету трудозатрат. 1.В таблицу заносится поле должностей и поле со...

8
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
26.07.2012, 13:43
Цитата Сообщение от future3000 Посмотреть сообщение
PHP
1
2
3
4
5
if(mysql_num_rows($checkadress)!=0);
{
echo 'Такой адрес уже существует<br>';
}
$sql=mysql_query("INSERT IGNORE INTO $dbtable (adress) VALUES ('$adress')");
так все верно.
по вашему коду, независимо от того, есть уже такой или нет - все равно добавлять.
перед $sql=mysql_query.... добавьте else

Добавлено через 55 секунд
Цитата Сообщение от future3000 Посмотреть сообщение
if(mysql_num_rows($checkadress)!=0);
и вот это можно заменить на просто
PHP
1
if(!mysql_num_rows($checkadress))
Добавлено через 24 секунды
и точка с запятой после условия не ставится
1
19 / 19 / 4
Регистрация: 12.07.2012
Сообщений: 92
26.07.2012, 14:00
а еще проще сделать поле adress в БД уникальными и просто проверять выполнение инсерта.

PHP
1
2
3
4
5
6
7
8
if($sql=mysql_query("INSERT IGNORE INTO $dbtable (adress) VALUES ('$adress')"))
{
echo 'Адрес добавлен успешно<br>';
}
else
{
echo 'Такой адрес уже существует<br>';
}
1
0 / 0 / 0
Регистрация: 26.07.2012
Сообщений: 3
26.07.2012, 14:06  [ТС]
KOPOJI - Большое спасибо!!! а то я уже голову поломал за целый день, все заработало!

Добавлено через 1 минуту
Еще вопрос а как можно сделать чтобы когда поле "Введите адрес:" пустое, данные не вносились в базу, а то у меня пустая строка вносится без проблем.
0
19 / 19 / 4
Регистрация: 12.07.2012
Сообщений: 92
26.07.2012, 14:22
PHP
1
2
3
4
5
6
7
8
9
if(isset($_POST['adress'])) {
   $adress = $_POST['adress'];
   if(!empty($adress)){
        //выполняем все что нам надо
   }
   else {
        echo "Введенный адрес пустой!";
   }
}
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
26.07.2012, 14:37
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<html>
<head><title>Spamlist</title></head>
<body>
<?php
if(isset($_POST['submit'])) {
$hostname = "localhost";
$username = "spaml";
$password = "123456";
$dbname = "spamlist";
$dbtable = "whitelistsender";
 
$connect = mysql_connect($hostname, $username, $password) OR DIE("Error Mysql");
mysql_select_db($dbname, $connect) or die("Error connect");
$adress = mysql_real_escape_string(stripslashes(trim($_POST['adress'])));
 
if(empty($_POST['adress'])) {
    echo 'Вы не указали адрес!<br>';
}
else { 
$checkadress=mysql_query("SELECT id FROM whitelistsender WHERE adress='$adress'");
if(mysql_num_rows($checkadress));
{
echo 'Такой адрес уже существует<br>';
}
else   {
$sql=sprintf("INSERT IGNORE INTO $dbtable (adress) VALUES ('%s')",$adress);
$result=mysql_query($sql);
if($result)
{
echo 'Адрес добавлен успешно<br>';
}
else echo "Произошла ошибка при добавлении записи";
        }
    }
mysql_close();
}
else $adress="";
?>
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
Введите адрес: <input type="text" name="adress" value="<?=$adress?>"> <br>
<input type="submit" name="submit" value="Добавить">
</form>
</body>
</html>
Добавлено через 10 минут
Цитата Сообщение от KOPOJI Посмотреть сообщение
PHP
1
2
else { 
$checkadress=mysql_query("SELECT id
з.ы. надеюсь у вас есть в таблице поле id? если нет - то поменяйте на название своего поля и впредь добавляйте (id, int, primary key, auto_increment)
1
0 / 0 / 0
Регистрация: 26.07.2012
Сообщений: 3
26.07.2012, 14:58  [ТС]
KOPOJI - Спасибо за доработку формы!

Добавлено через 54 секунды
а про "id, int, primary key, auto_increment" постараюсь впредь учесть!
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
26.07.2012, 15:10
Цитата Сообщение от future3000 Посмотреть сообщение
KOPOJI - Спасибо за доработку формы!
пожалуйста, рад помочь)
Цитата Сообщение от future3000 Посмотреть сообщение
а про
Это одно поле если что))
поле id , тип поля integer (int), длины/значения сам подставит, NOT NULL (по умолчанию тоже ставит сам так), первичный ключ(primary key) - чтобы не было одинаковых и auto_increment - галочку поставить или выбрать из списка (чтобы сам прибавлял +1 к id в новую запись при вставке)
1
8 / 8 / 1
Регистрация: 25.07.2012
Сообщений: 50
26.07.2012, 17:36
Добавлю свой вариант,
считаю что на поле adress надо добавить уникальный ключ
MySQL
1
ALTER TABLE  `whitelistsender` ADD UNIQUE (`adress`)
код такой:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<html>
<head><title>Spamlist</title></head>
<body>
<?php
if(isset($_POST['submit'])) {
    $hostname = "localhost";
    $username = "spaml";
    $password = "123456";
    $dbname = "spamlist";
    $dbtable = "whitelistsender";
 
    $connect = mysql_connect($hostname, $username, $password) OR DIE("Error Mysql");
    mysql_select_db($dbname, $connect) or die("Error connect");
    $adress = mysql_real_escape_string(stripslashes(trim($_POST['adress'])));
 
    try{
        if(empty($adress))
            throw new Exception ("Вы не указали адрес!<br>");
 
        $sql=sprintf("INSERT INTO $dbtable (address) VALUES ('%s')",$adress);
        $result = mysql_query($sql);
 
        if(mysql_errno($connect)==1062)throw new Exception ("Такой адрес уже существует<br>");
        if(!$result)throw new Exception ("Произошла ошибка при добавлении записи");
        
        echo 'Адрес добавлен успешно<br>';
     
    }catch (Exception $e) {
        echo $e->getMessage();
    }
 
    mysql_close();
}
else $adress="";
?>
<form method="post" action="<?=$_SERVER['PHP_SELF']?>">
Введите адрес: <input type="text" name="adress" value="<?=$adress?>"> <br>
<input type="submit" name="submit" value="Добавить">
</form>
</body>
</html>
Смысл именно в индексе, код php любой
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.07.2012, 17:36
Помогаю со студенческими работами здесь

PHP и БД ( не заносятся данные в БД)
Сделал такой код который должен подключится к бд (с этим проблем нет), но не заносит данные введенные пользователем с другой формы (html)....

в MySQL заносятся данные только когда заполняются все поля
в MySQL заносятся данные только когда заполнены все поля. а как сделать, чтобы можно было заполнять не все поля? например два заполнить, а...

В базу mysql данные заносятся только один раз, не знаю в чём дело
//reg.php &lt;?php include ('connect.php'); $name=$_POST; $sname=$_POST; $data_d=$_POST; $data_m=$_POST; $data_y=$_POST; ...

Форма для ввода и соединить полученные строки (php)
Здравствуйте. Не могу сам разобраться, как это выполнить. Необходимо на странице сайта сделать форму для заполнения - русский текст...

Форма авторизации php+mysql
Добрый день. Подскажите пожалуйста. Проблема такая мне необходимо авторизоваться и перейти на страничку. Дак вот, создал я форму, ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это дополнительная запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru