Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]petla w zapytaniu sql
tenloginjestzaje...
post
Post #1





Grupa: Zarejestrowani
Postów: 358
Pomógł: 1
Dołączył: 20.07.2014

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


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!
Go to the top of the page
+Quote Post
KsaR
post
Post #2





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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?
Go to the top of the page
+Quote Post
tenloginjestzaje...
post
Post #3





Grupa: Zarejestrowani
Postów: 358
Pomógł: 1
Dołączył: 20.07.2014

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


hmm bardziej chciałbym aby była jedna zmienna w zapytaniu.
Go to the top of the page
+Quote Post
KsaR
post
Post #4





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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]}')");


Ten post edytował KsaR 9.09.2015, 17:16:39
Go to the top of the page
+Quote Post
tenloginjestzaje...
post
Post #5





Grupa: Zarejestrowani
Postów: 358
Pomógł: 1
Dołączył: 20.07.2014

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


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]}')
Go to the top of the page
+Quote Post
KsaR
post
Post #6





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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 (IMG:style_emoticons/default/tongue.gif)

Ten post edytował KsaR 9.09.2015, 17:29:18
Go to the top of the page
+Quote Post
tenloginjestzaje...
post
Post #7





Grupa: Zarejestrowani
Postów: 358
Pomógł: 1
Dołączył: 20.07.2014

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


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++


Ten post edytował tenloginjestzajety 9.09.2015, 17:32:51
Go to the top of the page
+Quote Post
KsaR
post
Post #8





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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. }
Go to the top of the page
+Quote Post
tenloginjestzaje...
post
Post #9





Grupa: Zarejestrowani
Postów: 358
Pomógł: 1
Dołączył: 20.07.2014

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


zrobiłem tak i wyświetla w echo, ale w wyników w bazie nie (IMG:style_emoticons/default/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. }
Go to the top of the page
+Quote Post
KsaR
post
Post #10





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


Cytat(tenloginjestzajety @ 9.09.2015, 18:45:50 ) *
zrobiłem tak i wyświetla w echo, ale w wyników w bazie nie (IMG:style_emoticons/default/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ą.

Ten post edytował KsaR 9.09.2015, 17:49:37
Go to the top of the page
+Quote Post
tenloginjestzaje...
post
Post #11





Grupa: Zarejestrowani
Postów: 358
Pomógł: 1
Dołączył: 20.07.2014

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


dzięki, poprawiłem. Próbowałem: `{$k}` oraz `$k` nie działa.
Go to the top of the page
+Quote Post
KsaR
post
Post #12





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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.

Ten post edytował KsaR 9.09.2015, 18:01:39
Go to the top of the page
+Quote Post
tenloginjestzaje...
post
Post #13





Grupa: Zarejestrowani
Postów: 358
Pomógł: 1
Dołączył: 20.07.2014

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


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. }
Go to the top of the page
+Quote Post
KsaR
post
Post #14





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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.

Ten post edytował KsaR 9.09.2015, 20:04:11
Go to the top of the page
+Quote Post
tenloginjestzaje...
post
Post #15





Grupa: Zarejestrowani
Postów: 358
Pomógł: 1
Dołączył: 20.07.2014

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


  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.
Go to the top of the page
+Quote Post
KsaR
post
Post #16





Grupa: Zarejestrowani
Postów: 520
Pomógł: 102
Dołączył: 15.07.2014
Skąd: NULL

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


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.

Ten post edytował KsaR 9.09.2015, 20:16:38
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: 24.08.2025 - 17:51