NOVINKA! E-learningové kurzy umělé inteligence. Nyní AI za nejlepší ceny. Zjisti více:
NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!

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

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
michal Čepelák:12.9.2017 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.9.2017 15:17
Avatar
David Hartinger
Vlastník
Avatar
Odpovídá na michal Čepelák
David Hartinger:12.9.2017 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.9.2017 15:23
Nahoru Odpovědět
12.9.2017 15:22
New kid back on the block with a R.I.P
Avatar
Odpovídá na David Hartinger
michal Čepelák:12.9.2017 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.9.2017 16:12
Avatar
michal Čepelák:13.9.2017 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.9.2017 13:37
 
Nahoru Odpovědět
13.9.2017 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.