Skocz do zawartości
konyozpl

Stronicowanie (proszę o pomoc bo mi już brak pomysłów)

Polecane posty

mam taki kod

<?php
$id='64';
$wynik = mysql_query ("SELECT * FROM baza WHERE id = '$id'");
while ($wynik && $rekord = mysql_fetch_array ($wynik)) {

$tytul= $rekord['tresc_1'];

echo "<p>".$rekord['tresc_1']."</p>";
}

?>

jak zrobić tu stronicowanie czyli np. do 500 znanków i kolejna strona (1.2.3..8) albo <<<>>>

 

pomoże ktoś ? bardzo prosze

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Nie rób stronicowania na ilość znaków, tylko na rekordy.

 

na końcu zapytania daj np " LIMIT 0, 100" lub " LIMIT 100, 200" i w ten sposób przechodź strona po stronie.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze
(int)$strona = $_GET['page'];
if(empty($strona))
{
$strona = 0;
}else{
$strona = $strona * 10;
}

$wynik = mysql_query ("SELECT * FROM baza WHERE id = '$id' LIMIT ".$strona.",10");

Później dajesz sobie warunek że jeżeli jest więcej niż 10 to pojawia ci się link z czymś takim:

 

index.php?page=1 (i zwiększasz kolejno zależnie od strony gdzie page=liczba to jest numer strony z zerem jako pierwsza strona)

 

 

(lub przykładowo)

$wynik = mysql_query ("SELECT * FROM baza WHERE id = '$id' LIMIT 0,10");

Może pojawić się błąd. Pisałem na gorąco i nie sprawdzałem :)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze
$wynik = mysql_query ("SELECT * FROM `baza` WHERE `id` = '$id' LIMIT ".$strona.",10");

Fajnie jak byś podał więcej szczegółów bo wróżką nie jestem...

 

 

Edit: Wklej cały kod który ci nie działa. Zobacz czy łączysz się do bazy danych. Czy podałeś coś w zmiennej $id

Edytowano przez Kamikadze (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
<?php 
$id='64';
$wynik = mysql_query ("SELECT * FROM baza WHERE id = '$id' LIMIT 0,20");
while ($wynik && $rekord = mysql_fetch_array ($wynik)) {

$tytul= $rekord['tresc_1'];

echo "<p>".$rekord['tresc_1']."</p>";
}
(int)$strona = $_GET['page'];
if(empty($strona))
{
$strona = 0;
}else{
$strona = $strona * 10;
}

?>

mam tak i nic sie nei zmienia niema stronicowania

 

Edytowano przez konyozpl (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

strzal_w_glowe_0.jpg

 

 

 

Napiszę ci całość bo pomieszałeś wszystko...

<?php
//Tutaj lub wcześniej łączysz się z bazą danych MySQL


$id='64';

(int)$strona = $_GET['page'];
if(empty($strona))
{
$strona = 0;
}else{
$strona = $strona * 10;
}


$wynik = mysql_query ("SELECT * FROM `baza` WHERE `id` = '$id' LIMIT ".$strona.",10");
while ($wynik && $rekord = mysql_fetch_array ($wynik)) {

$tytul= $rekord['tresc_1'];

echo "<p>".$rekord['tresc_1']."</p>";
}


?>

I sprawdź z danymi:

index.php?page=1

index.php?page=2

czy wyświetla się poprawnie. Powinno ci porcjować co 10.

 

Najlepiej wrzuć link do tego skryptu jak nie tu to na PW to sprawdzę jak to działa.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

genialne podejście do problemu... Jak nikt nie napisze gotowca aby działał bez podstawowych informacji o Twoim skrypcie to najlepiej wywalić do kosza skrypt.

 

PODSTAWOWE PYTANIE! CZY ŁĄCZYSZ SIĘ W OGÓLE Z BAZĄ DANYCH?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Ale że kilka artykułów na jednej podstronie czy jeden artykuł na kilka podstron?

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

To w takim razie mniej więcej kod będzie taki:

 

 

substr("$row[tekst]", 0,30)

<?php
//Tutaj lub wcześniej łączysz się z bazą danych MySQL


$id='64';

(int)$strona = $_GET['page'];
$end = 100; // TUTAJ PODAJ ILE ZNAKÓW MA BYĆ WYŚWIETLANYCH NA JEDNEJ PODSTRONIE


if(empty($strona))
{
$strona = 0;
}else{
$strona = $strona * $end;
}

$wynik = mysql_query ("SELECT * FROM `baza` WHERE `id` = '$id'");
while ($wynik && $rekord = mysql_fetch_array ($wynik)) {

$tytul= $rekord['tresc_1'];

$rekordout = $rekord['tresc_1'];
$tekst = substr($rekordout, $strona,$end);

echo "<p>$tekst</p>";
}


?>

I znowu zaczyna się liczenie od 0 do x.

Uwaga mogłem coś pomylić, więc błędy na 99% są :)

 

 

 

Edit:

 

Poprawiłem. Teraz powinno jako tako działać. Przetestuj :)

Edytowano przez Kamikadze (zobacz historię edycji)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach
Gość Kamikadze

Zedytowałem poprzedni post. Powinno działać (skopiuj całość bo przerobiłem)

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

@maniac:

 

<!--nextpage-->

nie uchroni przez cięciem pomiędzy tagami.

 

Prosty przykład:

 

$text = '<b>Lorem ipsum dolor sit amet, consectetur adipiscing elit.<!--nextpage-->Vestibulum sollicitudin orci eget quam ultricies at adipiscing ligula viverra.</b>';

i na pierwszej stronie wszystko poniżej cięcia masz boldowane, do tego trzeba sobie dopisać jakieś rozwiązanie z auto domykaniem tagów.

Udostępnij ten post


Link to postu
Udostępnij na innych stronach

Bądź aktywny! Zaloguj się lub utwórz konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto

Zarejestruj nowe konto, to proste!

Zarejestruj nowe konto

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się


×