Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: idz do strony...
Forum PHP.pl > Forum > PHP
kicaj
[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
[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]
dob
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
a ad2) questionmark.gif
nobody
[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
[php:1:93ef3488c3]<?php
if (($i > 3) || ($i < count($idz-3))) {
echo "...";
}
?>[/php:1:93ef3488c3]

sadzilem, ze kazdy programista umie zalozyc zwyklego ifa?
nobody
Cytat
[php:1:76e85e5f7e]<?php
if (($i > 3) || ($i < count($idz-3))) {
echo "...";
}
?>[/php:1:76e85e5f7e]

sadzilem, ze kazdy programista umie zalozyc zwyklego ifa?

laugh.gif laugh.gif laugh.gif laugh.gif laugh.gif laugh.gif laugh.gif laugh.gif laugh.gif laugh.gif
Gdzie to niby mamy wsadzic? Po $i domyslam sie ze do petli for a wiec wynik tego to:
................................................................................
......................................[...]
I to tez nie dokonca bo nie wiem co zliczasz poprzez count()?
spenalzo
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
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
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..
Cudi
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 smile.gif Tutaj trzeba troche bardziej skomplikowanego algorytmu, a przedewszstkim większej wyobraźni winksmiley.jpg
Polecam poczytać ten wątek: http://forum.php.pl/viewtopic.php?t=9566 smile.gif
kicaj
...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 smile.gif

UPDATE: 17.39
kicaj
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.
Invision Power Board © 2001-2025 Invision Power Services, Inc.