Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Problem z tablicami
-nickkk-
post 2.08.2008, 01:37:08
Post #1





Goście







Witam,
Mam zapytanie do bazy, w którym wyciagam nazwy użytkowników online:

Kod
o_online

nazwau1
nazwau2
nazwau3


Chciałbym zapisać każdy element tablicy do zmiennej i ją wyświetlić:

foreach ($fetch as $klucz => $user)
{
echo $user;
}

Niestety zwraca mi tylko pierwszy element z tablicy $fetch. Co robię źle?

Inny problem. Chcę wyświelić te same dane w innych sposób:

Kod
while ($fetch = $db_uchwyt->fetch_array(MYSQLI_ASSOC)) {
echo $fetch['o_login'];    
}


Wyświetla mi wszystkie elementy tablicy, poza pierwszym na liście czyli np. nazwau1. Tablicę wcześniej zresetowałem. Po zresetowaniu funkcja current() pokazuje aktualny element jako nazwau1, czyi problem poprawnego zapytania odpada. Gdzie robię błąd z tymi dwoma pętlami?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Kicok
post 2.08.2008, 11:51:02
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


Cytat
Chciałbym zapisać każdy element tablicy do zmiennej i ją wyświetlić:

foreach ($fetch as $klucz => $user)
{
echo $user;
}

Niestety zwraca mi tylko pierwszy element z tablicy $fetch.


Skoro zapytanie zwraca tylko jedną kolumnę, to tablica $fetch będzie miała tylko jeden element. Pętla działa w tym przypadku poprawnie.


Cytat
Inny problem. Chcę wyświelić te same dane w innych sposób:
Kod
while ($fetch = $db_uchwyt->fetch_array(MYSQLI_ASSOC)) {
echo $fetch['o_login'];    
}



Wyświetla mi wszystkie elementy tablicy, poza pierwszym na liście czyli np. nazwau1

Najprawdopodobniej gdzieś wcześniej wywołujesz już $db_uchwyt->fetch_array() i w pętli zaczyna ci pobierać wyniki zapytania od drugiego wiersza.


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post
-nikk-
post 2.08.2008, 15:54:00
Post #3





Goście







Tylko, że ta sama tablica $fetch w while jest wyświetlana od poczatku do końca, natomiast w pętli foreach tylko jeden element (pierwszy) chociaż tablica posiada np. dwa elementy. Nie mam pojęcia dlaczego nie działa to na bazie danych, bo przykłady z manuala PHp wykonuje mi poprawnie. Może robię gdzieś błąd w metodzie? Zamieszczam w razie czego całą metodą z klasy i proszę o poradę:
  1. <?php
  2. function pobierz_online($db_sql, $db_uchwyt, $fetch) 
  3. {
  4. $this->db_sql = $db_sql;
  5. $this->db_uchwyt = $db_uchwyt;
  6. $this->fetch = $fetch;
  7.  
  8. $db_sql = "SELECT users.u_login AS o_login FROM online, users WHERE online.u_id = user
    s.u_id"
    ;
  9. $db_uchwyt = $this->query($db_sql);
  10. $fetch = $db_uchwyt->fetch_array(MYSQLI_ASSOC);
  11. {
  12.  
  13. foreach ($fetch as $klucz => $user) {
  14.  
  15. echo $user;
  16.  
  17. }
  18.  
  19. }
  20. }
  21. ?>
Go to the top of the page
+Quote Post
Kicok
post 2.08.2008, 16:03:02
Post #4





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


To popatrz na takie czary:
  1. <?php
  2.  
  3. $db_sql = "SELECT users.u_login AS o_login FROM online, users WHERE online.u_id = user
    s.u_id"
    ;
  4. $db_uchwyt = $this->query($db_sql);
  5.  
  6. echo '<pre>';
  7. /* 1 */ print_r( $db_uchwyt->fetch_array(MYSQLI_ASSOC) );
  8. /* 2 */ print_r( $db_uchwyt->fetch_array(MYSQLI_ASSOC) );
  9. /* 3 */ print_r( $db_uchwyt->fetch_array(MYSQLI_ASSOC) );
  10. /* 4 */ print_r( $db_uchwyt->fetch_array(MYSQLI_ASSOC) );
  11. echo '</pre>';
  12.  
  13. ?>

Cztery razy wykonuję identyczną linijkę kodu i za każdym razem otrzymuję inny wynik.
Jedno wywołanie metody $db_uchwyt->fetch_array() wyświetla tylko jeden wiersz danych, a nie od razu cały wynik zapytania. Przy pętli foreach metodę $db_uchwyt->fetch_array() wywołałeś raz, więc dostałeś jeden wiersz. Natomiast przy while metoda fetch_array() wywoływana była za każdym razem gdy sprawdzany był warunek pętli:
  1. <?php
  2.  
  3. while( $fetch = $db_uchwyt->fetch_array() )
  4.  
  5. ?>


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 25.07.2025 - 10:47