Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Foreach dla 5 ostatnich wpisów
Forum PHP.pl > Forum > Przedszkole
seweryn
Witam, mam taki kod:

Kod
<?php
        $k = 0;
        foreach ($this->orderlist as $i => $row) {
            $editlink = JRoute::_('index.php?option=com_virtuemart&view=orders&layout=details&order_number=' . $row->order_number);
            ?>
            <tr class="<?php echo "row$k"; ?>">
                <td align="center">
                    <a href="<?php echo $editlink; ?>"><?php echo $row->order_number; ?></a>
                </td>
                <td align="center">
                    <?php echo JHTML::_('date', $row->created_on); ?>
                </td>
                <td align="center">
                    <?php echo JHTML::_('date', $row->modified_on); ?>
                </td>
                <td align="center">
                    <?php echo ShopFunctions::getOrderStatusName($row->order_status); ?>
                </td>
                <td align="center">
                    <?php echo $this->currency->priceDisplay($row->order_total); ?>
                </td>
            </tr>
    <?php
            $k = 1 - $k;
        }
    ?>


Obecnie wyświetla on wszystkie zamówienia składane przez użytkownika.
Co należałoby zmienić/dodać, aby na liście pojawiły się tylko na przykład 5 ostatnich wierszy z danymi, a nie wszystkie?

Bardzo proszę o pomoc.
Z góry dziękuję.
darko
Jeśli klucze numeryczne (indeksy), to możesz spróbować zamiast:
  1. $k = 0;
  2. foreach ($this->orderlist as $i => $row) {


  1. $temp = range(count($this->orderlist) - 5, count($this->orderlist) - 1);
  2. foreach ($temp as $t) {
  3. $row = $this->orderlist[$t];
  4. // i dalej bez zmian
seweryn
Dziękuję, działa (wyświetla 6 ostatnich wierszy tabeli).

No i właśnie źle sformułowałem to co chciałbym osiągnąć - chodziło mi o 5 ostatnio dodanych wierszy do tej tabeli, czyli po prostu 5 pierwszych wierszy wyświetlanej tabeli.

Przepraszam, że namieszałem.

Bardzo proszę o uwzględnienie mojego błędu.
vonski
  1.  
  2. foreach (array_slice($this->orderlist, 0, 5) as $i => $row) { ... }
  3.  


To wyswietli 5 pierwszych elementow z tablicy po ktorej iterujesz.
darko
Ewentualnie, oprócz propozycji powyżej można zrobić tak:
  1. $k = 0;
  2. $licznik = 0;
  3. foreach ($this->orderlist as $i => $row)
  4. {
  5.  
  6. // (...) tutaj Twój kod
  7.  
  8. $licznik++;
  9. if($licznik == 5)
  10. {
  11. break;
  12. }
  13.  
  14. }
seweryn
Oba rozwiązania dają efekt taki jak chciałem.

Dziękuję bardzo za pomoc smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.