[php+mysql] newsy - dzielenie na strony (dodatkowa pusta strona)

fr0zon

Użytkownik
Dołączył
Styczeń 12, 2007
Posty
147
Ok wkoncu sie udało zrobi dzielenie na strony newsy :-D ale i tak jest problem :zmieszany:

PHP:
<?
//Ładowaniu pliku konfiguracyjnego bazy danych i połączenie z bazą
include "config.php";

//Ustalenie ilości wyświetlanych newsów na stronie
define('limit_newsow', 4);
 
$result = "SELECT SQL_CALC_FOUND_ROWS * FROM newsy ORDER BY data DESC, time DESC LIMIT ".mysql_escape_string((int)$_GET['porcja'] *limit_newsow).",".limit_newsow;

//Pobiera ilosc_newsow rekordów z bazy, sortując wg daty rosnąco, zaczynając od $_GET['porcja']*ilosc_newsow
$RES = mysql_query($result); // wykonujemy zapytanie
while($AFR = mysql_fetch_assoc($RES)){
   
/*Wyświetlanie wyników:*/

$id=''.$AFR['id'].'';
$tytul=''.$AFR['tytul'].'';
$data=''.$AFR['data'].'';
$time=''.$AFR['time'].'';
$tresc_short=''.$AFR['tresc_short'].'';
$tresc_long=''.$AFR['tresc_long'].'';

echo "<link rel=\"Stylesheet\" type=\"text/css\" href=\"css/default.css\">";
echo "<script language=\"javascript\" type=\"text/javascript\">
       function rozwin(co){
    with(document.getElementById(co)){className=className=='h'?'v':'h';}
       }
</script>";

echo "<b>$tytul</b><br>$tresc_short<br>
<div class=\"h\" id=\"$id\">$tresc_long</div>
<a style=\"cursor: pointer\" onclick=\"rozwin('$id')\"><img src=\"img/more.gif\"></a>
 Dodano: $data | $time<hr>";

}
 
//Pobieramy ilosc danych w bazie
$result = "SELECT FOUND_ROWS() as Ilosc";
$RES= mysql_query($result);
list($iloscWpisow) = mysql_fetch_row($RES);
 
//Nawigacja
 
//Jeśli nie jesteśmy na pierwszej stronie
if($_GET['porcja']>0){ 
    
//Wyswietlamy link do poprzedniej strony
   echo '<a href="?porcja='.($_GET['porcja']-1).'">wstecz</a> ';
}
 
for($i = 0;$i<=floor($iloscWpisow/limit_newsow);$i++){
   echo '<a href="?porcja='.($i).'">[ '.($i+1).' ]</a> ';
}

//Jeśli nie jesteśmy na ostatniej stronie
if($_GET['porcja']<floor($iloscWpisow/limit_newsow)){ 
  
//Wyświetlamy link do nastepnej strony
   echo ' <a href="?porcja='.($_GET['porcja']+1).'">dalej</a>';
}?>
Problem polega na tym ze mam 12 rekordow z newsami w bazie i powinno mi podzielic na 3 strony po 4 newsy ale wyswietla mi dodatkowpusta podstrone ;/


Jakby co dorzucam strukture bazy danych:
PHP:
CREATE TABLE `newsy` (
  `id` int(6) NOT NULL auto_increment,
  `tytul` varchar(45) NOT NULL default '',
  `data` varchar(10) NOT NULL default '',
  `time` varchar(8) NOT NULL default '',
  `tresc_short` text NOT NULL,
  `tresc_long` text NOT NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`),
  KEY `id_2` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;
A tu screeny pokazujace probce problem:
Widac w adresie ze to porcja newsow zero
42875594.jpg


A tu mi robi na porcji 3 - czwarta strone
66353213.jpg


Gdzie mogłem popelnic blad ??

P.S Czy tu jest ok ?
PHP:
//Pobieramy ilosc danych w bazie
$result = "SELECT FOUND_ROWS() as id";
$RES= mysql_query($result);
list($iloscWpisow) = mysql_fetch_row($RES);
 
Ostatnia edycja:

fr0zon

Użytkownik
Dołączył
Styczeń 12, 2007
Posty
147
Jak uzyje count() wyskakuje błąd ;)

PHP:
Warning:  mysql_fetch_row(): supplied argument is not a valid MySQL result resource in c:\usr\krasnal\www\xxx\newsy.php on line 40


i widać tylko 1 stronę i 4 wpisy a reszty brak ;/
 

hxv

Były Moderator
Dołączył
Sierpień 9, 2006
Posty
797
Twórz bardziej 'standardowe' zapytania SQL, nie wiem czy to twoje działa poprawnie, ale lepiej będzie jak napiszesz np.
PHP:
SELECT COUNT(`id`) AS `ilosc` FROM `newsy`
A jak chcesz, żeby ilość stron wyświetlała się poprawnie to zrób np. tak:
PHP:
$last = $iloscWpisow % limit_newsow; //ilosc wpisow na ostatniej stronie
$pages = (int) ($iloscWpisow/limit_newsow); //ilosc 'pelnych' stron
if( $last > 0 ) { //jesli sa jakies wpisy na ostatniej stronie
    $pages++; //zwieksz ilosc stron
}

for($i=0;$i<$pages;$i++) {
    echo $i;
}
 
Do góry Bottom