Autor Zpráva
Ewík
Profil *
Zdar, protože se v php teprve rozkoukávám a skripty dělám z návodů, chtěl bych se tu zeptat jak by šlo vytvořit stránkování v tomto skriptu:
function display_news()
{
$connect = mysql_connect('localhost', '*****', '********');
  if (!$connect)
    die('<font color=\"red\">Spojení s databází se nepodařilo.</font>');
  $select = mysql_select_db('trywebi', $connect);
  if (!$select)
    {
    echo mysql_errno($connect), ': ',mysql_error($connect), '<br>';
     die('<font color=\"red\">Nepodařilo se vybrat databázi.</font>');
    }
$sql = 
"SELECT "
."DATE_FORMAT(write_time, '%e.%c.%Y') AS write_time,"
."autor,"
."text "
."FROM articles "
."ORDER BY write_time DESC"
;
$result = mysql_query($sql,$connect);
if (!$result)
  {
  echo mysql_errno($connect), ': ',mysql_error($connect),'<br>';
  die('<font color=\"red\">Nepodařilo se vykonat sql dotaz.</font>'); 
  }
while(is_array($data = mysql_fetch_array($result)))
{
  $write_time = $data['write_time'];
  $text = $data['text'];
  $autor = $data['autor'];
  
  echo '<fieldset>';
  echo '<legend><b>',$write_time,' | ',$autor,'</b></legend>';
  echo $text;
  echo '</fieldset>';
}
mysql_free_result($result);
mysql_close($connect);
  
}
display_news('news');

Přál bych si aby mi tu někdo poradil, ne typu: Už to tu je nebo Imgtfy ci googlu.
Kód normálně funguje.
Předem děkuji za radu .
miskith
Profil
Pokud chápu problém, tak si
někde na začátek si hoď:
if (!isset($_GET['page']) || !is_numeric($_GET['page'])) {$_GET['page'] = 0;}

A do SQLka si poté přidej:
LIMIT ".($_GET['page']*50).", 50

Kde číslo 50 si změň na počet položek na stránku.
Ewík
Profil *
Já to potřebuju typu: článek 1, 2... a nakonci třeba po 7 článcích by bylo stránka 1, 2, 3, 4, atd. pokud chápete.
miskith
Profil
Ano..to je to co sem napsal..jen sem ti nedopsal ještě jak udělat dole to číslování...
Z celkového počtu článků si zjistíš kolik chceš stránek (třeba máš 100 článků a 50 článků na stránku... Tudíž dvě stránky (100/50=2))
No a potom si uděláš generování odkazů pomocí zopakování cyklu Xkrát, kde X je počet stránek.
Ewík
Profil *
Nemohl bys to napat? Netuším jak zjistit z databáze kolik je tam článků a nakonec napsání těch odkazů ;_(
miskith
Profil
Nedělal jsem to podle nějakého návodu nebo podle už sepsaného scriptu, ale psal jsem to normálně v prohlížeči do políčka, takže tam může být někde chyba. Kdyžtak napiš kdyby ti to nešlo (Co to dělá, co to vypisuje...).
Sepíšu jen potřebné scripty:
//Na začátek kódu hodit ochranu proti "bugu" (kdyby nebylo odesláno číslo stránky)
if (!isset($_GET['page']) || !is_numeric($_GET['page'])) {$_GET['page'] = 0;}

//Zjistění počtu řádků
$rows = mysql_query("SELECT Count(write_time) FROM articles");

//SQL proměnná na výpis dat podle stránky
$sql = "SELECT DATE_FORMAT(write_time, '%e.%c.%Y') AS write_time, autor, text FROM articles 
ORDER BY write_time DESC LIMIT ".($_GET['page']*50).", 50";

//A na libovolné místo si hodit stránkování
echo "Přejít na stranu: ";
$pages = ceil($rows/50);
for ($i = 1; $i<=$pages; $i++;)
{
    echo "<a href='blah.php?page=".$i."'>".$i."</a>\n";
} 
Ewík
Profil *
jo, jasně, zkusím a napíšu, díky :)
Ewík
Profil *
1 chyba (zatim) mi to hazi
Parse error: syntax error, unexpected ';', expecting ')' in /home/users/krekr/try-web.hys.cz/web/core.php on line 99
je to od ... for ($i = ...
echo "Přejít na stranu: ";
$pages = ceil($rows/50);
for ($i = 1; $i<=$pages; $i++;)
{
    echo "<a href='blah.php?page=".$i."'>".$i."</a>\n";
}
panther
Profil
Ewík:
neočekávaný středník, očekávaný konec závorky na řádku 99 (třetí zde). Opravdu na tohle potřebuješ psát do diskuse? Nestačí vzít slovník, přeložit si, co ti chyba říká a hledat ji na uvedeném řádku?
miskith
Profil
Ewík:
Přepsal sem se.. stačí smazat poslední středník...
for ($i = 1; $i<=$pages; $i++)
Ewík
Profil *
Díky že jsi měl se mnou tu trpělivost :)
miskith
Profil
Koukám, že sem tam udělal chybu. Nahraď:
for ($i = 1; $i<=$pages; $i++)

za
for ($i = 0; $i<$pages; $i++)
Ewík
Profil *
jop :)

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:

0