Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Podwójny zwrot foreach()
escaflowne
post
Post #1





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 20.02.2003
Skąd: Poznań

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


Witam!
Mam problem (no ale, kto ich nie ma (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ).
[php:1:db9a218e27]<?php
while($tab = mysql_fetch_array($query)){
foreach($tab as $dane){
echo"$dane <br>";
}
}
?>[/php:1:db9a218e27]
Kończy się to tym, że na ekranie, istotnie mam wypisaną zawartość tablicy z bazy danych, ale 2x. Zawartość każdego pola wypisana jest dwukrotnie. Co zrobić, żeby wszystko wyświetlało się pojedyńczo?
Go to the top of the page
+Quote Post
Seth
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


trzeba ustawic typ zwracanych danych przez mysql_fetch_array. Gdyz bez jego podania tablica zawiera elementy z indexami asocjacyjnymi oraz numerycznymi - stad duplikaty.

[php:1:0cf653ce6e]while ( $tab = mysql_fetch_array( $query, MYSQL_ASSOC ) )
{
//...[/php:1:0cf653ce6e]
Go to the top of the page
+Quote Post
escaflowne
post
Post #3





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 20.02.2003
Skąd: Poznań

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


Dzięki Bender... to znaczy, Seth (IMG:http://forum.php.pl/style_emoticons/default/aaevil.gif) Działa!

-- UPDATE --
Dobra, jeszcze jedno pytanie: foreach wypisuje elementy tablicy, póki się nie skończą. Chciałbym, żeby do wartości ostatniego elementu tablicy został dopisany jakiś ciąg. Mogę użyć if, ale jaki dać warunek?
Go to the top of the page
+Quote Post
Seth
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Mozesz dac tak:
[php:1:c0ab569051]$tablica[size_of( $tablica ) - 1] .= 'cos';[/php:1:c0ab569051]
Doda to do ostatniego elementu tablicy string: cos
Go to the top of the page
+Quote Post
escaflowne
post
Post #5





Grupa: Zarejestrowani
Postów: 220
Pomógł: 0
Dołączył: 20.02.2003
Skąd: Poznań

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


A jak dać to do pętli if, która sprawdzała by przy każdym przejściu foreach, czy wypisany element, jest ostatni?
Go to the top of the page
+Quote Post
Seth
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 2 335
Pomógł: 6
Dołączył: 7.03.2002

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


Nie jest to zbyt dobry pomysl, gdyz w foreach'u nie masz wartosci, ktory akurtat index jest pobierany, wiec nie wiesz czy to juz kiniec czy moze srodek lub poczatek.
Mozna to zrobic przez podanie wczesniej do zmiennej rozmiaru calej tablicy i potem w foreach'u zwiekszanie innej zmiennej co 1 po kazdym przejsciu i sprawdzanei czy wartosc ta nie ejst rowna wielkosci tablic - wtedy mieli bysmy koncowy element - ale takie rozwiazanie po pierwsze jest malo wydajne, a po drugie wzasadzie robi to samo co for.
Go to the top of the page
+Quote Post
GeoS
post
Post #7





Grupa: Zarejestrowani
Postów: 602
Pomógł: 0
Dołączył: --
Skąd: W - WA -> GRO

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


Nie prosciej przejsc na jednoznaczne zapytanie, np. mysql_fetch_row(); :?:

Wtedy tylko sizeof(...) i po zabawie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 13:51