проверка за съществуващ запис спря да работи

cmsfan

Registered
Абе до оня ден работеше и сега фал, ето я:

Код:
//Проверка дали даден ник е вече в датабазата
$q = "SELECT id FROM amx_amxadmins WHERE steamid='$username'";
$result = mysql_query($q);
if ( mysql_num_rows ( $result ) > 0 )
{
$admin_id = mysql_result($result, 0, 'id');
$query = "SELECT server_id FROM amx_admins_servers WHERE admin_id=$admin_id";
$result = mysql_query($query);
$server_id = mysql_result($result, 0, 'server_id');
if ($server_id == $servernr)
die("<div style='width:574px; background-color:#121212; color:#bec923; padding:10px;'>Name <b>$nick</b> already exists on <b>$svnum</b></div>");
}

steamid е полето с никовете в датабазата
$username - взима информация от $_POST['username'] (от инпута) за да я сравни.

Работеше, но сега не иска, идеи ?
 
Хаха написал си по голямо от нула
пробвай така
PHP:
//Проверка дали даден ник е вече в датабазата
$q = "SELECT id FROM amx_amxadmins WHERE steamid='$username'";
$result = mysql_query($q);
if ( mysql_num_rows ( $result ) < 0 )
{
$admin_id = mysql_result($result, 0, 'id');
$query = "SELECT server_id FROM amx_admins_servers WHERE admin_id=$admin_id";
$result = mysql_query($query);
$server_id = mysql_result($result, 0, 'server_id');
if ($server_id == $servernr)
die("<div style='width:574px; background-color:#121212; color:#bec923; padding:10px;'>Name <b>$nick</b> already exists on <b>$svnum</b></div>");
}
 
vardana каза:
Хаха написал си по голямо от нула
пробвай така

Добре де, кога една заявка има -1 и по-малко резултати?

към автора - сложи or die(mysql_error()) на всяка заявка и виж къде и какъв ще е проблема. Т.е. всяка заявка трябва да стане mysql_query(...) or die(mysql_error());
 
Добре де някаква грешка ли ти искарва или к'во обясни какво става за да можем да ти помогнем :)
 
Не, прото си праща записа без да има никаква реация от страна на скрипта, а преди 2 дни работеше.
 
cmsfan каза:
Не, прото си праща записа без да има никаква реация от страна на скрипта, а преди 2 дни работеше.

djman каза:
към автора - сложи or die(mysql_error()) на всяка заявка и виж къде и какъв ще е проблема. Т.е. всяка заявка трябва да стане mysql_query(...) or die(mysql_error());

Не искам да обиждам никого, но ми омръзна да пиша и да не се обръща внимание на написаното ...

И къде го праща записа? Коя част от кода не работи?
 
Ето ти малко повече код

Код:
if(isset($_POST['submit'])){
$nick= mysql_real_escape_string($_POST["username"]);
$passche= mysql_real_escape_string($_POST["pass"]);
$server= mysql_real_escape_string($_POST["action"]);
$skaip= mysql_real_escape_string($_POST["skype"]);
$email= mysql_real_escape_string($_POST["email"]);

$username = $nick;
$password=md5($passche);
$access ="abcdeijut"; //флагове за достъп на админите до сървъра
$flags="a"; //Тип админски права - "a" - name / de - "ip" (не се съпортва добавяне на админи по IP адрес в момента)
$icq=$skaip;
$email=$email;
$days = 30;
$action = $server;
	
	
//Проверка дали даден ник е вече в датабазата
$q = "SELECT id FROM $dbtable WHERE steamid='$username'";
$result = mysql_query($q);
if ( mysql_num_rows ( $result ) > 0 )
{
$admin_id = mysql_result($result, 0, 'id');
$query = "SELECT server_id FROM $dbtable2 WHERE admin_id=$admin_id";
$result = mysql_query($query);
$server_id = mysql_result($result, 0, 'server_id');
if ($server_id == $servernr)
die("<div style='width:574px; background-color:#121212; color:#bec923; padding:10px;'>Name <b>$nick</b> already exists on <b>$svnum</b></div>");
}

//Заявка за датабазата (оттук се вкарват админите в db-то.)
$dodaj = "INSERT INTO `$dbtable` (`id`, `password`, `access` , `flags` ,`steamid` , `icq` , `email`, `ashow` , `created` , `expired` , `days`) VALUES ('', '$password', '$access', '$flags' , '$username' , '$icq' , '$email' , '$ashow' , '$created' , '$expired' , '$days')";
mysql_query($dodaj);
$player1 = "SELECT * from $dbtable where steamid='$username'";
$query1 = mysql_query($player1)or die(mysql_error());
$row1 = mysql_fetch_array($query1);
$id1 = $row1["id"];
$custom1 = '';
$static1 = 'no';
mysql_query("INSERT INTO `$dbtable2` (`id`, `server`, `custom_flags`, `staticbantime`) VALUES ('$id1', '$server', '$custom1', '$static1')")or die(mysql_error());

}

Праща го в датабазата, къде може да го праща...
 
Облаци, кадри, проверки бла-бла, дайте го малко като за по прост човек :)

В датабазата има поне 40 записа и всички бачкат. (тествани са), общо взето става дума за кънтър страйк скрипт, който прави админи посредством смс и искам да направя така, че да не праща ник вече съвпадащ с такъв защото се получават бъгове в записите (презаписи и създаване на нови такива) - дълго и широко, приемете го, че трябва да се направи да не може да се изпраща заявка с име което съответства на такова в датабазата.

Дайте сега по темата, малко по-просто кое и как.
(Инклуднал съм най-горе във файла) кънекциите към датабазата и дефинициите за $dbtable и $dbtable2
 
омг ..еми това с тава с 2 реда..
1. ти тряя mysql_num_ruws($sql) - броиш резултатите ..
2. правиш проверка дали името саществува..

PHP:
if(mysql_num_ruws($sql)  >=1 )
{
     //mysql_ za update ... 
}else{

//mysql za wkarwane na now red.. 

}
:shock:
 
Е аз какво ползвам ?
ПП: не е ли rows, не ruws ?
Дайте нещо готово, че ще си играя 2 часа сам, а доста време отделих вече.
 


ПРОВЕРИ СИ В БАЗАТА ДАННИ ДА НЯМА ВЕЧЕ НА НЯКОЙ РЕД РЕГИСТРИРАНИ 2 МА АДМИНА. ЗАЩОТО АКО ИМА 2 РАТА ЗАЯВКА ЩЕ ИЗВАДИ "ARRAY" И ЗА ТОВА МОЖЕ ДА НЕ ТИ РАБОТИ.


ЕТО ТИ КОДА.


Код:
$q = "SELECT id FROM amx_amxadmins WHERE steamid='$username'";
$result = mysql_query($q);
if (mysql_num_rows ($result) > 0 )
{
$row = mysql_fetch_assoc($result);
$admin_id=$row['id'];
$query = "SELECT server_id FROM amx_admins_servers WHERE admin_id='$admin_id'";
$result = mysql_query($query);
$row2=mysql_fetch_assoc($result);

$server_id=$row2['server_id'];

if ($server_id == $servernr) {
die("<div style='width:574px; background-color:#121212; color:#bec923; padding:10px;'>Name <b>$nick</b> already exists on <b>$svnum</b></div>");
    }

}
 
Не става, отново праща заявката, ето снимка на няколко записа (няма повтарящи се)
36c33f79d3f8543b.png
 
PHP:
//Проверка дали даден ник е вече в датабазата
$q = "SELECT id FROM $dbtable WHERE steamid='$username'";
$result = mysql_query($q);
if ( mysql_num_rows ( $result ) > 0 )
{
$admin_id = mysql_result($result, 0, 'id');
$query = "SELECT server_id FROM $dbtable2 WHERE admin_id=$admin_id";
$result = mysql_query($query);
$server_id = mysql_result($result, 0, 'server_id');

//Заявка за датабазата (оттук се вкарват админите в db-то.)
$dodaj = "INSERT INTO `$dbtable` (`id`, `password`, `access` , `flags` ,`steamid` , `icq` , `email`, `ashow` , `created` , `expired` , `days`) VALUES ('', '$password', '$access', '$flags' , '$username' , '$icq' , '$email' , '$ashow' , '$created' , '$expired' , '$days')";
mysql_query($dodaj);
$player1 = "SELECT * from $dbtable where steamid='$username'";
$query1 = mysql_query($player1)or die(mysql_error());
$row1 = mysql_fetch_array($query1);
$id1 = $row1["id"];
$custom1 = '';
$static1 = 'no';
mysql_query("INSERT INTO `$dbtable2` (`id`, `server`, `custom_flags`, `staticbantime`) VALUES ('$id1', '$server', '$custom1', '$static1')")or die(mysql_error());

}}else{
echo"Name already exists";
}

Какви са тея $servernp, $svnum?
 
Опитай така:

PHP:
$q = "SELECT count(*) as cnt FROM $dbtable WHERE steamid='$username'";
$result = mysql_query($q);
if ( $result['cnt'] > 0 )

Ако и това не даде резултат преди заявката направи:

PHP:
echo "<pre>\n$q\n</pre>";

и я изпълни в phpMyAdmin - може да имаш някакви боклуци в името и би трябвало да се ориентираш
 

Back
Горе