Не сменя страниците ..???

Zoomchoo

Registered
Всичко излиза ОК,но като реша да избера примерно 2 или 3 ... страница започва да зарежда и ми отваря пак същата първа страница.Защо така?
Код:
<?php

$onpage = 20;

$i = 0;

if(is_numeric($_GET[cid])){

   $sql = " and `servers`.`cid`='$_GET[cid]'";

}

else {

   $sql='';

}

if(is_numeric($_GET['page'] and $_GET[page]>0) ){$page=$_GET['page'];}else{$page='0';}

$db->zaqvka("SELECT * FROM `servers`, `cats` where `servers`.`cid`=`cats`.`cid` and od='1' $sql");

$br = $db->broi();

$lm1 = $page * $onpage;

$db->zaqvka("SELECT * from `servers`,`cats` where  `servers`.`cid` = `cats`.`cid` and od='1' $sql order by servers.sid desc limit $lm1,$onpage");

if($db->broi()==0){

   echo "<tr><td>Няма сървъри</tr><td>";

}

else {

   echo  "<tr><b><td><td height=\"20\">Сървър</td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td><td>Тип</td><td>Играчи</td><td>Карта</td><td>Адрес</td><td style=\"border: #222222 1px solid;background: $color;\"></td><td>Статус</td></b></tr>";

      $m = 1;

   while($r=$db->rezultati()){

   $i++;

      if($m==1){

         $color = '#222222';

         $tcolor = '#FFFFFF';

         $m=2;

      }

      else{

         $color = '#222222';

         $tcolor = '#FFFFFF';

         $m=1;

      }



      //$st = query($r[ip],$r[port],'status');

      $sinfo = query($r[ip], $r[port], 'info');

  if($sinfo){$status = '<font color="green">Online</font>';}else{$status = '<font color="red">Offline</font';}

  $ime = $r[ime];



  $karta = isset($sinfo[mapname]) ? $sinfo[mapname] : 'N/A';

$sinfo[players] = isset($sinfo[players]) ? $sinfo[players] : 0;

$sinfo[maxplayers] = isset($sinfo[maxplayers]) ? $sinfo[maxplayers] : 0;

  $players = $sinfo[players].'/'.$sinfo[maxplayers];

$r[ip]=gethostbyname($r[ip]);

   echo   "<tr><td style='white-space:nowrap; text-align:left'>

          <img alt='' src='images/cstrike.gif' />

        </td><td style=\"border: #222222 1px solid;background: $color;\"><a href=\"index.php?module=server&servid=$r[sid]\"><span style=\"color:$tcolor\">$i. $r[0]</span></a></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"><a href=\"index.php?module=servers&cid=$r[cid]\"><span style=\"color:$tcolor\">$r[ime]</span></a></td><td style=\"border: #222222 1px solid;background: $color;\">$players</td><td style=\"border: #222222 1px solid;background: $color;\">$karta</td><td style=\"border: #222222 1px solid;background: $color;\">$r[ip]:$r[port]</td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\">$status</td></tr>";

   }

}



   $nav = stranici('index.php?module=servers&page=', $onpage, 10, $br, $page, '&cid='.$_GET[cid]);

   ?>

   </table>

<br><center><?=$nav?></center>
 
Ето тази част не ми харесва:
Код:
$lm1 = $page * $onpage;

$db->zaqvka("SELECT * from `servers`,`cats` where  `servers`.`cid` = `cats`.`cid` and od='1' $sql order by servers.sid desc limit $lm1,$onpage");

Опитай така:
PHP:
$lm1 = ($page - 1) * $onpage + 1;

$db->zaqvka("SELECT * from `servers`,`cats` where  `servers`.`cid` = `cats`.`cid` and od='1' $sql order by servers.sid desc limit $lm1,$onpage");

($page - 1) * $onpage - взимаме броя на сървърите от предните страници, после добавяме 1, за да получим първия сървър за избраната страница.
 
Пробвах anonimen и ми дава
Код:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\includes\mysql.class.php on line 47
Няма сървъри

Eто и сами mysql.class.php
Код:
<?php 
if(!DEFINED('human')) die('<code>PERMISSION DENIDED!</code>');
class Mysql{ 
	var $conn = NULL; 
	var $result = false; 
	private static $queries = 0;
	function Mysql($host,$user,$password,$database){ 
		$this->host = $host; 
		$this->user = $user; 
		$this->password = $password; 
		$this->database = $database; 
		$this->vruzka(); 
	} 
	function vruzka() 
	{ 
		$this->conn = @MYSQL_Connect($this->host, $this->user, $this->password); 
		if (!$this->conn) 
		{ 
			die("Неможе да бъде осъществена връзка към MYSQL");
		} 

		if (!@MYSQL_Select_db($this->database,$this->conn)) 
		{ 
			die("Неможе да бъде избрана базата данни");
		} 

		return true; 
	} 

	function krai(){ 
		return (mysql_close($this->conn)); 
	} 

	function greshka(){ 
		return (mysql_error()); 
	} 

	function zaqvka($statement){ 
		$this->result = mysql_query($statement, $this->conn); 
		 self::$queries++;
		return ($this->result != false); 
	} 
	function broi(){ 
		return (mysql_num_rows($this->result)); 
	} 
	function rezultati() 
	{ 
		return (mysql_fetch_array($this->result)); 
	} 
	static function zaqvki(){
       	     return self::$queries; 
      	}
} 

?>
 
Най-вероятната причина е грешка в заявката. Тогава изкарай самата заявка в отделна променлива, която да изведеш после.
Код:
$sql = 'zaqwkata';
$db->zaqvka($sql) or die("<b>Error: </b>".mysql_error().".<br>Query: ".$sql);
После, ако не можеш да го оправиш, дай това, което изкарва.
Ето още някои съвети:
--виж какво ти изкарва през конзолата (ако си на локалхост, естествено)
--проблемът може да е от кавичките - провери ги внимателно. По принцип няма нужда да ги слагаш при имената на колоните, стига да не са специални думи (като left)
--понеже правиш свързване на много таблици, опитай нещо такова:
Код:
select table1.*, table2.*, table3.* from table1, tabble2, table3 ...
вместо
Код:
select * from table1, table2, table3
В този случай и аз не съм сигурен кое е по-правилно.
 
Първо приложи онзи код към страницата с изкарването на сървъри, а не към класа.

Ако има синтактична грешка в заявката, ще ти изкара онова съобщение. И съответно $this->result няма да попадне в условието != FALSE и тогава
всъщност когато напишеш mysqli_num_rows($db->zaqvka) ще е идентично с mysqli_num_rows(0), и затова ти изкарва warning.
Какво ти изкарва? Съобщението или какво? Ако не получаваш съобщението вероятно няма грешка в заявката, а просто не връща редове.
 
Добави към метода zaqvka при функцията mysql_query това:
Код:
or die("<b>Error: </b>".mysql_error().".<br>Query: ".$statement);
И при извикването на $db->zaqvka
Код:
$lm1 = ($page - 1) * $onpage + 1;

$db->zaqvka("SELECT * from servers, cats where servers.cid = cats.cid and od='1' $sql order by servers.sid desc limit $lm1,$onpage");
без or die().
И кажи какво извежда.
 
Код:
Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '-19,20' at line 1.
Query: SELECT * from servers, cats where servers.cid = cats.cid and od='1' order by servers.sid desc limit -19,20
Tова ми дава.
 
Очевидно проблемът е в променливата $page.
Намери това:
Код:
if(is_numeric($_GET['page'] and $_GET[page]>0) ){$page=$_GET['page'];}else{$page='0';}
И го направи така:
Код:
$page = (is_numeric($_GET['page'] and $_GET[page]>0) ) ? (int) $_GET['page'] : 1;
 
Пак не става..погледни кода дали не съм сбъркал някъде??
Код:
<?php

$onpage = 20;

$i = 0;

if(is_numeric($_GET[cid])){

   $sql = " and `servers`.`cid`='$_GET[cid]'";

}

else {

   $sql='';

}

	$page = (is_numeric($_GET['page'] and $_GET[page]>0) ) ? $_GET['page'] : 1;	

$db->zaqvka("SELECT * FROM `servers`, `cats` where `servers`.`cid`=`cats`.`cid` and od='1' $sql");

$br = $db->broi();

	$lm1 = ($page - 1) * $onpage + 1;

$db->zaqvka("SELECT * from servers, cats where servers.cid = cats.cid and od='1' $sql order by servers.sid desc limit $lm1,$onpage");

if($db->broi()==0){

   echo "<tr><td>Няма сървъри</tr><td>";

}

else {

   echo  "<tr><b><td><td height=\"20\">№  Сървъри</td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td><td>Мод</td><td>Играчи</td><td>Карта</td><td>IP адрес</td><td style=\"border: #222222 1px solid;background: $color;\"></td><td>Статус</td></b></tr>";

      $m = 1;

   while($r=$db->rezultati()){

   $i++;

      if($m==1){

         $color = '#222222';

         $tcolor = '#FFFFFF';

         $m=2;

      }

      else{

         $color = '#222222';

         $tcolor = '#FFFFFF';

         $m=1;

      }



      //$st = query($r[ip],$r[port],'status');

      $sinfo = query($r[ip], $r[port], 'info');

  
 if($sinfo){$status = '<font color="green">Online</font>';}else{$status = '<font color="red">Offline</font';}
  $ime = $r[ime];



  $karta = isset($sinfo[mapname]) ? $sinfo[mapname] : 'N/A';

$sinfo[players] = isset($sinfo[players]) ? $sinfo[players] : 0;

$sinfo[maxplayers] = isset($sinfo[maxplayers]) ? $sinfo[maxplayers] : 0;

  $players = $sinfo[players].'/'.$sinfo[maxplayers];

$r[ip]=gethostbyname($r[ip]);

   echo   "<tr><td style='white-space:nowrap; text-align:left'>

          <img alt='' src='images/cstrike.gif' />

        </td><td style=\"border: #222222 1px solid;background: $color;\"><a href=\"servers.php?module=server&servid=$r[sid]\"><span style=\"color:$tcolor\">$i. $r[0]</span></a></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\"><a href=\"servers.php?module=servers&cid=$r[cid]\"><span style=\"color:$tcolor\">$r[ime]</span></a></td><td style=\"border: #222222 1px solid;background: $color;\">$players</td><td style=\"border: #222222 1px solid;background: $color;\">$karta</td><td style=\"border: #222222 1px solid;background: $color;\">$r[ip]:$r[port]</td><td style=\"border: #222222 1px solid;background: $color;\"></td><td style=\"border: #222222 1px solid;background: $color;\">$status</td></tr>";

   }

}



   $nav = stranici('servers.php?module=servers&page=', $onpage, 10, $br, $page, '&cid='.$_GET[cid]);

   ?>

   </table>

<br><center><?=$nav?></center>
 
Въпросът е да оправим mqsql-a, остави php кода и виж грешката в заявката. Няма смисъл да казваш безпомощно "не става". Кажи какво става, а не какво не става. Като получиш грешка виж за къде се отнася - кой файл, кой ред? Опитай да решиш проблема сам, и тогава пиши тук. От пръв поглед виждам неправилно поставени скоби на ред 10(няма затваряща скоба след функцията is_numeric). Оправи ги и кажи каква е грешката. 8)
 
Отваря директно на 2стр и при опит за смяна с другите страници ми седят едни и същи резултати.
 
Ами то се иска и малко мислене - щом резултатите са същите, значи трябва да провериш заявката. Изкарай я в отделна променлива и я изведи заедно с $page, за да провериш какво съдържат.
 

Back
Горе