Цикъла на се завърта

uphero

Registered
ползвам този код за обновяване но проблема е в това , че записва само 1 резултат и изкарва грешка която не мога ди обясня откъде идва
грешката : http://game-stats.eu/test.php
кода : http://game-stats.eu/web.txt
 
PHP:
$s = mysql_query("SELECT * FROM `servers` WHERE `game`='$ga' ORDER BY `da`");

и ползвай mysql_fetch_assoc вместо mysql_fetch_array : )
 
critrate каза:
ORDER BY ги пиши с главни букви

след заявката тай or die mysql_error да видим какво ще ти излезне
направих защвката така и дава грешка


PHP:
$s = mysql_query("SELECT * FROM `servers` WHERE `game`='$ga' ORDER BY `da`") or die (mysql_error);
while($r = mysql_fetch_assoc($s))


Код:
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/csstats/public_html/test.php on line 9
 
Направи я така:

$s = mysql_query("SELECT * FROM `servers` WHERE `game`='$ga' ORDER BY `da`") or die (mysql_error());
while($r = mysql_fetch_assoc($s))

И сигурен ли си, че не си объркал таблицата или някое поле?
 
proba каза:
Направи я така:

$s = mysql_query("SELECT * FROM `servers` WHERE `game`='$ga' ORDER BY `da`") or die (mysql_error());
while($r = mysql_fetch_assoc($s))

И сигурен ли си, че не си объркал таблицата или някое поле?
точно за това му казах да сложи mysql_error ,защото ще му изпише ако е ги е въвел правилно.
 
PHP:
$s = mysql_query("SELECT * FROM `serverS` WHERE `game`='$ga' order by da");

трябва да стане така

PHP:
$s = mysql_query("SELECT * FROM `server` WHERE `game`='$ga' order by da");

просто се влгедах по надолу в кода му и забелязах че инсертва в `server` а не в `servers`

И пич слагай по смислени имена на колони променливи и т.н. с тях по трудно си губиш акъла :D
 
изписва му

Unknown column 'gsasdame' in 'where clause' :D

Препоръчвам ти да започнеш да гелдаш видео уроци,като започнеш с променливи,цикли,оператори,масиви,заявки и така.
 
Jorko каза:
PHP:
$s = mysql_query("SELECT * FROM `serverS` WHERE `game`='$ga' order by da");

трябва да стане така

PHP:
$s = mysql_query("SELECT * FROM `server` WHERE `game`='$ga' order by da");

просто се влгедах по надолу в кода му и забелязах че инсертва в `server` а не в `servers`

Браво бе ! Само 1 човек зачете кода надолу

$select = mysql_query("SELECT * FROM `server` WHERE `sid`='$sida'");
$num = mysql_num_rows($select);
if ($num=='0') {


$sql= mysql_query("INSERT INTO server(karta,timer,timerb,url,sid,play,maxplay,status,ip,port,imeto,views,mail,dop,game,hash,da,bold) VALUES ( '$karta','$timer','$timerb','$url','$sida', '$play', '$maxplay','$status','$ip','$port','$imeto','$views','$mail','$dop','$game','$hash','$dada','$bold')");


}

else
{

mysql_query('UPDATE `server` SET karta="'.$karta.'",timer="'.$timer.'",timerb="'.$timerb.'",type="'.$type.'",imeto="'.$imeto.'",port="'.$port.'",dop="'.$dop.'",url="'.$url.'", status="'.$status.'",ip="'.$ip.'" ,play="'.$play.'",maxplay="'.$maxplay.'",da="'.$dada.'" ,bold="'.$bold.'" WHERE sid="'.$sida.'"');

}

?>
<?=$play?>/ <?=$maxplay?>- <?=$imeto?>;
<?
}

И видя , че таблицата е server а не servers..
То и аз го видях но докато го видя @Jorko вече беше написал отговора.
Само така ;)
 
critrate каза:
proba каза:
Направи я така:

$s = mysql_query("SELECT * FROM `servers` WHERE `game`='$ga' ORDER BY `da`") or die (mysql_error());
while($r = mysql_fetch_assoc($s))

И сигурен ли си, че не си объркал таблицата или някое поле?
точно за това му казах да сложи mysql_error ,защото ще му изпише ако е ги е въвел правилно.
Пак същата грешка вади
 
Работата е там ,че вадя от servers инфо което прекарвам през класа за да взема името на сървъра както и играчите и после го вкарвам в server така ,че не е там грешката
добавих и класа най отгоре може и там да е грешката http://game-stats.eu/web.txt
proba каза:
Jorko каза:
PHP:
$s = mysql_query("SELECT * FROM `serverS` WHERE `game`='$ga' order by da");

трябва да стане така

PHP:
$s = mysql_query("SELECT * FROM `server` WHERE `game`='$ga' order by da");

просто се влгедах по надолу в кода му и забелязах че инсертва в `server` а не в `servers`

Браво бе ! Само 1 човек зачете кода надолу

$select = mysql_query("SELECT * FROM `server` WHERE `sid`='$sida'");
$num = mysql_num_rows($select);
if ($num=='0') {


$sql= mysql_query("INSERT INTO server(karta,timer,timerb,url,sid,play,maxplay,status,ip,port,imeto,views,mail,dop,game,hash,da,bold) VALUES ( '$karta','$timer','$timerb','$url','$sida', '$play', '$maxplay','$status','$ip','$port','$imeto','$views','$mail','$dop','$game','$hash','$dada','$bold')");


}

else
{

mysql_query('UPDATE `server` SET karta="'.$karta.'",timer="'.$timer.'",timerb="'.$timerb.'",type="'.$type.'",imeto="'.$imeto.'",port="'.$port.'",dop="'.$dop.'",url="'.$url.'", status="'.$status.'",ip="'.$ip.'" ,play="'.$play.'",maxplay="'.$maxplay.'",da="'.$dada.'" ,bold="'.$bold.'" WHERE sid="'.$sida.'"');

}

?>
<?=$play?>/ <?=$maxplay?>- <?=$imeto?>;
<?
}

И видя , че таблицата е server а не servers..
То и аз го видях но докато го видя @Jorko вече беше написал отговора.
Само така ;)
 
Имай предвид, че serverS и servers ще ги различава като 2 отделни таблици.

Опитай променливата в заявката да я заградиш в къдрави скоби, т.е. да стане '{$ga}'.

Другото, което е... не каза това da какво трябва да е ?
 
TryMe каза:
Имай предвид, че serverS и servers ще ги различава като 2 отделни таблици.

Опитай променливата в заявката да я заградиш в къдрави скоби, т.е. да стане '{$ga}'.

Другото, което е... не каза това da какво трябва да е ?
$ga е променливата за типа игра в случая минеракрафт сървър
ето и структурата
[sql]CREATE TABLE IF NOT EXISTS `servers` (
`ime` char(60) CHARACTER SET ucs2 COLLATE ucs2_unicode_ci NOT NULL,
`ip` varchar(255) NOT NULL,
`port` varchar(5) NOT NULL,
`cid` int(11) NOT NULL,
`dop` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`mail` varchar(255) NOT NULL,
`url` varchar(255) NOT NULL,
`hash` varchar(32) NOT NULL,
`od` int(1) NOT NULL,
`sid` int(11) NOT NULL AUTO_INCREMENT,
`views` int(20) NOT NULL DEFAULT '0',
`vip` text NOT NULL,
`game` varchar(6) NOT NULL,
`rating_st` varchar(5) NOT NULL,
`num_votes_st` int(10) NOT NULL,
`da` int(11) NOT NULL,
`ne` text NOT NULL,
`bold` int(11) NOT NULL,
`timer` date NOT NULL,
`timerb` date NOT NULL,
`mode` varchar(50) NOT NULL,
`engine` varchar(50) NOT NULL,
`version` varchar(50) NOT NULL,
`type` varchar(50) NOT NULL,
`descr` varchar(240) NOT NULL,
`image` varchar(500) NOT NULL,
`status` varchar(30) NOT NULL,
PRIMARY KEY (`sid`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=324 ;[/sql]
 
Няма логика. Я дебъгни този ред: $s = mysql_query("SELECT * FROM `serverS` WHERE `game`='$ga' order by da");

PHP:
var_dump($s);

И кажи какво ти връща, защото нещо не виждам да ти връща ресурс.


П.П. Ако пишеш `serverS`, то го оправи на `servers`, защото има разлика между двете.
 
Създадох си таблицата на localhost добавих 2 записа на поле `game` със текст mc и в полето `da` въведох 1889 а на вторият запис 1945

Изпълних си заявката

SELECT * FROM `servers` WHERE `game` = 'mc' ORDER by `da`

И си върна резултат без никаква грешка.

А с php код пак си работи на localhosta ми.

PHP:
<?php
mysql_connect("localhost","root","password") or die(mysql_error());
mysql_select_db("wt5");

$ga = "mc";
$s = mysql_query("SELECT * FROM `servers` WHERE `game` = '$ga' ORDER by `da`");
while($r = mysql_fetch_array($s))
{
$sid = $r['sid'];
echo $sid.","; 
}
?>

И си връща резултат 366,365, без никакъв проблем.

EDIT:

Замени това (16 ред):
PHP:
$ga='mc';
$s = mysql_query("SELECT * FROM `servers` WHERE `game`='$ga' order by da");
while($r = mysql_fetch_array($s))

С това:
PHP:
$ga='mc';
$s = mysql_query("SELECT * FROM `servers` WHERE `game` = '$ga' ORDER by `da`") or die(mysql_error());
while($r = mysql_fetch_array($s))

И не би трябвало да връща грешка. Макар че и одеве ти казахме да го направиш, ти уж каза че си го направил но пак ти връща грешка , което е невъзможно..
 

Back
Горе