Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pokazywanie wierszy
Forum PHP.pl > Forum > PHP
kirov
Wyświetlanie wierszy z bazy danych

Mam sobie skrypcik:
Kod
<?



$plik = file("$dzial/baza_.dat"); //Otwieram tablice

$linia = count($plik);  // Zliczam linie

if($str=="") $max=5; // Jeśli nie podaje strony to wyświetlam 5 lini

else $max=$str*5; // i tutaj mam problem 1

for($i=0; $max>$i; $i++) {  //pętelka chyba zle zrobiona problem 2

$baza=explode('||',$plik[$i]);

echo("To jest linia: $i");  

}

$max1=ceil($linia/5); //Generujemy linki 1, 2 , 3

for($z=1; $max1>$z; $z++) {

echo("[<a href=link.php?str=$z>$z</a>] ");

}

?>



Pomóżcie mi poprawić ten kod.
Jeśli wchodzę na stronę bez parametru lub z parametrem ($str=1) wyświetla mi się 5 pierwszysch lini. Jak zrobić aby przy wejściu z parametrem $str=2 wyświetliło mi kolejne 5 lini (linie od 5-10) itd.

A potem wygenerować linki 1, 2, 3, 4 ... w zależności od ilości lini. Pamiętając że każdy link wyświetli 5 lini z bazy danych.
A i jeszcze jedno, gdy mam 11 lini to wyświetla mi 1 i 2 link dobrze a 3 pobierze od 10-15 jak go ograniczyć aby przy ostatnim linku wyświetlał od np 10-11(11- ilość wszystkich lini)
No i żeby za każdym razem podawało rzeczwisty numer lini. Jeśli pokazemy str=3 to wyświetli 10-15 i dla kazdej wyświetlonej lini podaje jej rzeczywisty numer czyli To jest linia: 10, To jest linia: 11. To jest linia: 12 itd........

HELP PLEASE HELP
KaMeLeOn
[php:1:304407392b]<?php
$plik = file("$dzial/baza_.dat");
$wiersze = count($plik);
$liczba_linii = 5;

if( empty($_GET['str']) || ($_GET['str']==1) ){
$start=0;
$end=$liczba_linii-1;
} else {
$start = ( (int)($_GET['str']) - 1)*$liczba_linii;
$end = ( (int)($_GET['str'])*$liczba_linii) - 1;
$end = ( $end > $wiersze) ? $wiersze : $end;
}

for($i=$start ; $i<$end ; $i++) {
$baza = explode('||', $plik[$i]);
echo("To jest linia: $i");
// itd...
}

// itd...
[/php:1:304407392b]
Dalej sobie poradzisz....
kirov
Dzięki, ten skrypcik działa jak trza ale trzeba go jeszcze przerobić aby czytał lnie z bazy od tyłu. Ja zrobiłem coś takiego ale mam problem z określeniem wartości początkowej i końcowej pętli dla str>1

Kod
$plik = file("baza.dat"); //Plik

$wiersze = count($plik);  //Ilość lini

$liczba_linii = 6; //Ilość wyśwrtleń



if(($str=="") || ($str==1)) {  //Jeśli nie ustalmy strony lub str=1

  $start=$wiersze-1;  //Wartość dla rozpoczęcia pętli

  $end=$wiersze-$liczba_linii; } //Wartość dla zkończenia

#########Wszystko powyżej działa idealnie ##########################



else  {  //Tutaj mam problem z ustaleniem wartości

  $start = $wiersze-(($str-1)*$liczba_linii); //Dla startu

  $start = $wiersze-$start;

  $end = $wiersze-($start+(($str-1)*$liczba_linii)); // I dla końca

  $end = ( $end < $wiersze) ? $end : $wiersze; }



for($i=$start; $i>$end; $i--) { //Pętelka

echo("baza danych itd."); }


Opis skryptu: SKrypcik Ma pobierać co 6 lini z bazy danych txt od tyłu aż skończy się plik. Dla wartości str=0 lub 1 pętla działa dobrze pobiera 6 ostatnich lini. Ale mam problem z ustaleniem wartości początkowej i końcowej w zależności od przeglądanej strony czyli str=2, 3 itd. Wiecie jak to zrobić? Proszę bardzo mi jest to potrzebne.
KaMeLeOn
[php:1:9ba7a2294b]<?php
$plik = file("baza.dat");
$plik = array_reverse($plik);
?>[/php:1:9ba7a2294b]
Umieść to na początku kodu który ci dałem...

PS. Umieszczaj kod w znacznikach php.
kirov
Ale nie oto mi chodzi, muszę zachować rzeczywistą linie w pliku txt. A reverse odwróci mi baze danych i lipa. LInia ostatnia będzie linią 0, może masz inny pomysł ?
KaMeLeOn
A po co chcesz zachowywać rzeczywistą linię ?
kirov
Bo musi tak niestety być smile.gif
kirov
Umiałbyś to zrobić questionmark.gif?
Please help
KaMeLeOn
Odwróć tablicę (TRUE nie zmienia kluczy w tablicy)

[php:1:61b0a0a0af]<?php
$plik = file('nazwa_pliku');
$plik = array_reverse($plik, TRUE);
?>[/php:1:61b0a0a0af]
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.