Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: stronicowanie
Forum PHP.pl > Forum > PHP
berti28
Mam taki kod:

<?php
$connection = @mysql_connect('localhost', 'root', '')
or die('Brak połączenia z serwerem MySQL');
$db = @mysql_select_db('test', $connection)
or die('Nie mogę połączyć się z bazą danych');


$count=2; //wyników na strone
$offset=0; //obecnie wyświetlana strona

if(isset($_POST['count'])) //jeśli wybrano za pomocą GET ilość wyników
{
$count = $_POST['count'];
}
if(isset($_POST['offset'])) //jeśli wybrano kolejne strony z wynikami
{
$offset = $count*$_POST['offset'];
}

// zapytanie zwracające ilosc rekordów z tabeli
$sql = 'SELECT COUNT(*) FROM `posiadlosc`';
$result = mysql_query($sql);
$r = mysql_fetch_array($result);
//podział wyników na strony
$pages = ceil($r[0]/$count);
//wybranie wyników dla bieżących parametrów offset
$select = 'SELECT * FROM `posiadlosc` login ORDER BY `id` desc LIMIT '.$count.' offset '.$offset.';';


$q=mysql_query($select)or die(mysql_error());
while($row=mysql_fetch_array($q))
{
echo $row['login'];
}


echo "<b>kolejne strony</b>";

for($i=0;$i<$pages;$i++) //wyswietlanie numerów stron
{
if($i*$count==$offset)
{
echo ' '.$i.' ';
}else{
echo '<a href="rubka1.php?count='.$count.'&amp;offset='.$i.'"> '.$i.' </a>'; //tworzenie odnośnika z odpowiednimi parametrami offset i count
}
}

?>

Chcę żeby na kolejnych stronach wyświetlały się po dwa loginy na pierwszej stronie wyświetlają się dwa zaś na kolejnych pisze że nie odnaleziono strony.
Co może być powodem?
Tomplus
1. Stosuj tagowanie PHP gdy umieszczasz kod PHP w poście.

2. Nie COUNT(*) tylko COUNT(1) albo COUNT(`id`)

3. a w ogóle zamiast tego, wystarczy:
  1. $sql = 'SELECT `id` FROM `posiadlosc`';
  2. $result = mysql_query($sql);
  3. $r = mysql_num_rows($result)


4. a co do stronnicowania to:
LIMIT pozycja_rekordu, ile_rekordow_ma_pokazac

czyli:
Kod
LIMIT 0,2;# dla 1 strony
LIMIT 2,2;# dla 2 strony
LIMIT 4,2;# dla 3 strony

berti28
Problem rozwiązany, zamykam temat.
javafxdev
@Tomplus

Nie COUNT(*) tylko COUNT(1) albo COUNT(`id`)

a czemu count(1) a nie count(*) dałbyś rade wytłumaczyć?
Tomplus
@javafxdev
Dobre pytanie, mnie programiści polecali zawsze COUNT(1) lub COUNT(`id`) bo ma szybciej działać zapytanie niż COUNT(*).
Acz teraz sobie czytam i nie ma zbyt dużo racjonalnych wyjaśnień dlaczego jedno jest lepsze od drugiego, a przy jednej opinii o zapytaniach w różnych bazach danych.

What is better count(*) or count(1)?
MYSQL (no difference)
MS Sql Server (no difference)
Sybase (no difference)

Sam zrobiłem mały test, ale tak jak się spodziewałem, wyniki są podobne.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.