Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]petla w zapytaniu sql
Forum PHP.pl > Forum > Przedszkole
tenloginjestzajety
Witam
jak zrobić pętle w zapytaniu sql, aby podało wyniki dla różnych liczb.

Robie to to tak:
  1. $zmienna = 12;
  2. $query = mysql_query("SELECT * FROM `baza` WHERE `symbol` = '$zmienna' ");
  3. while($row = mysql_fetch_assoc($query))
  4. $row = $row['wynik'];
  5. echo $wynik;
  6.  
  7. $zmienna = 24;
  8. $query = mysql_query("SELECT * FROM `baza` WHERE `symbol` = '$zmienna' ");
  9. while($row = mysql_fetch_assoc($query))
  10. $row = $row['wynik'];
  11. echo $wynik;
  12.  
  13. $zmienna = 36;
  14. $query = mysql_query("SELECT * FROM `baza` WHERE `symbol` = '$zmienna' ");
  15. while($row = mysql_fetch_assoc($query))
  16. $row = $row['wynik'];
  17. echo $wynik;


Chciałbym zrobić jedno zapytanie w pętli próbuje z array, ale nie potrafię. Dziękuje za pomoc!
KsaR
Cytat(tenloginjestzajety @ 9.09.2015, 18:04:53 ) *
Witam
jak zrobić pętle w zapytaniu sql, aby podało wyniki dla różnych liczb.

Robie to to tak:
  1. $zmienna = 12;
  2. $query = mysql_query("SELECT * FROM `baza` WHERE `symbol` = '$zmienna' ");
  3. while($row = mysql_fetch_assoc($query))
  4. $row = $row['wynik'];
  5. echo $wynik;
  6.  
  7. $zmienna = 24;
  8. $query = mysql_query("SELECT * FROM `baza` WHERE `symbol` = '$zmienna' ");
  9. while($row = mysql_fetch_assoc($query))
  10. $row = $row['wynik'];
  11. echo $wynik;
  12.  
  13. $zmienna = 36;
  14. $query = mysql_query("SELECT * FROM `baza` WHERE `symbol` = '$zmienna' ");
  15. while($row = mysql_fetch_assoc($query))
  16. $row = $row['wynik'];
  17. echo $wynik;


Chciałbym zrobić jedno zapytanie w pętli próbuje z array, ale nie potrafię. Dziękuje za pomoc!


  1. $zmienna1 = 12;
  2. $zmienna2 = 24;
  3. $zmienna3 = 36;
  4. $query = mysql_query("SELECT * FROM `baza` WHERE (`symbol` = '$zmienna1' OR `symbol`='$zmienna2' OR `symbol`='$zmienna3')");

Cos takiego?
tenloginjestzajety
hmm bardziej chciałbym aby była jedna zmienna w zapytaniu.
KsaR
Cytat(tenloginjestzajety @ 9.09.2015, 18:11:17 ) *
hmm bardziej chciałbym aby była jedna zmienna w zapytaniu.

  1. $zmienna=array(12,23,36);
  2. $query = mysql_query("SELECT * FROM `baza` WHERE (`symbol` = '{$zmienna[0]}' OR `symbol`='{$zmienna[1]}' OR `symbol`='{$zmienna[2]}')");


Lub:
  1. $zmienna=array(12,23,36);
  2. $query = mysql_query("SELECT * FROM `baza` WHERE `symbol` IN('{$zmienna[0]}','{$zmienna[1]}','{$zmienna[2]}')");
tenloginjestzajety
kurcze coś nie działa u mnie, zapomniałem napisać, że zmienną wstawiam w ORDER BY ( podałem zły przykład.. )

  1. ORDER BY ('{$zmienna[0]}','{$zmienna[1]}','{$zmienna[2]}')
KsaR
Cytat(tenloginjestzajety @ 9.09.2015, 18:21:32 ) *
kurcze coś nie działa u mnie, zapomniałem napisać, że zmienną wstawiam w ORDER BY ( podałem zły przykład.. )

  1. ORDER BY ('{$zmienna[0]}','{$zmienna[1]}','{$zmienna[2]}')

Hm, bo ty podajesz tu jako "wartość".
A, ORDER BY, powinno otrzymać kolumne.

  1. (...) ORDER BY `kolumna1`, `kolumna2`, `kolumna3`;


Edit --
Tzn juz predzej tak:
ORDER BY `{$zmienna[0]}`,`{$zmienna[1]}`,`{$zmienna[2]}`
Tzn zamiast ' daj `.
Ale tez nie mam pewnosci czy tak mozna wstawiac kolumny tongue.gif
tenloginjestzajety
rozumiem dzięki, a możesz tylko napisać jak zrobić pętlę żeby podało liczby z array w echo, ale bez [0],[1]..

coś takiego tylko nie wiem jak wstawić foreach bez klamry.
  1. $zmienna = array(12,24,36);
  2. $i = 1;
  3. echo $zmienna[$i];
  4. $i++
KsaR
Cytat(tenloginjestzajety @ 9.09.2015, 18:32:08 ) *
rozumiem dzięki, a możesz tylko napisać jak zrobić pętlę żeby podało liczby z array w echo, ale bez [0],[1]..

coś takiego tylko nie wiem jak wstawić foreach bez klamry.
  1. $zmienna = array(12,24,36);
  2. $i = 1;
  3. echo $zmienna[$i];
  4. $i++

  1. foreach ($zmienna as $k=>$v)
  2. {
  3. echo $k;
  4. }
tenloginjestzajety
zrobiłem tak i wyświetla w echo, ale w wyników w bazie nie sad.gif
  1.  
  2. $zmienna = array(12,24,36);
  3. $k = 1;
  4. foreach ($zmienna as $k)
  5. {
  6. echo $k;
  7. $query = mysql_query("SELECT * FROM `baza` WHERE `symbol` ORDER BY ('$k') ");
  8. while($row = mysql_fetch_assoc($query))
  9. {
  10. $row = $row['wynik'];
  11. echo $wynik;
  12. }
  13. $k++
  14. }
KsaR
Cytat(tenloginjestzajety @ 9.09.2015, 18:45:50 ) *
zrobiłem tak i wyświetla w echo, ale w wyników w bazie nie sad.gif
  1.  
  2. $zmienna = array(12,24,36);
  3. $k = 1;
  4. foreach ($zmienna as $k)
  5. {
  6. echo $k;
  7. $query = mysql_query("SELECT * FROM `baza` WHERE `symbol` ORDER BY ('$k') ");
  8. while($row = mysql_fetch_assoc($query))
  9. {
  10. $row = $row['wynik'];
  11. echo $wynik;
  12. }
  13. $k++
  14. }

Hmmm, znów robisz w ORDER BY jako 'wartość' zamiast jako `kolumna`

ORDER BY ('$k')
>
ORDER BY `{$k}`

Ps.
Robisz echo $wynik; a w $row masz tą zmienną.
tenloginjestzajety
dzięki, poprawiłem. Próbowałem: `{$k}` oraz `$k` nie działa.
KsaR
Cytat(tenloginjestzajety @ 9.09.2015, 18:50:12 ) *
dzięki, poprawiłem. Próbowałem: `{$k}` oraz `$k` nie działa.

A tak?
  1. $sql="SELECT * FROM `baza` ORDER BY `{$k}`";
  2. $query = mysql_query($sql);

Ps. Dojrzalem ze miales WHERE `symbol` ale nie podales argumentu do tego.
--
Jakby nadal nie działało to zrób po zmiennej $sql tak:
  1. var_dump($sql);

I pokaż co zwraca.
tenloginjestzajety
działa! Dzięki za poświęcony czas!
  1. $zmienna = array(12,24,36);
  2. $k = 1;
  3. foreach ($zmienna as $k)
  4. {
  5. echo $k;
  6. $query = mysql_query("SELECT * FROM `baza` WHERE `symbol` ORDER BY ('$k') ");
  7. while($row = mysql_fetch_assoc($query))
  8. {
  9. $row = $row['wynik'];
  10. echo $wynik;
  11. }
  12. $k++
  13. }


mam kolejny problem, ponieważ liczby to nazwy kolumn. Nie wiem jak zrobić aby echo $k nie działało gdy w danej kolumnie nie ma wartości np.12. Dzięki za pomoc:
  1. $zmienna = array(12,24,36);
  2. $k = 1;
  3. foreach ($zmienna as $k)
  4. {
  5. echo $k; // o to chodzi.
  6. $query = mysql_query("SELECT * FROM `baza` WHERE `symbol` ORDER BY ('$k') ");
  7. while($row = mysql_fetch_assoc($query))
  8. {
  9. $row = $row['wynik'];
  10. echo $wynik;
  11. }
  12. $k++
  13. }
KsaR
Cytat(tenloginjestzajety @ 9.09.2015, 20:46:44 ) *
(....)
mam kolejny problem, ponieważ liczby to nazwy kolumn. Nie wiem jak zrobić aby echo $k nie działało gdy w danej kolumnie nie ma wartości np.12. Dzięki za pomoc:
(...)

Nie wiem czy dobrze zrozumialem. (Malo zrozumiale opisales)

Mozesz tak:
  1. $zmienna = array(12,24,36);
  2. foreach ($zmienna as $k=>$v)
  3. {
  4. echo $v==12?$k:'';
  5. #(...) ucielem zeby nie zaciemniac
  6. }

Ale to sprawdzi tak jak opisujesz, czyli czy nie ma wartosci 12.
Wartosci -> $v.

Czyli w tablicy by musialo byc np. array(12=>12,...) bo wartoscia bedzie to po =>.

2. Sprawdzenie czy klucz istnieje.
  1. $zmienna = array(12,24,36);
  2. foreach ($zmienna as $k=>$v)
  3. {
  4. echo array_key_exists(12,$zmienna)?$k:'';
  5. #(...) ucielem zeby nie zaciemniac
  6. }

Jednak jesli chcesz sprawdzac tylko 1 wartosc, ktora sie nie zmieni to lepiej przed petla uzyc array_key_exists i zapisac do zmiennej wynik.

Jesli nadal o to nie chodzilo to rozjasnij o co.
tenloginjestzajety
  1. $zmienna = array(12,24,36);
  2. $k = 1;
  3. foreach ($zmienna as $k)
  4. {
  5. if ($row['12'] != '');
  6. {
  7. echo $k; // o to chodzi.
  8. }
  9. $query = mysql_query("SELECT * FROM `baza` WHERE `symbol` ORDER BY ('$k') ");
  10. while($row = mysql_fetch_assoc($query))
  11. {
  12. $row = $row['wynik'];
  13. echo $wynik;
  14. }
  15. $k++
  16. }


Czyli jeśli kolumna 12 jest pusta to żeby nie wyświetlało napisu 12. Nie mogę sobie z tym poradzić.

Ps. liczby w array to nazwy kolumn.
KsaR
Cytat(tenloginjestzajety @ 9.09.2015, 21:08:12 ) *
(...)
Czyli jeśli kolumna 12 jest pusta to żeby nie wyświetlało napisu 12. Nie mogę sobie z tym poradzić.

Ps. liczby w array to nazwy kolumn.


  1. if (isset($row['12'][0]));
  2. {
  3. echo $k;
  4. }
  5. # lub:
  6. if (!empty($row['12']));
  7. {
  8. echo $k;
  9. }

Ps. Jak klucz jest cyfrą to nie trzeba apostrofów ( ' lub ") tylko sama cyfre.
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.