Autor Zpráva
Martin011
Profil
Ahoj, můžete mi někdo poradit, jak udělat jednoduché stránkování v php?
něco ve stylu: předchozí 1 2 3 4 5 další
Díky za jakoukoliv pomoc. Snažím se, ale nějak mi to nejde.
AM_
Profil
To se tady řešilo už asi tisíckrát, diskuse má vyhledávání, nebo to zkus tady:
http://lmgtfy.com/?q=str%C3%A1nkov%C3%A1n%C3%AD+PHP

pokud máš něco rozdělané a máš konkrétní problém, napiš ho.
Martin011
Profil
Jo já vím, že se to tu už hodněkrát řešilo. Četl jsem o tom i dost článků. Tak nejdříve mě napadl způsob stejný jak u menu, ale asi to je blbost.

include ("neco.php");
$stranka = $_GET['page'];
if (!isset($_GET['page']))
$soubor = "soubory/".$stranka.".php"; 
if (!file_exists($soubor)) {

} 
include ($soubor);


a v includovaném souboru:

<?php

echo "<ul>";
echo "<li";
if ($page=="1") { 
   echo " class='aktivni'";
}
echo "><a href='index.php?page=1'>1</a></li>";
echo "<li";
if ($page=="2") { 
   echo " class='aktivni'";
}
echo "><a href='index.php?page=2'>2</a></li>";
.
.
.


"</ul>";
?>



ale zase nevim, jak by se to mělo označit v css. měl jsem tam něco jako:



ul li a:hover { text-decoration:underline;color:black} 
ul li .aktivni  {  color:black; text-decoration:none}



Zkoušel jsem to i jinak přes db. Ale jestli opravdu někdo víte, jak na to, tak mi prosím vás poraďte, příště budu zase o něco chytřejší. :-))

(opravdu jednoduché stránkování, i kdyby to třeba bylo 1 2 3.., místo - předchozí 1 2 3 4 5 další)
Díky moc
SwimX
Profil
Martin011:
http://diskuse.jakpsatweb.cz/?action=vthread&forum=9&topic=97738&page=-1 ? //edit, bez toho .sanbox :)
AM_
Profil
a co takhle zkusit něco z kódů z google nebo tady? jasně, že to, co píšeš, je blbost - přinejmenším, že to řešíš příšerným větvením místo cyklu. Proč by ti někdo sem měl psát znova stránkovač, když jich jsou na webu stovky?
Martin011
Profil
jj, tak dobře vyzkouším a uvidím. zatím díky :-))
Radek9
Profil
Martin011:
Edit: Tak nic :D jsem to přehlídnul :D
Martin011
Profil
uvedu celý problém. Mám aktivní položku v php (url: index.php?str=neco). A v ní chci udělat stránkování.
Třeba normální text. Na jedné stránce bude něco. Kliknu na druhou stránku-ta se zvýrazní jako hlavní. Tam je zase jiný obsah.

třeba něco jako: předchozí 1 2 3 4 5 další, ale v aktivní položce php

Takže vůbec nevím, jak mám zapsat aby, se zvýraznila aktivní stránka a ještě zůstala zvýrazněná položka menu. Něco podobného jako na [url=google.cz]google[/url]. Když kliknete např. na obrázky, zvýrazní se vám. Dáte třeba něco hledat a vyjede vám text a dole máte stránkování. Každá stránka(123) se zvýrazní, když na ní kliknete. Takže máte vlastně 2 php v sobě. Něco takového myslím.
SwimX
Profil
Martin011:
Takže máte vlastně 2 php v sobě. Něco takového myslím.
jsem si jist, že todle nechápu.
můj odkaz -> je stránkování, okkomentované, snad není tak těžké ho použít.

obarvení dělá css řekněme že k té mé fci by mělo jít:
p.pages a:hover{
  color: yellow;
}
p.pages span.active{
  color: red;
}

aby fungovalo to druhé, je třeba
tuto řádku:
 echo $strana."&nbsp;|&nbsp;";

upravit na
 echo "span class='active'>".$strana."</span>&nbsp;|&nbsp;";
Martin011
Profil
Díky moc za radu. Když to dám celé dohromady, tak mi to ale na wz.cz hlásí tohle:

Warning: mysql_query(): Access denied for user 'nobody'@'zeus' (using password: NO) in /3w/wz.cz/m/martins-web/soubory/zaj.php on line 72

Warning: mysql_query(): A link to the server could not be established in /3w/wz.cz/m/martins-web/soubory/zaj.php on line 72

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /3w/wz.cz/m/martins-web/soubory/zaj.php on line 72


Musí se tam někde nastavovat potřebné údaje do db?
Martin011
Profil
Udělal jsem to, jak jsi mi řekl-odkaz,css a změnil řádek.
SwimX
Profil
Martin011:
Musí se tam někde nastavovat potřebné údaje do db?
v mé funkci ne, ale ty je na začátku skriptů mít budeš muset, nečekaně :)
Martin011
Profil
takže začátek skriptu bude vypadat nějak takhle?

<?php

$db_server = "localhost";
$db_login = "jmeno";
$db_heslo = "heslo";
$db_jmeno = "databaze";


a teď ten skript
?>


pořád mi to píše:

Warning: mysql_query(): Access denied for user 'nobody'@'zeus' (using password: NO) in /3w/wz.cz/m/martins-web/soubory/zaj.php on line 79

Warning: mysql_query(): A link to the server could not be established in /3w/wz.cz/m/martins-web/soubory/zaj.php on line 79

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /3w/wz.cz/m/martins-web/soubory/zaj.php on line 79
Martin011
Profil
pošlu ti celý skript:



<style>

p.pages a:hover{
  color: yellow;
}
p.pages span.active{
  color: red;
}
</style>


<?php

$db_server = "server";       
        $db_login = "neco";             
        $db_heslo = "d";             
        $db_jmeno = "neco";   
// zjistime jestli nekde jsme, jinak první strana
if(isset($url['dir4'])){ // čtvrtá GET proměnná za lomítkem strana-x
  $strana = split('-',$url['dir4']);
  $strana = is_numeric($strana[1])?$strana[1]:1;
}
else $strana = 1;

// zjistíme počet záznamů v tabulce
$pocetradku = mysql_result(mysql_query("SELECT COUNT(*) from diskuze "), 0);
if ($pocetradku>0) { // pokud nějaké jsou -> nezbytné výpočty, mysql dotaz, stránkování, jinak nic
  $pocet = 1;
  $od = ($strana-1) * $pocet;
  $limit = "limit $od, $pocet";
  $cl=mysql_query("SELECT * FROM diskuze $limit;");
  strankovani($pocet, 3, "/{$url['dir1']}/{$url['dir2']}/{$url['dir3']}/strana-",  $strana, $pocetradku);
}

function strankovani($pocet_radek, $okolo, $url, $strana, $celkem_radek){
  if ($celkem_radek>$pocet_radek){
    echo "<p class='pages'>";
    if ($strana == 1) {
      echo "Začátek&nbsp;|&nbsp;";
      echo "Předchozí&nbsp;|&nbsp;";
    }
    else {
      echo "<a href=\"".$url."1/\">Začátek</a>&nbsp;|&nbsp;";
      echo "<a href=\"".$url."".($strana-1)."/\">Předchozí</a>&nbsp;|&nbsp;";
    }

    for($i = $okolo; $i > 0; $i--){
      if(($strana-$i)>0) echo "<a href=\"".($url).($strana-$i)."/\">".($strana-$i)."</a>&nbsp;|&nbsp;";;
    }

    echo "span class='active'>".$strana."</span>&nbsp;|&nbsp;";
    $posledni_strana = ceil($celkem_radek/$pocet_radek);

    for($i = 1; $i <= $okolo; $i++){
      if(($strana+$i)<=$posledni_strana) echo "<a href=\"".($url).($strana+$i)."/\">".($strana+$i)."</a>&nbsp;|&nbsp;";
    }

    if ($posledni_strana == $strana) {
      echo "Následující&nbsp;|&nbsp;";
      echo "Konec";
    }
    else {
      echo "<a href=\"".$url.($strana+1)."/\">Následující</a>&nbsp;|&nbsp;";
      echo "<a href=\"".$url.$posledni_strana."/\">Konec</a>";
    }
    echo "</p>";
  }
}
?>








Co je tam špatně?
SwimX
Profil
Martin011:
chceš mi tvrdit že naplněné několika proměnných tě připojí do DB?
http://www.linuxsoft.cz/article.php?id_article=336
Martin011
Profil
ale musí tam na začátku být přihlašovací údaje do db?
takže by to mohlo stačit takhle:

<?
mysql_connect("localhost", "uzivatel", "heslo");
mysql_select_db("mojedb");
?>

ne?
SwimX
Profil
Martin011:
musí.
ale takle.
mysql_connect( $db_server, $db_login, "heslo");
mysql_select_db("mojedb");
...

jo přesně tak.
Martin011
Profil
no teď ti teda řeknu, teď mi to nehlásí nic, ale také se mi nic nezobrazuje
Martin011
Profil
nic jako předchozí, konec a tak
Martin011
Profil
nevíš, čím by to mohlo být? Tobě to funguje?
Martin011
Profil
co se má dát místo toho dir?
SwimX
Profil
Martin011:
název $_GET Proměnné ve které je tvoje číslo aktuální stránky. a ne místo dir ale místo velého $url[dir]
Martin011
Profil
jak číslo?
$_GET [str]
Martin011
Profil
takže místo "velého $url[dir]" dám $_GET?
Martin011
Profil
$_GET['1'] takhle třeba?
Martin011
Profil
takže místo tohohle skriptu
$url['dir4']

dám co?

a namísto tohohle
$url['dir1']}/{$url['dir2']}/{$url['dir3']


?

Promiň, že tě už asi otravuji, ale co tam mám dát místo toho? Jeden z posledních dotazů
SwimX
Profil
Martin011:
Jeden z posledních dotazů
poslední. jdu spát.
místo tohodle: $url['dir1']}/{$url['dir2']}/{$url['dir3'] si dej třeba http://www.tvojewww.cz/index.php?neco=ahoj&strana=1

a místo $url[dir4] příde např $_GET['strana']
Martin011
Profil
dobře díky moc. Měj se dobře. A díky :-)))

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: