Stronicowanie gotowy skrypt

0

Cześć na studiach mam projekt w którym muszę stworzyć stronę internetową. Musi w niej znajdować się kilka rzeczy:

  1. formularz,
    2.łączenie z bazą danych mySQL i przesyłanie do niej danych z formularza
    3.wyświetlanie w oddzielnej zakładce danych po 5 na stronie w postaci tabelki
    Problem mam niestety z ostatnim podpunktem dostaliśmy gotowy skrypt, aby go tylko zaimplementować, ale mimo iż to zrobiłem to stronicowanie wciąż nie działa. .
    Prosiłbym o pomoc w rozwiązaniu problemu.
    Z góry dziękuję
<?php
$zapytanie="SELECT count(*)tab";
$pomoc=mysql_query ($zapytanie);
$liczba_wyn=mysql_result($pomoc, 0);
$liczba_na_str=5;
$liczba_str=$liczba_wyn/$liczba_na_str;
$liczba_str=ceil($liczba_str);

 if (isset($_GET['str']))  {
  $str=$_GET['str'];
 }
 else  {
 $str=1;
 }

$pomin=($str-1)*$liczba_na_str;
$zapytanie= "SELECT * FROM tab
 WHERE $where
 LIMIT $pomin, $liczba_na_str";
$wyniki=mysql_query($zapytanie);
echo '<table border="5" cellpadding="10">';

while ($wiersz=mysql_fetch_array($wyniki)){
 echo'<tr><td>'. $wiersz[id] .
 '</td><td>'. $wiersz[Imie] .
 '</td><td>'. $wiersz[Nazwisko] .
 '</td><td>'. $wiersz[Plec] .
 '</td><td>'. $wiersz[NP] .
 '</td><td>'. $wiersz[Email] .
 '</td><td>'. $wiersz[KodPocztowy] .
 '</td></tr>';
}
echo '</table>';


$linki=' ';
 if ($str>1)  {
  $linki=$linki. '<a href="'.$_SERVER['PHP_SELF'].
  '?szukaj='.$szukaj. '&str='.($str-1).'"><-</a>'; 
 }
 else  { 
 $linki=$linki. '<-'; 
 }

 for($i=1; $i<=$liczba_str; $i++)  {
 if ($str==$i)  { 
  $linki=$linki.' '.$i; 
 }
 else  {
  $linki=$linki. '<a href="'.$_SERVER['PHP_SELF'].
  '?szukaj='.$szukaj. '&str='.$i.'">'.$i.'</a>'; 
 }

 if ($str<$liczba_str)  {
  $linki=$linki. '<a href="'.$_SERVER['PHP_SELF'].
  '?szukaj='.$szukaj. '&str='.($str+1).'">-></a>'; 
 }
 else  { 
  $linki=$linki. '->'; 
 }}
echo $linki;
mysql_close($connection);
?>

Połączenie z bazą mam w oddzielnym skrypcie z walidacją danych dlatego nie wklejałem go tutaj.

0

Czemu nie użyjesz w zapytaniu OFFSET?

SELECT * FROM tabela 
LIMIT liczba_ile_chcesz_mieć_na_stronie 
OFFSET liczba_ile_chcesz_mieć_na_stronie * (strona_na_której_jesteś - 1)

Pomijam już to, że zamiast mysql_* powinieneś używać PDO i że na 99% masz dziure zwaną SQL Injection.

0

Zmieniłem kod.Teraz numery stron, oraz ilość danych na stronie wyświetla mi się dobrze.Problem mam niestety z kolejnymi stronami,ponieważ są one puste. Domyślam się, że w którymś miejscu muszę wykonać pętle ale nie bardzo wiem gdzie.Proszę o pomoc.

 
```<?php 
define('ILOSC_WYNIKOW_NA_STRONIE', 5);
$connection = @mysql_connect('mysql.cba.pl', 'niewazne', 'niewazne');
if(!$connection)
   {
    die('Brak połączenia z serwerem MySQL.<br />Błąd: '.mysql_error()); 
   }

 
$db = @mysql_select_db('mrabalski_cba_pl', $connection);
if(!$db)
{ 
die('Nie mogę połączyć się z bazą danych<br />Błąd: '.mysql_error()); 
}
  
$SQL = "SELECT SQL_CALC_FOUND_ROWS * 
       FROM tab 
       LIMIT ".mysql_escape_string((int)$_GET['porcja']*ILOSC_WYNIKOW_NA_STRONIE).",".ILOSC_WYNIKOW_NA_STRONIE;
$RES = mysql_query($SQL);


echo '<table border="5" cellpadding="10">';

while($AFR = mysql_fetch_assoc($RES)){
     echo'<tr><td>'. $AFR['id'] .
     '</td><td>'. $AFR['Imie'] .
     '</td><td>'. $AFR['Nazwisko'] .
     '</td><td>'. $AFR['Plec'] .
     '</td><td>'. $AFR['NP'] .
     '</td><td>'. $AFR['Email'] .
     '</td><td>'. $AFR['KodPocztowy'] .
     '</td></tr>';

}
echo '</table>';

$SQL = "SELECT FOUND_ROWS() as Ilosc";
$RES= mysql_query($SQL);
list($iloscWpisow) = mysql_fetch_row($RES);
if($_GET['porcja']>0){ 
    //wyswietlamy link do poprzedniej strony
   echo '<a href="?porcja='.($_GET['porcja']-1).'">Poprzednie</a> ';
}
 
for($i = 0;$i<=floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE);$i++){
   echo '<a href="?porcja='.($i).'">[ '.($i+1).' ]</a> ';
}
//jeśli nie jesteśmy na ostatniej stronie
if($_GET['porcja']<floor($iloscWpisow/ILOSC_WYNIKOW_NA_STRONIE)){ 
  //wyświetlamy link do nastepnej strony
   echo ' <a href="?porcja='.($_GET['porcja']+1).'">następne</a>';
}


?>

1 użytkowników online, w tym zalogowanych: 0, gości: 1