Autor Zpráva
dunky
Profil
Abych si vyzkoušel svoje nově nabité dovednosti v php, sesmolil jsem si toto jednoduche stránkovaní.
Zajímalo by mě, co byste udělali lépe, nebo jinak. Ocenil bych odkaz na nějake pořádně udělané stránkování, abych mohl porovnat :)
//strankovani
$zaznamu_na_stranku = 10;
$sql_strankovani = "select * from prikazy";
$query_strankovani = mysql_query($sql_strankovani);
$pocet = mysql_num_rows($query_strankovani);
$max_stranka = ceil($pocet/$zaznamu_na_stranku) + 1;
for($i=1; $i < $max_stranka; $i++) {
  if(!$stranka) { 
    $stranka = 1;
  }
  if($i == $stranka) {
    echo "<b>$i</b>";
  } else {
    echo '<a href="'.$PHP_SELF.'?stranka='.$i.'">'.$i.'</a>';
  }
}
//nacteni z db
$zacatek = $stranka * $zaznamu_na_stranku - $zaznamu_na_stranku;
$sql = "select * from prikazy limit ".$zacatek.",".$zaznamu_na_stranku;
$query = mysql_query($sql);
while($zaznam = mysql_fetch_array($query)) {
  echo '
      <tr>
        <td>
          <b>'.$zaznam["id"].'</b>
        </td>
        <td>'.
        $zaznam["typ"].'
        </td>
        <td>'.
        $zaznam["prikaz"].'
        </td>
        <td>'.
        $zaznam["popis"].'
        </td>
      </tr>
  ';
};
Majkl578
Profil
Pořádně udělané stránkování? Třeba Nette\Paginator? :)

Co jinak?
- Doporučil bych používat camelCase, přijde mi pak kód přehlednější.
- $PHP_SELF se nepoužívá, místo toho je $_SERVER['PHP_SELF'].
- Před while není ošetřené vrácení false funkcí mysql_query.
- Za } se nedělá středník.

Našly by se i další věci, ale to by na začátečníka bylo moc velké sousto (konkrétně mluvím o oddělení výstupu od php logiky - šablony).
dunky
Profil
Ne klidně pokračuj, docela by mě zajímalo o čem to vlastně mluvíš, popřípadě bych opět ocenil odkaz...
Pomocí objektů je to takový divný, nemůžu si pomoct ale moc mi v php nesedí...
denCo
Profil
daj navigáciu do funkcie a kde budeš chcieť vypísať stránkovanie, tam jednoducho iba zavoláš funkciu
dunky
Profil
no funkcí to zapsat umím, tak nevím proc by to melo byt moc na zacatecnika

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: