Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] zapetlenie do ostatniego wyjatku
AndyPSV
post
Post #1





Grupa: Zarejestrowani
Postów: 393
Pomógł: 5
Dołączył: 6.02.2003
Skąd: The.Luciferian.Doctrine.p
df

Ostrzeżenie: (30%)
XX---


mam tablice, w ktorej to chce pobierac dane tak dlugo, az nie wystapi pusty rekord
jak to zrobic?

czyli wybieram przykladowo z bazy jakis rekord
SELECT * FROM tabela WHERE id = 5 LIMIT 1

teraz szukam kolejnego rekordu co ma nazwe pola do_ID
SELECT * FROM tabela WHERE id = do_ID LIMIT 1

teraz znowu z tego rekordu pobieram nastepny rekord, co ma z kolei w polu do_ID [#2]
SELECT * FROM tabela WHERE id = do_ID LIMIT 1

...

i tak do momentu osiagniecia rekordu, w ktorym nie ma podanej wartosci do_ID

jak to zrobic?

p.s. wiem, ze da sie wrzucac .5.10.15.20.21.29 (same id, a pozniej zrobic z nich to samo); jednak chce znac rozwiazanie tego problemu; p.s. jak to wplywa na wydajnosc? chyba wielkiej roznicy nie ma pomiedzy tymi rozwiazaniami?

potrzebne mi rozwiazanie tego problemu, dziekuje
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sadistic_son
post
Post #2





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Rozwiązanie fifiego wydaje się być najtrafniejsze. Ale można też wyciągnąć z bazy wszystko co Cię interesuje i samym phpem wywalić puste rekordy. Jako pusty rekord rozumiem każdy rekord w którym choć jedna komórka jest pusta.
Po prostu dla każdej komórki robisz w while sprawdzenie czy nie jest pusta i jeśli nie to przypisujesz sobie do nowej tablicy. Tzn tworzysz to samo co przypisujesz do mysql_fetch_array (lub _row itp.) w petli while:
  1. $tab=array();
  2. $i=0; $j=1;
  3. while($row=mysql_fetch_array($query)){
  4. foreach($row as $r){
  5. if($r!=''){
  6. $tab[$i][]=$r;
  7. }else{ $j=0; }
  8. }
  9. if($j!=0){ $i++; }
  10. $j++;
  11. }
Nie wiem czy dobrze kombinuję, jeszcze śpię (IMG:style_emoticons/default/wink.gif)

EDIT: Dopiero teraz doczytałem, że chcesz pobierać do tablicy tak długo aż nie będzie pustego. W takim wypadku po prostu wywal $j++; z linijki 10.

Ten post edytował sadistic_son 14.02.2011, 08:15:36
Go to the top of the page
+Quote Post

Posty w temacie


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: 11.10.2025 - 06:41