Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php][mysql] Problem z zapętlaniem pytania
maniak11
post
Post #1





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.03.2006
Skąd: Sosnowiec

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


Witam, bardzo proszę o jakąś pomoc bo siedzę na tym już jakiś czas i lipa:(

W bazie jest

id | type | ...
1 txt
2 txt
3 gal
4 txt
5 gal
itd


i teraz chciałbym w zależności od tego jaki jest "type" wyciągać te dane ale przy pomocy 2 różnych zapytań.
Dla zobrazowania pokazuję BŁĘDNE rozwiązanie (bo nie działa, wiem dlaczego ale nie wiem jak ma być poprawnie)
  1. <?php
  2. $q = "Select id, type From tabela"
  3. $res = $q -> fetchAll();
  4.  
  5. foreach ($res as $r)
  6. {
  7.                        if($r['type'] == 'txt')
  8.                        {
  9.                          $sql  =         '....';
  10.                        }
  11.                        elseif ($r['type'] == 'gal')
  12.                        {
  13.                          $sql = '....';
  14.                        
  15.                        }
  16.            
  17. }        
  18. $stmt = $pdo -> query($sql)
  19.  
  20. // i następnie wyciągam po kolei ...teoretycznie
  21. while( $row = $stmt -> fetch() )
  22. {
  23. tu kod to wyświetlania wierszy
  24. }
  25. ?>


Jest to oczywiście źle bo pętla wykonuje się z takim selectem jaki pierwszy wiersz w bazie jest ('gal' lub 'txt')

Pliiis pomożecie jak to zrobić?
Pozdrawiam
Go to the top of the page
+Quote Post
Rafal Filipek
post
Post #2





Grupa: Zarejestrowani
Postów: 274
Pomógł: 54
Dołączył: 2.05.2006
Skąd: Nadarzyn

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


Cytat
Jest to oczywiście źle bo pętla wykonuje się z takim selectem jaki pierwszy wiersz w bazie jest ('gal' lub 'txt')

imho, petla wykona sie z takim typem jak ostatni rekord z tabeli ( cały czas zmieniasz wartośc zmiennej $sql
ja bym zrobil to tak;
  1. <?php
  2. $q = "Select id, type From tabela"
  3. $res = $q -> fetchAll();
  4.  
  5. foreach ($res as $r)
  6. {
  7.                       if($r['type'] == 'txt')
  8.                       {
  9.                         $sql  =         '....';
  10.                       }
  11.                       elseif ($r['type'] == 'gal')
  12.                       {
  13.                         $sql = '....';
  14.                      
  15.                       }
  16.                       $stmt = $pdo -> query($sql)
  17.  
  18.                       // i następnie wyciągam po kolei ...teoretycznie
  19.                       while( $row = $stmt -> fetch() )
  20.                       {
  21.                       tu kod to wyświetlania wierszy
  22.                       }
  23.          
  24. }        
  25. ?>
Go to the top of the page
+Quote Post
maniak11
post
Post #3





Grupa: Zarejestrowani
Postów: 85
Pomógł: 0
Dołączył: 18.03.2006
Skąd: Sosnowiec

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


W takim przypadku zapytania wykonają się 2x, (spróbowałem) zapewne dlatego, że raz jak r['type'] == 'txt' i raz jak 'gal' :/
Go to the top of the page
+Quote Post
Rafal Filipek
post
Post #4





Grupa: Zarejestrowani
Postów: 274
Pomógł: 54
Dołączył: 2.05.2006
Skąd: Nadarzyn

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


Skrypt który podałeś ty działa tak:
1)pobiera wszystkie rekordy z tabeli "tabela"
2) dla każdego rekordu jaki został pobrany w zależności od typu ustawia zmienną $sql
3) dla OSTATNIEJ ustawionej wartości zmiennej sql wykonuje zapytanie ( linijka z $smtp )
4) dla każdego rekordu zwróconego przez zapytanie robi coś tam

moj skrypt dla każdego rekordu z tabeli 'tabela' wykonuje w zależności od zmiennej $sql odpowiednie zapytanie a potem w pętli robić 'cos tam' z wynikami tego zapytania

napisz dokładnie o co ci chodzi.
Go to the top of the page
+Quote Post

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: 23.08.2025 - 05:15