Diskuze: Paginace z místního článku

PHP PHP Paginace z místního článku American English version English version

Aktivity (1)
Avatar
michal.cepelak:12. září 15:17

Zdravím,
potřeboval bych poradit znažil jsem se udělat stránkování pomoci místního návodu ale hlási mi to stále error 500

Db::connect('localhost','opravy_desek','root', 'moje');
function vrathw($strana, $naStranu)
{


    Db::queryAll('SELECT * FROM servis_hw ORDER BY idhw DESC LIMIT ?,? ', ($strana - 1)* $naStranu, $naStranu );
}
function vratPocetHw()
{
    return Db::querySingle('SELECT COUNT (*) FROM servis_hw ');
}




if (isset($_GET['strana']))
    $strana = $_GET['strana'];
else
    $strana = 1;
$naStranu = 15;
$servisHW = vrathw($strana, $naStranu);
$stran = ceil(vratPocetHw() / $naStranu);

a tady to zobrazuji

<table class="ui compact celled definition table">
           <thead>
           <th>ID</th>
           <th>Datum</th>
           <th>Ticket</th>
           <th>S/N</th>
           <th>Typ hardware</th>
           <th>Závada</th>
           <th>Oprava</th>
           <th>Opravil</th>
           <th>Cena opravy</th>
           <th>-</th>
           <th>-</th>
      </thead>

         <?php
         foreach ($servisHW as $hw)
         {
             echo('<tbody>
                <tr>
                <td>' . htmlspecialchars($hw[id]).'</td>
                <td>' . htmlspecialchars($hw[datum]).'</td>
                <td>' . htmlspecialchars($hw[ticket]).'</td>
                <td>' . htmlspecialchars($hw[snhw]).'</td>
                <td>' . htmlspecialchars($hw[typhw]).'</td>
                <td>' . htmlspecialchars($hw[zavadahw]).'</td>
                <td>' . htmlspecialchars($hw[opravahw]).'</td>
                <td>' . htmlspecialchars($hw[uziv_jmeno]).'</td>
                <td>' . htmlspecialchars($hw[oprcenahw]).'</td>
                </tr>
                </tbody>
               ');
         }
         ?>

   </table>
       <?=          paginace($strana, $stran, '$strana=(strana)') ?>

podle mě je někde chyba v té podmínce ale nevím kde zkoušel jsem tam přidat i uvozovky ale stejně to nejde. je to napsané stejně jako v předloze akorát jsem změnil názvy podmínek.
Děkuji za rady

 
Odpovědět 12. září 15:17
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na michal.cepelak
David Čápka:12. září 15:22

Ten "Error 500" se ti někam loguje a tam je napsané co máš špatně. Na první pohled vidím, že funkce začínající na "vrat" nic nevrací, třeba je chyba tam.

Editováno 12. září 15:23
Nahoru Odpovědět 12. září 15:22
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na David Čápka
michal.cepelak:12. září 16:12

Změnil jsem to takle

function vratHardware($strana, $naStranu)
{
  return Db::queryAll('SELECT * FROM servis_hw ORDER BY idhw DESC LIMIT ?, ?', ($strana - 1) * $naStranu, $naStranu);
}

function vratPocetHardware()
{
  return Db::querySingle('SELECT COUNT(*) FROM servis_hw');
}

if (isset($_GET['strana']))
  $strana = $_GET['strana'];
else
  $strana = 1;
$naStranu = 15;
$servisHW = vratHardware($strana, $naStranu);
$stran = ceil(vratPocetHardware() / $naStranu);

a ještě toto

<table class="ui compact celled definition table">
            <thead>
            <th>ID</th>
            <th>Datum</th>
            <th>Ticket</th>
            <th>S/N</th>
            <th>Typ hardware</th>
            <th>Závada</th>
            <th>Oprava</th>
            <th>Opravil</th>
            <th>Cena opravy</th>
            <th>-</th>
            <th>-</th>
       </thead>

          <?php
          foreach ($servisHW as $hw)
          {
              echo('<tbody>
                 <tr>
                 <td>' . htmlspecialchars($hw[idhw]).'</td>
                 <td>' . htmlspecialchars($hw[datum]).'</td>
                 <td>' . htmlspecialchars($hw[ticket]).'</td>
                 <td>' . htmlspecialchars($hw[snhw]).'</td>
                 <td>' . htmlspecialchars($hw[typhw]).'</td>
                 <td>' . htmlspecialchars($hw[zavadahw]).'</td>
                 <td>' . htmlspecialchars($hw[opravahw]).'</td>
                 <td>' . htmlspecialchars($hw[uziv_jmeno]).'</td>
                 <td>' . htmlspecialchars($hw[oprcenahw]).'</td>
                 </tr>
                 </tbody>
                ');
          }
          ?>

    </table>
        <?=          paginace($strana, $stran, '?strana={strana}') ?>

ale fakt nechápu co temu vadilo, jak jsem to měl napsany na poprvé.
Teďka už to funguje

 
Nahoru Odpovědět 12. září 16:12
Avatar
michal.cepelak:13. září 13:37

Ještě bych měl dotaz jak použiju místo forearch, while?
pro forearch bych použil

$servisHW = Db::queryAll('SELECT ... ');
foreach ($servisHW as $hw){}

a pro while

$servisHW = Db::queryAll('SELECT ... ');
while ($row = $servisHW->fetch(PDO::FETCH_OBJ)) {

}

Nevím jestli je toto správně?
A je lepší použivat foreach nebo while?
Děkuji

Editováno 13. září 13:37
 
Nahoru Odpovědět 13. září 13:37
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.