Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Pętla w pętli
Forum PHP.pl > Forum > Przedszkole
Kosi11
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!
DamianGosc
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. }


kosi11
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.  
Fifi209
A nie możesz złączyć jakoś tych tabel np. joinem?
nospor
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??
kosi11
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ąć.



nospor
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';

kosi11
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.
Niktoś
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?
kosi11
Pętla nawet w kodzie źródłowym jest poza divem ;/ więc css raczej nie pomoże
Niktoś
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.