Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> stronicowanie
berti28
post 4.02.2017, 13:26:21
Post #1





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (20%)
X----


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?
Go to the top of the page
+Quote Post
Tomplus
post 4.02.2017, 14:14:28
Post #2





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


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

Go to the top of the page
+Quote Post
berti28
post 4.02.2017, 15:20:15
Post #3





Grupa: Zarejestrowani
Postów: 50
Pomógł: 0
Dołączył: 4.02.2014

Ostrzeżenie: (20%)
X----


Problem rozwiązany, zamykam temat.
Go to the top of the page
+Quote Post
javafxdev
post 4.02.2017, 17:01:55
Post #4





Grupa: Zarejestrowani
Postów: 95
Pomógł: 7
Dołączył: 27.10.2015

Ostrzeżenie: (0%)
-----


@Tomplus

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

a czemu count(1) a nie count(*) dałbyś rade wytłumaczyć?
Go to the top of the page
+Quote Post
Tomplus
post 4.02.2017, 22:33:27
Post #5





Grupa: Zarejestrowani
Postów: 1 873
Pomógł: 230
Dołączył: 20.03.2005
Skąd: Będzin

Ostrzeżenie: (0%)
-----


@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.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 12.06.2025 - 20:21