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

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

26.07.2012, 13:37. Показов 3548. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru