kicaj
4.01.2004, 21:10:49
[php:1:ab2e04599f]<?php
$zapytanie5 = "SELECT id FROM ".$dbprefix."_post WHERE id_temat='".$wiersz['id']."'";
$wykonaj5 = mysql_query($zapytanie5);
$licz5 = mysql_num_rows($wykonaj5);
if($licz5 > "2") {
$idz = ceil($licz5 / 2);
echo "[ Idz do: ";
for($i=1; $i<=$idz; $i++) {
echo "".$i." | ";
}
echo "]";
}
?>[/php:1:ab2e04599f]
Efekt:
Kod
[ Idz do: 1 | 2 | 3 | ]
1. Jak zrobic zeby miec wynik bez tej ostatniej pionowej kreski??
2. W jaki sposob zrobc wtedy kiedy bedzie duzo stron wynik bedzie sie przedstawial nastepujaco:
Kod
[ Idz do: 1 | 2 | 3 ... 4 | 5 | 6 ]
BzikOS
4.01.2004, 21:17:44
[php:1:e3176f5148]<?php
$text = "[ Idz do: ";
for($i=1; $i<=$idz; $i++)
$text .= $i . " | ";
$text = substr( $text, 0, -2 );
$text .= "]";
print( $text );
?>[/php:1:e3176f5148]
1) Zobacz czy to zadziała :
[php:1:bfcf59c089]<?php
for($i=1; $i<=$idz; $i++) {
if($i<$idz){
echo "".$i." | ";
}else{
echo $i." ";
}
}
?>[/php:1:bfcf59c089]
kicaj
4.01.2004, 21:28:10
a ad2)
nobody
4.01.2004, 21:33:07
[php:1:b6949cb9b9]<?php
$ceil=ceil($licz5/2);
if($ceil > "2") {
print "[ ";
for($i=1; $i<$ceil; $i++){
if($i!=$ceil&&$i!=1){ print " | "; }
print $i;
if($ceil>10&&$i==3){ print " | ..."; $i=$ceil-4; }
}
print " ]";
}
?>[/php:1:b6949cb9b9]
O to Ci chodzilo?
zalew
4.01.2004, 21:50:24
[php:1:93ef3488c3]<?php
if (($i > 3) || ($i < count($idz-3))) {
echo "...";
}
?>[/php:1:93ef3488c3]
sadzilem, ze kazdy programista umie zalozyc zwyklego ifa?
nobody
4.01.2004, 21:58:25
spenalzo
4.01.2004, 22:08:32
Ad 1 i 2:
[php:1:0aa7ee6095]<?php
$zapytanie5 = "SELECT id FROM ".$dbprefix."_post WHERE id_temat='".$wiersz['id']."'";
$wykonaj5 = mysql_query($zapytanie5);
$licz5 = mysql_num_rows($wykonaj5);
if($licz5 > "2") {
$idz = ceil($licz5 / 2);
echo "[ Idz do: ";
for($i=1; $i<=$idz; $i++)
{
$pn[]=$i;
}
$ile=count($pn);
if($ile < 3)
{
echo implode(" | ",$pn);
}
elseif($ile > 3 && $ile <= 6)
{
echo implode(" | ",array_slice($pn,0,3)) ." ... ";
}
elseif($ile > 6)
{
echo implode(" | ",array_slice($pn,0,3)). " ... ". implode(" | ",array_slice($pn,($ile-3),3));
}
echo " ]";
?>[/php:1:0aa7ee6095]
kicaj
4.01.2004, 23:10:28
dzieki za odpowiedzi, wzialem je jako podpowiedzi i wymyslilem takie cos:[php:1:4a439069ab]<?php
echo "[ IdĽ do: ";
$idz = ceil($licz5 / 2); //tworzy liczbe stron
$ile = "3"; //liczba wyswietlanych pierwszych i ostatnich podstron
if($idz <= ($ile * "2")) {
for($i=1; $i<=$idz; $i++) {
if($i < $idz) {
echo "".$i.", ";
} else {
echo "".$i."";
}
}
} elseif($idz > "6") {
for($i=1; $i<=$ile; $i++) {
if($i < 3) {
echo "".$i.", ";
}else{
echo "".$i."";
}
}
echo " ... ";
$koniec = $idz - $ile + 1;
for($i=$koniec; $i<=$idz; $i++) {
if($i < $idz) {
echo "".$i.", ";
}else{
echo "".$i."";
}
}
}
echo " ]";
?>[/php:1:4a439069ab]
zalew
5.01.2004, 01:42:30
Cytat
a wiec wynik tego to:
............................[...]
I to tez nie dokonca bo nie wiem co zliczasz poprzez count()?
nie dalem kodu gotowego do uzycia, tylko dalem podpowiedz.. chodzi mi o to, ze jesli listujesz cos obojetnie czy z tablicy czy z petli to pytanie o to 'jak zrobic by pierwsze 3 i ostatnie 3 byly wyswietlane a reszta nie' samo przez siebie daje odpowiedz.. pytanie o to 'jak zrobic by ostatni nie wyswietlal kreski' tez jest dla mnie conajmniej dziwne na programiste..
Widze że temat często sie powtarza, do tego wasze podejście jest nieco błędne. Nie chodzi tylko o to by wyświetlić 3 pierwsze i 3 ostatnie, bo co mi z takiego czegoś? Będe chciał przejść na strone 4 i widzieć dwie kolejne, tak samo z 100 i 1000

Tutaj trzeba troche bardziej skomplikowanego algorytmu, a przedewszstkim większej wyobraźni
Polecam poczytać ten wątek:
http://forum.php.pl/viewtopic.php?t=9566
kicaj
5.01.2004, 16:44:04
...akurat w moim przypadku chcialem osiagnac wynik zawsze pierwszych i ostatnich 3
Rozumiem Cie i wlasnie sie za to teraz biore, potrzebne mi to do czegos innego
UPDATE: 17.39
kicaj
6.01.2004, 16:14:05
no i wkoncu zrobilem tesh tak jak cudi chcial, tylko mam pewnien problem!!
[php:1:93a7966fe1]<?php
$stron = ceil($licz5 / 2); //tworzy liczbe stron
//$_GET['strona'] numer aktualnej strony
$ile = "3"; //ilosc wyswietlanych podstron po i przed $_GET['strona']
if(!$_GET['strona']) {
for($i=1; $i<$stron!=$i>$ile; $i++) {
if($i == "1") {
echo "".$i." ";
} else {
echo "<a href="temat.php?temat=".$_GET['temat']."&strona=".$i."">".$i."</a> ";
}
}
} else {
if(($stron > "7") && ($_GET['strona'] != "1")) {
echo "<a href="temat.php?temat=".$_GET['temat']."&strona=1">pierwsza</a> ";
}
$od = $_GET['strona'] - $ile;
if($_GET['strona'] < "4") {
for($i=1; $i<$_GET['strona']; $i++) {
echo "<a href="temat.php?temat=".$_GET['temat']."&strona=".$i."">".$i."</a> ";
}
} else {
for($i=$od; $i<$_GET['strona']; $i++) {
echo "<a href="temat.php?temat=".$_GET['temat']."&strona=".$i."">".$i."</a> ";
}
}
echo " ".$_GET['strona']." ";
$od = $_GET['strona'] + 1;
$do = $_GET['strona'] + $ile + 1;
for($i=$od; $i<$do!=$i>$stron; $i++) {
echo "<a href="temat.php?temat=".$_GET['temat']."&strona=".$i."">".$i."</a> ";
}
if(($stron > "7") && ($_GET['strona'] != $stron)) {
echo " <a href="temat.php?temat=".$_GET['temat']."&strona=".$stron."">ostatnia</a> ";
}
}
?>[/php:1:93a7966fe1]
Nie jest to moze najlepsze rozwiazanie, ale dobrze dziala, z tym ze jesli chce wyswietlic strona nr 6 to skrypt sie zawiesza...
Czemu?
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.