webmaster, czcionki, szablony, skrypty, kursy: php, html, mysql, webmaster group / SITEQL.net \ skrypty, kursy: html, php, mysql, czcionki, darmowe szablony stron www, grafika, flash i swish, webmaster group, porady php, html i javascript, tworzenie stron www, katalog stron www, forum dla webmastera oraz obszerny download, pliki, za darmo w sieci, wszystko dla ciebie i twojej strony www, zapraszamy | html, php, skrypty, czcionki, webmaster, szablony, javascript, mysql, download, scrypty, www, gif, jpg, kursy, kurs php, kurs, php3, php4, porady, artykuły, darmowe szablony stron www, pliki, skrypty cgi, webmaster group, skrypty php, skrypty javascript
 

Darmowe Pozycjonowanie - www.LiveLink.pl

 
 

Menu


 Porady PHP:

Porcjowanie wyników zapytania w bazie tekstowej

Jednym z najczęściej zadawanych pytań jest jak porcjować wyniki zapytania w "bazie" tekstowej. Nie mamy w tym wypadku tak jak w MySql-u możliwości określenia limitu od-do
(jak to wygląda w MySql opiszę następnym razem).

Aby zrozumieć zasadę działania takiego wyświetlania
danych musimy najpierw przyglądnąć się pętli for:

for ($index=0; $index < 20; $index++){
}

powyższa pętla wyświetli nam pozycje od 0 do 20
(wyświetlamy pozycje dopóki zmienna $index jest mniejsza od 20)

Aby porcjować pozycję musimy cyfry 0 i 20 zamienić na zmienne np.

for ($index=$pos; $index < $ilepoz; $index++){
}


-------------------------------------------------------------

$pos="20";
$ilepoz="30";
//zakładamy że powyższe zmienne zostały przesłane linkiem
for ($index=$pos; $index < $ilepoz; $index++){
}


ten przykład wyświetli nam pozycje od 20 do 30 tym samym jeśli prześlemy w linku do następnej strony ostatnie wartości tych zmiennych i dodamy maksymalną ilość wyświetlanych pozycji na stronie (w tym wypadku 20)
wyświetlimy pozycje: od wartości $pos + 20 do wartości $ilepoz + 20.

-------------------------------------------------------------

...a teraz praktycznie:

Przykład:
Załóżmy że wcześniej wprowadzaliśmy dane z formularza
o polach imie i email np. w ten sposób:

<?
$fp = fopen("dane.txt", "a");
flock($fp,2);
fwrite($fp, "$imie||$email||\n");
flock($fp,3)
fclose($fp);
?>


-------------------------------------------------------------

Skrypt wyświetlający:

<?
$max="20";//tu ustawiamy maksymalną ilość wyświetlanych pozycji na stronie
$count="0";
//jeśli zmienna next jest pusta zaczynamy od pozycji 0
if($next==""){$next="0";}
else{$next=$max;}

//jeśli zmienna pos przesyłana w linku jest pusta ustawiamy jej wartość na 0
//jeśli nie dodajemy do niej zmienną next która przejęła wartość max czyli 20
if($pos==""){$pos="0";}
else{$pos=$pos+$next;}

//tu określamy do której pozycji mamy wyświetlić dane
if($ilepoz==""){$ilepoz=$max;}
else{$ilepoz=$ilepoz+$next;}

$plk = file("dane.txt");

//wykonujemy pętle i dzielimy plik najpierw linie później tekst
//pomiędzy operatorami ||
for ($index=$pos; $index < $ilepoz; $index++)
{ $g = split("\|", chop($plk[$index]));
$split = explode("||", $plk[$index]);
$count++;

//wyświetlamy elemeny tablicy jeśli nie są puste
if(($split[0]!="") && ($split[1]!="")){
echo "$count. <a href=mailto:\"$split[1]\">$split[0]</a><br>";}
}
//jeśli wyświetlana pozycja jest większa od maksymalnej robimy link wstecz
//tym samym link pojawi się tylko na następnych stronach
if($pos>="$max"){
echo"<a href=\"javascript:history.back()\"><< wstecz</a> ";
}
//jeśli ostatnia wyświetlona pozycja jest mniejsza od ilości wszystkich pozycji
//w tablicy wyświetlamy link do następnych
//to jak przedstawimy linki do następnych stron zależy już od naszej pomysłowości
if($ilepoz<count($plk)){
echo"<a href=\"index.php3?next=$max&pos=$pos&ilepoz=$ilepoz\">następne >></a>";
}
//tu wyświetlamy np. numer wyświetlonej strony
$numer_strony = $ilepoz/$max;
echo"<br><br><b>$numer_strony strona</b><br><br>";
?>


Ogólnie zasada jest bardzo prosta:
przesłać ostatnie wartości zmiennych w pętli do następnej strony i dodać do nich ile pozycji następnych ma wyświetlić - najprostsza matematyka.

Praktyczny przykład będzie do podglądnięcia w UltraNews v04...a więc powodzenia :)

dodał: Bastek

Expekt Poznań Porównywanie cen expekt Torebki