съобщение за дублиране на primary key

classic88

Registered
Здравейте,
имам нужда от помощ
PHP:
<?php 
include("config.php"); 
if($_POST['submit']) 
{ 
$name = htmlspecialchars(addslashes($_POST['name'])); 
$ip = htmlspecialchars(addslashes($_POST['ip'])); 
$port = htmlspecialchars(addslashes($_POST['port'])); 
$cheat = htmlspecialchars(addslashes($_POST['cheat'])); 
$type = htmlspecialchars(addslashes($_POST['type'])); 
$author = htmlspecialchars(addslashes($_POST['author'])); 
if(empty($name) || empty($ip) || empty($port)) 
{ 
echo 'Задължителни полета Име , Ип-адрес , Порт'; 
} 
else 
{ 
$sql = mysql_query("INSERT into `servers` (`id`,`name`,`ip`,`port`,`cheat`,`type`,`author`) VALUES ('','$name','$ip','$port','$cheat','$type','$author')") or die(mysql_error()); 
if($sql) { echo "Сървърът е добавен"; } 
} 
} 
?>
Искам при всяка изпратена заявка от потребител ип-адреса, който е въвел потребителя да не се повтаря с вече съществуващ в базата данни.
Промених в таблицата където е ip да бъде primary key и стана не може да се доблира вече съще ствуващ запис на вече записано ip , но въпроса ми е как да оведомя потребителя че такъв ип адрес е вече въведен в базата и не може да се приповтори същевремено няма да може да осъщести нов запис на този ип-адрес който е въвел.
Моля помогнте ми.
 
Аз имам същия код бихте ли ми обяснили и на мен къде да вкарам тази проверка в кода, че не разбирам много.
 
PHP:
<?php 
include("config.php"); 
if($_POST['submit']) 
{ 
$name = htmlspecialchars(addslashes($_POST['name'])); 
$ip = htmlspecialchars(addslashes($_POST['ip'])); 
$port = htmlspecialchars(addslashes($_POST['port'])); 
$cheat = htmlspecialchars(addslashes($_POST['cheat'])); 
$type = htmlspecialchars(addslashes($_POST['type'])); 
$author = htmlspecialchars(addslashes($_POST['author'])); 
if(empty($name) || empty($ip) || empty($port)) 
{ 
echo 'Задължителни полета Име , Ип-адрес , Порт'; 
} 
else 
{ 
$exist_query = mysql_query("SELECT FROM `servers` WHERE `ip` = '$ip'");
$does_exist = mysql_num_rows($exist_query);

if($does_exist > 0)
{
echo 'Вече има такъв запис';
}
else
{

$sql = mysql_query("INSERT into `servers` (`id`,`name`,`ip`,`port`,`cheat`,`type`,`author`) VALUES ('','$name','$ip','$port','$cheat','$type','$author')") or die(mysql_error()); 
if($sql) { echo "Сървърът е добавен"; } 
} 
} 
}
?>


Използвах кода,който ти даде @Fakeheal
 
PHP:
line 58: mysql_num_rows() expects parameter 1 to be resource, boolean given
Duplicate entry '46.47.83.116' for key 'PRIMARY'
това се случи след като добавих същ ип адрес
 
един съвет -не проверявай само ип а ип:порт защото едно ип могат да го ползват и 1000 сървъра

Код:
<?php 
include("config.php"); 
if($_POST['submit']) 
{ 
$name = htmlspecialchars(addslashes($_POST['name'])); 
$ip = htmlspecialchars(addslashes($_POST['ip'])); 
$port = htmlspecialchars(addslashes($_POST['port'])); 
$cheat = htmlspecialchars(addslashes($_POST['cheat'])); 
$type = htmlspecialchars(addslashes($_POST['type'])); 
$author = htmlspecialchars(addslashes($_POST['author'])); 
if(empty($name) || empty($ip) || empty($port)) 
{ 
echo 'Задължителни полета Име , Ип-адрес , Порт'; 
} 
else 
{ 
$exist_query = mysql_query("SELECT `id` FROM `servers` where `ip` = '$ip' and `port` = '$port'");
$does_exist = mysql_num_rows($exist_query);

if($does_exist > 0)
{
echo 'Вече има такъв запис';
}
else
{

$sql = mysql_query("INSERT into `servers` (`id`,`name`,`ip`,`port`,`cheat`,`type`,`author`) VALUES ('','$name','$ip','$port','$cheat','$type','$author')") or die(mysql_error()); 
if($sql) { echo "Сървърът е добавен"; } 
} 
} 
}
?>
 
uphero каза:
един съвет -не проверявай само ип а ип:порт защото едно ип могат да го ползват и 1000 сървъра
Благодаря ти за съвета!
Сега като добавя ип 2 ри път нищо че с различен порт ми дава грешка че се дублират с вече съществуващ запис на ип-то.
Би трябвало да става така за да няма грешки, ако едно ип и порта бъдат еднакви да изписва че вече има такъв запис, но ако ип е същото но с друг порт да си направи нормално записа.
Как трябва да стане кода за да се получи така? и трябва ли да задам и на порт primary key?
Благодаря предварително !
 

Back
Горе