Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP] Pętla w pętli
-Kosi11-
post 17.05.2012, 14:15:36
Post #1





Goście







Witam!

Mam następujący problem ze skryptem, mianowicie mam pętle while wyświetlającą rekordy z bazy. Chciałbym wewnątrz niej umieścić jeszcze jedną która będzie pobierała rekordy z innej bazy i tu mi się zaczął problem.

Wygląda to mniej więcej tak:

  1. $query = "(SELECT ...) ORDER BY data DESC";
  2. $result = mysql_query ($query);
  3. while ($row = mysql_fetch_array($result))
  4. {$body .= '
  5. <li class="box">
  6. ...
  7. <div class="reason">
  8. <div class="reasons"><div class="exit">x</div>
  9. <div class="why">
  10. <div class="opcja1"><div class="opcja1_head">'.$row[1].'</div>
  11.  
  12. I w tym miejscu chciałbym niemal identyczną pętle która będzie pobierała rekordy z innej bazy
  13.  
  14. </div>
  15. <div class="opcja2"><div class="opcja2_head">'.$row[2].'</div>
  16.  
  17. </div>
  18. </div>
  19. ...
  20. </li>';} echo '<ul>'.$body.'</ul>';


Jak to rozwiązać?

Pozdrawiam!
Go to the top of the page
+Quote Post
-DamianGosc-
post 17.05.2012, 14:25:44
Post #2





Goście







Dziwnie to troche napisales. Jak bys napisal normlaniej to bys poprotu dal tam druga petle smile.gif

np

  1. while($row = mysql_fetch_array($users))
  2. {
  3. $nq = mysql_query("SELECT * FROM posts WHERE uid=$row[id]", $con);
  4. echo $row['username'] . "<br>";
  5. while($row2 = mysql_fetch_array($nq))
  6. {
  7. echo $row2['post_name'];
  8. }
  9. }


Go to the top of the page
+Quote Post
-kosi11-
post 17.05.2012, 15:20:48
Post #3





Goście







Nie chodzi mi o coś takiego jak twoje rozwiązanie, sformułuje mój problem inaczej, chciałbym umieścić pętle while w zmiennej $body w <li class="box"></li>

  1.  
  2. $query = "(SELECT ...) ORDER BY data DESC";
  3. $query_1 = "(SELECT ...) ORDER BY data DESC";
  4. $result = mysql_query ($query);
  5. $result_1 = mysql_query ($query_1);
  6. while ($row = mysql_fetch_array($result))
  7. {$body .= '
  8. <li class="box">
  9.  
  10. <div class="opcja1"><div class="opcja1_head">'.$row[1].'</div>
  11.  
  12. Pętla while nr. 2
  13.  
  14. </div>
  15.  
  16. </li>';} echo '<ul>'.$body.'</ul>';
  17.  
Go to the top of the page
+Quote Post
Fifi209
post 17.05.2012, 15:35:38
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


A nie możesz złączyć jakoś tych tabel np. joinem?


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
nospor
post 17.05.2012, 15:38:41
Post #5





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




Cytat
chciałbym umieścić pętle while w zmiennej $body w <li class="box"></li>
Ale wiesz, że teksty można przerywać w dowolnym miejscu i łączyć w dowolnym??


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

"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
-kosi11-
post 17.05.2012, 15:47:13
Post #6





Goście







Cytat(nospor @ 17.05.2012, 15:38:41 ) *
Ale wiesz, że teksty można przerywać w dowolnym miejscu i łączyć w dowolnym??


Tzn? mógłbyc mi to troche przybliżyć

Nie jestem zaawansowanym programistom php więc nie ogarniam wszystkiego.

Tak dla jasności na rysunku przedstawiam co bym chciał osiągnąć.



Go to the top of the page
+Quote Post
nospor
post 17.05.2012, 15:51:54
Post #7





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




Cytat
Nie jestem zaawansowanym programistom php więc nie ogarniam wszystkiego.
Z całym szacunkiem, ale do tego co ci powiedziałem nie trzeba być zaawansowanym programistą.... to są podstawy....

Masz tak:
  1. $zm = 'linia1
  2. linia2
  3. linia3
  4. ...
  5. linian';

Chcesz w to wstawić pętle to ją wstaw.
  1. $zm = 'linia1
  2. linia2';
  3. //tu pętla co chcesz wstawic
  4.  
  5. //a tu dalej tekst
  6. $zm.='linia3
  7. ...
  8. linian';



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

"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
-kosi11-
post 17.05.2012, 18:31:12
Post #8





Goście







Cytat(nospor @ 17.05.2012, 15:51:54 ) *
Z całym szacunkiem, ale do tego co ci powiedziałem nie trzeba być zaawansowanym programistą.... to są podstawy....

Masz tak:
  1. $zm = 'linia1
  2. linia2
  3. linia3
  4. ...
  5. linian';

Chcesz w to wstawić pętle to ją wstaw.
  1. $zm = 'linia1
  2. linia2';
  3. //tu pętla co chcesz wstawic
  4.  
  5. //a tu dalej tekst
  6. $zm.='linia3
  7. ...
  8. linian';


Zrobiłem tak jak mi podpowiedziałeś, ale jest pewien problem, mianowicie umieszczona przeze mnie pętla wyświetla się w zupełnie innym miejscu niż powinna, tzn wychodzi poza obszar który powinien ją obejmować.

kod wygląda tak:

  1. ...
  2. <div class="opcja1"><div class="opcja1_head">'.$row[1].'</div>';
  3.  
  4. while ($row_1 = mysql_fetch_array($result_1))
  5. if($query['id'] == $query_1['id'])
  6. {$bodie .= '
  7. <li class="reason_box">
  8. <div class="avatar"><img class="avatar_body" src="avatar/'.$row_1[3].'" /></div>
  9. <div class="text">'.$row_1[4].'</div>
  10. </li>';}
  11. else
  12. {$bodie .= '
  13. <li class="reason_box"></li>';}
  14. echo '<ul>'.$bodie.'</ul>';
  15.  
  16. $body .= '</div>
  17. <div class="opcja2"><div class="opcja2_head">'.$row[2].'</div>
  18. </div>
  19. </div>
  20. </div>
  21. </div>


Chciałem żeby pętla mieściła się w divie opcja1 a niestety wychodzi poza diva.
Go to the top of the page
+Quote Post
Niktoś
post 17.05.2012, 18:34:39
Post #9





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Może ,za długa lista jest i w sumie burzy ci układ strony.Użyj styli css i overflow:auto;
Poza tym, jak otwierasz pętle i gdzie ją zamykasz?

Ten post edytował Niktoś 17.05.2012, 18:40:04
Go to the top of the page
+Quote Post
-kosi11-
post 17.05.2012, 18:40:43
Post #10





Goście







Pętla nawet w kodzie źródłowym jest poza divem ;/ więc css raczej nie pomoże
Go to the top of the page
+Quote Post
Niktoś
post 17.05.2012, 18:46:11
Post #11





Grupa: Zarejestrowani
Postów: 1 195
Pomógł: 109
Dołączył: 3.11.2011

Ostrzeżenie: (10%)
X----


Pętla while sposób 1:
  1. while ($row_1 = mysql_fetch_array($result_1)) { //-klamra otwierająca
  2.  
  3. .....instrukcje....
  4.  
  5. } //-klamra zamykająca

Sposób nr 2:
  1. while ($row_1 = mysql_fetch_array($result_1)) : //-rozpoczęcie warunku
  2.  
  3. .....instrukcje....
  4.  
  5. endwhile; //--zakończenie pętli


U Ciebie nie ma poprawnego zapisu.
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: 20.06.2025 - 18:52