Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Problem z dwoma pętlami
arzach
post 25.01.2009, 22:20:32
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Witam mam taki kod

  1. <?php
  2. $i = 0;
  3. while($r = mysql_fetch_assoc($wynik))    
  4. {
  5. $mina = explode(",", $r['miniaturki']);
  6. array_pop($mina);  
  7.  
  8. $obrazki = explode(",", $r['obrazki']);  
  9. array_pop($obrazki);
  10.  
  11. $c = array_combine($mina, $obrazki);  
  12.  
  13. echo "<a href='zobacz.php?tel_id=".$r['id']."'>".$r['nazwa']."</a>";
  14.  
  15. while (list ($klucz, $wartosc) = each ($c)) {
  16.  
  17. <a href='".$wartosc."'>
  18. <img src='".$klucz."'></a>";  
  19. $i++;
  20. if ($i == 3) break;
  21.  
  22. }
  23. }
  24. ?>


I mam problem ponieważ pętla która wyświetla zawartości tablicy $c wyświetla 3 wartości ale tylko przy 1 razie przy każdym następnym powtórzeniu przez pętle
  1. <?php
  2. while($r = mysql_fetch_assoc($wynik))
  3. ?>
wyświetla już wszystkie wartości z tablicy $c zamiast trzech wartosci.

Wie ktoś czemu tak się dzieje ?

.

Ten post edytował arzach 25.01.2009, 22:20:23
Go to the top of the page
+Quote Post
nospor
post 25.01.2009, 22:59:13
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




ten warunek: if ($i == 3) break;
jest spelniony tylko raz. przeciez przy kolejknym obrocie petli $i jest juz wieksze od 3. przed wejsciem w drugą petle musisz $i wyzerowac


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
arzach
post 26.01.2009, 09:17:46
Post #3





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


A jak moge zmienną $i wyzerować ?
Go to the top of the page
+Quote Post
nospor
post 26.01.2009, 09:19:59
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




no a weź sie zastanow przez chwile... PRzeciez juz to w tym kodzie robiles, tylko w zlym miejscu:
  1. <?php
  2. $i = 0;
  3. ?>


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
arzach
post 26.01.2009, 09:24:23
Post #5





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


No tak ale jak zrobie tak
  1. <?php
  2. if ($i == 3) { break; $i = 0; }
  3. ?>


To nic nie daje i dalej to samo
Go to the top of the page
+Quote Post
nospor
post 26.01.2009, 09:27:19
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No ale napisalem przeciez
Cytat
no a weź sie zastanow przez chwile...

miales dac $i=0 przed drugą petlą a nie po slowie break;, ktore ma to do siebie ze kod za nim sie nie wykonuje

Druga petla rozpoczyna sie slowem while i to przed nim masz tę zmienną wyzerować. Od biedy mozesz dac to przed break a nie po


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
arzach
post 26.01.2009, 09:29:18
Post #7





Grupa: Zarejestrowani
Postów: 332
Pomógł: 6
Dołączył: 27.11.2008

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


Dzięki działa
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: 16.06.2025 - 19:24