Hvis jeg var dig ville jeg nok gøre min kode lidt mere enkel. Du har nogle mærkelige betingelser, og har en mystisk logik.
- <?php
- $side = 'nyheder.php';
-
- $query = "SELECT nyheder_emne FROM nyhed_kommentar WHERE nyheder_emne = ?";
- if ($stmt = $mysqli->prepare($query)) {
- $stmt->bind_param('i', $nyhed_id);
- /* execute query */
- $stmt->execute();
-
- /* store result */
- $stmt->store_result();
-
- $number_of_comments = $stmt->num_rows;
-
- /* close statement */
- $stmt->close();
- }
-
- $limit = 2;
- $max_number_of_pages = ceil($number_of_comments / $limit);
- $offset = !isset($_GET['page']) || $_GET['page'] < 2 ? 0 : min((int)$_GET['page'] - 1, $max_number_of_pages);
- $page = $offset + 1;
-
- if ($stmt = $mysqli->prepare('SELECT nyhed_kommentar.nyheds_kommentar_id, nyhed_kommentar.nyheds_kommentar, nyhed_kommentar.nyhed_kommentar_tidspunkt, nyhed_kommentar.nyheds_kommentar_by, nyhed_kommentar.nyheder_emne, brugere.id, brugere.brugernavn FROM nyhed_kommentar LEFT JOIN brugere ON brugere.id = nyhed_kommentar.nyheds_kommentar_by WHERE nyhed_kommentar.nyheder_emne = ? ORDER BY nyhed_kommentar.nyheds_kommentar_id ASC LIMIT ?, ?')) {
- /* Bind parametre */
- $stmt->bind_param('iii', $nyhed_id, $offset * $limit, $limit);
-
- /* Eksekver foresp?rgslen */
- $stmt->execute();
-
- /* Bind resultatet */
- $stmt->bind_result($kommentar_nyhed_id, $nyheds_kommentar, $nyhed_kommentar_tidspunkt, $kommentar_tidspunkt, $nyheder_emne, $kommentar_by, $nyhed_kommentar_brugernavn);
-
- while ($stmt->fetch()) {
- $comments[] = array(
- 'kommentar_nyhed_id' => $kommentar_nyhed_id,
- 'nyheds_kommentar' => $nyheds_kommentar,
- 'nyhed_kommentar_tidspunkt' => $nyhed_kommentar_tidspunkt,
- 'kommentar_tidspunkt' => $kommentar_tidspunkt,
- 'nyheder_emne' => $nyheder_emne,
- 'kommentar_by' => $kommentar_by,
- 'nyhed_kommentar_brugernavn' => $nyhed_kommentar_brugernavn
- )
- }
-
- $stmt->close();
- }
- ?>
- <div class="underemne">
- Du er på side <?php echo ($page+1); ?> ud af <?php echo $max_number_of_pages ?><br />
- Der er ialt postet <?php echo $number_of_comments ?> kommentare.
- </div>
- <div class="kommentarovertop620">
- <?php foreach($comments as $comment): ?>
- <p class="by"><a class="white" href="profil.php?id=<?php echo $comment['kommentar_by']; ?>"><?php echo $comment['nyhed_kommentar_brugernavn'];?></a> @ <?php echo $comment['nyhed_kommentar_tidspunkt'; ?></p>
- <?php endforeach; ?>
- </div>
- <div class="kommentaremne"><?php echo nl2br(BBcode($comment['nyheds_kommentar'])); ?></div>
- <div class="pagination">
- <a class="paginate" href="<?php echo $side; ?>?page=0">Start</a>
- <a class="paginate" href="<?php echo $side; ?>?page=<?php echo max(0, $offset-1); ?>">Forrige</a>';
- <?php for($i=1;$i<$max_number_of_pages;$i++): ?>
- <a class="paginate" href="<?php echo $side; ?>?page=<?php echo $i; ?>"><?php echo $i; ?></a>
- }
- <a class="paginate" href="<?php echo $side; ?>?page=<?php echo min($max_number_of_pages, $offset+1); ?>">Næste</a>';
- <a class="paginate" href="<?php echo $side; ?>?page=<?php echo $max_number_of_pages; ?>">Slut</a>
- </div>
I ovenstående har jeg ikke ledt efter fejl, eller rettet mine egne (såfremt der er nogle) men har blot ryddet op.
Som udvikler er din vigtigeste opgave at skrive funktionalitet uden at have gentagelser i koden. Og jeg fandt et par stykker.