Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 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 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?


--------------------
Wieczność jest bardzo nudna, szczególnie pod koniec - Woody Allen
/home/env: Apache 2.2 | PHP 5.2 | MySQL 5.1 | FreeBSD 8.0 | NetBeans 6.8 | symfony 1.4
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
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 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?


--------------------
Wieczność jest bardzo nudna, szczególnie pod koniec - Woody Allen
/home/env: Apache 2.2 | PHP 5.2 | MySQL 5.1 | FreeBSD 8.0 | NetBeans 6.8 | symfony 1.4
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?


--------------------
Wieczność jest bardzo nudna, szczególnie pod koniec - Woody Allen
/home/env: Apache 2.2 | PHP 5.2 | MySQL 5.1 | FreeBSD 8.0 | NetBeans 6.8 | symfony 1.4
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 smile.gif


--------------------
Zanim zadasz pytanie, zawsze wczesniej zajrzyj do manuala ( pl.php.net/manual/pl/ ).
Szukasz skryptow - www.hotscripts.com
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 Aktualny czas: 22.08.2025 - 00:30