Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php][mysql] Problem z zapętlaniem pytania
Forum PHP.pl > Forum > PHP
maniak11
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
Rafal Filipek
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. ?>
maniak11
W takim przypadku zapytania wykonają się 2x, (spróbowałem) zapewne dlatego, że raz jak r['type'] == 'txt' i raz jak 'gal' :/
Rafal Filipek
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.
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.