Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] wyświatlanie tablicy
Forum PHP.pl > Forum > Przedszkole
pytek
Witam,
Mam metodę w klasie która wyciąga dane z tablicy a następnie zwraca całą tablicę:

Kod
public function wszystkie_logowania($db_sql, $db_uchwyt, $fetch, $u_id)
{
$this->db_sql = $db_sql;
$this->db_uchwyt = $db_uchwyt;
$this->fetch = $fetch;
$this->limit = $limit;

$db_sql = "SELECT * FROM online_logs WHERE u_id = '$u_id' ORDER BY logs_data DESC LIMIT 30";
$db_uchwyt = $this->query($db_sql);
$fetch = $db_uchwyt->fetch_array(MYSQLI_ASSOC)
return $fetch;
}


Następnie wywołuję ją po utworzeniu egzemplarza klasy i tablica jest zwracana poprawnie, ale niestety nie wiem jak wyświetlić jej całą zawartość. Jest to tablica asocjacyjna. O ile kod postaci:

Kod
public function wszystkie_logowania($db_sql, $db_uchwyt, $fetch, $u_id)
{
$this->db_sql = $db_sql;
$this->db_uchwyt = $db_uchwyt;
$this->fetch = $fetch;
$this->limit = $limit;

$db_sql = "SELECT * FROM online_logs WHERE u_id = '$u_id' ORDER BY logs_data DESC LIMIT 30";
$db_uchwyt = $this->query($db_sql);
while ($fetch = $db_uchwyt->fetch_array(MYSQLI_ASSOC)) {
echo '<table>
<tr>
    <td class="error">'.++$i.'.</td>
    <td class="error3">'.$fetch['logs_data'].'</td>
    <td class="error">z IP:</td>
    <td class="error3">'.$fetch['logs_ip'].'</td>
</tr>
</table>';    
}


działa poprawnie, to jednak chciałbym takiego uniknąć i po prostu zwrócić tablicę a następnie w miejscu wywołania przeformatować ją po swojemu (klasa taka jest bardziej uniwersalna). Odwołuję się więc do tej metody:

Kod
$logi = $panel->wszystkie_logowania($db_sql, $db_uchwyt, $fetch, $u_id);
echo $logi;


i jak się domyślacie w pierwszym przypadku gdzie w metodzie dałem pętle while wyświatla wszystko, ale druga wersja kodu gdzie zwraca tablice jako zmienna nie wiem jak sie do niej odwolac podczas wyświetlania np. w pętli while. Wewnątrz klasy gdzie wpisuję while ($fetch = $db_uchwyt->fetch_array(MYSQLI_ASSOC)) {...} wszystko jest jasne, ale jak to samo zrobić gdy mam tylko zmienną tablicową $logi? Próbowałem także z foreach i list ale coś mi nie wychodzi. Bardzo proszę o waszą pomoc.
Cezar708
hmm..

a może spróbujesz tak:

  1. <?php
  2. public function wszystkie_logowania($db_sql, $db_uchwyt, $fetch, $u_id)
  3. {
  4.  $this->db_sql = $db_sql;
  5.  $this->db_uchwyt = $db_uchwyt;
  6.  $this->fetch = $fetch;
  7.  $this->limit = $limit;
  8.  
  9.  $db_sql = "SELECT * FROM online_logs WHERE u_id = '$u_id' ORDER BY logs_data DESC LIMIT 30";
  10.  $db_uchwyt = $this->query($db_sql);
  11.  $returnArray = array(); 
  12.  while ($fetch = $db_uchwyt->fetch_array(MYSQLI_ASSOC)) {
  13. $returnArray = $fetch;
  14.  }
  15.  return $returnArray;
  16. }
  17. ?>


a potem w kodzie:
  1. <?php
  2. $logi = $panel->wszystkie_logowania($db_sql, $db_uchwyt, $fetch, $u_id);
  3. foreach($logi as $fetch) { 
  4.  echo '<table> 
  5.  <tr>
  6. <td class="error">'.++$i.'.</td>
  7. <td class="error3">'.$fetch['logs_data'].'</td>
  8. <td class="error">z IP:</td>
  9. <td class="error3">'.$fetch['logs_ip'].'</td>
  10.  </tr>
  11.  </table>';
  12. }
  13. ?>


pozdrawiam
Gość
Takie rozwiązanie daje wynik:

Kod
1.      1      z IP:  1
2.     1     z IP:     1
3.     1     z IP:     1
4.     2     z IP:     2


więc coś jest jednak źle - chociaż liczba zwracanych części tablicy jest ok, bo w phpmyadmin w bazie dla tego użytkownika wynosi aktualnie 4. Baza jak się można domyśleć po nazwach tablicy to numer ip i czas logowania i chciałbym aby php wypluwał te informacje.
JoShiMa
Cytat(pytek @ 3.08.2008, 20:16:13 ) *
Witam,
Mam metodę w klasie która wyciąga dane z tablicy a następnie zwraca całą tablicę:

Ja tylko w kwestii formalnej, ach uważam bardzo ważnej. Dane wyciągasz z bazy a więc nie z tablicy tylko z tabeli. Tablica to rodzaj zmiennej.
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.