Проблем с странициране на PHP код.

WildFire

Registered
Къде е грешката в листирането нещо на 11 ред излиза и ддз

PHP:
<?php
$broinastranica = 5; 
$pageNum = 1; 
if(isset($_GET['page'])) {
$pageNum = $_GET['page'];
} 
$redove = ($pageNum - 1) * $broinastranica; 
$query = " SELECT * FROM links ORDER BY id DESC LIMIT $redove, $broinastranica"; 
$result = mysql_query($query) or die('Немога да избера датабаза!');
while($data = mysql_fetch_assoc($result)) {
$select = mysql_query("SELECT * FROM links ")or die(mysql_error());
$num = mysql_num_rows($select);
for ($i=0;$i<$num;$i++) {
$name = mysql_result($select, $i, "name");
$link = mysql_result($select, $i, "link");
$title = mysql_result($select, $i, "title");
echo '<meta http-equiv="Content-Type" content="text/html"; charset="windows-1251" />';
echo '<img src="'.$SITE_PATH.'/images/bull.gif" /> <a href="'.$link.'" title="'.$title.'" target="_blank">'.$name.'</a><br />';
}
mysql_close();
}
echo "<center>";
$query = "SELECT COUNT(id) AS numrows FROM links"; 
$result = mysql_query($query) or die('Грешка в избирането на датабазата!'); 
$row = mysql_fetch_array($result, MYSQL_ASSOC); 
$numrows = $row['numrows']; 
$maxPage = ceil($numrows/$broinastranica); 
$self = $_SERVER['PHP_SELF']; 
$nomeranastranici = ''; 
for($page = 1; $page <= $maxPage; $page++) 
{ 
if ($page == $pageNum) 
{
$nomeranastranici .= "<div class=\"stranicirane\"><span> $page</span></div> "; 
} 
else 
{ 
$nomeranastranici .= " <div class=\"stranicirane\"><a href=\"homepage?page=$page\">$page</a></div> "; 
} 
} 
if ($pageNum > 1) 
{ 
$page = $pageNum - 1; 
$predishna = " <div class=\"stranicirane\"><a href=\"homepage?page=$page\"><<</a></div>"; 
}
else 
{
$predishna = ' '; 
$parva = ' '; 
} 
if ($pageNum < $maxPage) 
{ 
$page = $pageNum + 1; 
$sledvashta = "<div class=\"stranicirane\"><a href=\"homepage?page=$page\">>></a></div> "; 
} 
else 
{ 
$sledvashta = ' '; 
$posledna = ' '; 
}
echo "<div style='padding: 3px;'></div>";
echo $parva . $predishna . $nomeranastranici . $sledvashta . $posledna;
?>
 
1. използвай думичката която ние знаем "странициране"
2. какво точно ти изписва... имало нещо на 11 ред... е ок ама ко е ... муха или грешка :D
 
сякаш на query-to няма LIMIT... не го знам тфа странициране и незнам ко трябва да пише на LIMIT... ако е от урок дай линк...

или си сложи тфа странициране

PHP:
	<?php
define('IN_VALID', true);
include ('conf.php');
//$ns - номер страница
//$br - брой страница
//$one - първа
//$sl - следваща
//$pl - последна
//$pr - предишна
$br = 10;
$pageNum = 1;
if(isset($_GET['page'])) {
$pageNum = $_GET['page'];
}
$redove = ($pageNum - 1) * $br;
$result = mysql_query("SELECT * FROM `chatbox` ORDER BY id DESC LIMIT $redove, $br")or die(mysql_error());
while($row = mysql_fetch_array($result)) {
$id = $row['id'];
$nick = $row['nick'];
$message = $row['message'];
echo '<b><img src="chat/chat.png" alt="" /> ' . $nick . ':</b> ' . $message . ' <div class="hr"></div>';
}
$query = mysql_query("SELECT COUNT(id) AS numrows FROM chatbox") or die(mysql_error());
$row = mysql_fetch_array($query, MYSQL_ASSOC);
$numrows = $row['numrows'];
$maxPage = ceil($numrows/$br);
$ns = 'Страници: ';
for($page = 1; $page <= $maxPage; $page++) {
if ($page == $pageNum) {
$ns .= " $page ";
}
else {
$ns .= "<a class=\"typ1\" href=\"?a=ranking&page=$page\">$page</a> ";
}}
if ($pageNum > 1) {
$page = $pageNum - 1;
$pr = " <a href=\"?a=ranking&page=$page\"></a> ";
$one = " <a href=\"?a=ranking&page=1\"></a> ";
}
else {
$pr = ' ';
$one = ' ';
}
if ($pageNum < $maxPage) {
$page = $pageNum + 1;
$sl = (" <a href=\"?a=ranking&page=$page\"></a> ");
$pl = (" <a href=\"?a=ranking&page=$maxPage\"></a> ");
}
else {
$sl = '';
$pl = '';
}
echo $one . $pr . $ns . $sl . $pl;
?>

ти си го преработи ;)
 
Това работило ли е някога, понеже се нуждае от коренна промяна. Влизаш в while цикъла, после за всяко завъртане прави връзка с базата данни и пълно завъртане на for цикъла... Ако имаш 10 завъртания на while направо ще отнеме 2 минути...
ПС: използвам завъртане, защото така ми е кеф, знам, че думата попринцип не е тази, но така ми е по-удобно.
 
PHP:
<?php
$broinastranica = 5;
$pageNum = 1; 
if(isset($_GET['page'])) {
$pageNum = $_GET['page'];
}
$redove = ($pageNum - 1) * $broinastranica; 
$query = " SELECT * FROM links ORDER BY id DESC LIMIT $redove, $broinastranica"; 
$result = mysql_query($query) or die('Немога да избера датабаза!');
while($data = mysql_fetch_assoc($result)) {

$select = mysql_query("SELECT * FROM links")or die(mysql_error());
$num = mysql_num_rows($select);
for ($i=0;$i<$num;$i++) {
$name = mysql_result($select, $i, "name");
$link = mysql_result($select, $i, "link");
$title = mysql_result($select, $i, "title");
echo '<meta http-equiv="Content-Type" content="text/html"; charset="windows-1251" />';
echo '<img src="'.$SITE_PATH.'/images/bull.gif" /> <a href="'.$link.'" title="'.$title.'" target="_blank">'.$name.'</a><br />';
}
mysql_close();

}
echo "<center>";
$query = "SELECT COUNT(id) AS numrows FROM links"; 
$result = mysql_query($query) or die('Грешка в избирането на датабазата!'); 
$row = mysql_fetch_array($result, MYSQL_ASSOC); 
$numrows = $row['numrows']; 
$maxPage = ceil($numrows/$broinastranica); 
$self = $_SERVER['PHP_SELF']; 
$nomeranastranici = ''; 
for($page = 1; $page <= $maxPage; $page++) 
{ 
if ($page == $pageNum) 
{
$nomeranastranici .= "<div class=\"stranicirane\"><span> $page</span></div> "; 
} 
else 
{ 
$nomeranastranici .= " <div class=\"stranicirane\"><a href=\"homepage?page=$page\">$page</a></div> "; 
} 
} 
if ($pageNum > 1) 
{ 
$page = $pageNum - 1; 
$predishna = " <div class=\"stranicirane\"><a href=\"homepage?page=$page\"><<</a></div>"; 
}
else 
{
$predishna = ' '; 
$parva = ' '; 
} 
if ($pageNum < $maxPage) 
{ 
$page = $pageNum + 1; 
$sledvashta = "<div class=\"stranicirane\"><a href=\"homepage?page=$page\">>></a></div> "; 
} 
else 
{ 
$sledvashta = ' '; 
$posledna = ' '; 
}
echo "<div style='padding: 3px;'></div>";
echo $parva . $predishna . $nomeranastranici . $sledvashta . $posledna;
?>

Грешката е от там където е mysql_close(); и нагоре, т.е. while цикъла, вътре в него, ако може да го редактирате
 

Back
Горе