Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Pętla FOR i modyfikacja pierwszego wyniku z tej pętli., Ingerencja w pętle FOR.
casperii
post
Post #1





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


Witam mam kod:

  1. $where='';
  2. for($i = 0; $i < 7; $i++){
  3. if($row['numer'.$i] == '1'){
  4. $where .= ' AND `numer` = "numer'.$i.'"';
  5. }
  6. }


Jak zrobić by dla pierwszego wyniku było "AND" a dla pozostałego wyniku "OR"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
casperii
post
Post #2





Grupa: Zarejestrowani
Postów: 681
Pomógł: 28
Dołączył: 14.08.2014

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


  1. if(zalogowany()){
  2.  
  3. $nazwa = $_SESSION['nazwa'];
  4. $sql="SELECT * FROM `users` WHERE `name` = '".$nazwa."' LIMIT 1";
  5. $res=mysql_query($sql);
  6. $row=mysql_fetch_array($res,MYSQL_ASSOC);
  7. $access=$row['access'];
  8.  
  9. if($access =='m'){
  10.  
  11. $where = '';
  12. for($i = 1; $i < 7; $i++)
  13. if($row['numer'.$i] == '1'){
  14. $where .= ' OR `numer` = "numer'.$i.'"';
  15. }
  16.  
  17.  
  18. }
  19. }


W powyższym kodzie sprawdzamy czy dany user o nazwie = 'nazwa' istnieje, następnie sprawdzamy pole access w bazie jeżeli ma "m" rozpoczynamy pętle FOR.
Teraz sprawdzamy czy w polach numer1, numer2, numer3, numer4, numer5, numer6 jest wartość ="1"


Teraz w drugim pliku mam select z nazwą oraz zapytanie do bazy mysql:

  1. if(isset($zmiennaZselect)){
  2. $szukam =' WHERE `nazwa` = "'.$zmiennaZselect.'"';
  3. }else{
  4. $szukam = ' WHERE `nazwa`!="" '.$where.' ';
  5.  
  6. }
  7.  
  8. $sql = "SELECT * FROM `test` $szukam ";
  9. $res = mysql_query($sql) or die(mysql_error());
  10. if(mysql_num_rows($res)>0){
  11. while($row = mysql_fetch_assoc($res)){
  12. echo ''.$row['nazwa'].'';
  13. }
  14. }


Jeżeli wybiorę z selecta nazwę zapytanie rozszerza się o WHERE `nazwa` = "'.$zmiennaZselect.'". Jeżeli nie wybiorę nic z selecta to zapytanie będzie poprostu WHERE !=''
Następnie trzeba dodać kolejny warunek do zapytania ".$where."

Jak łatwo się domyśleć nazwa z tabeli users dla pola numer1 do numer6 może nie mieć wartość "1" wtedy nie jest brana pod uwagę w pętli FOR.
Dlatego muszę zrobić tak by dla pierwszego było "AND" a dla kolejnych było "OR"

Reasumując:

Zalogowany o nazwie GOŚĆ oraz GOŚĆ2 mają wartości w bazie:

GOŚĆ:
nazwa = 'GOSC'
access = 'm'
numer1 = '1'
numer2 = '1'
numer3 = '1'
numer4 = '0'
numer5 = '0'
numer6 = '1'

Czyli poprawne zapytanie będzie dla GOŚCiA :
  1. $sql = "SELECT * FROM `test` WHERE `nazwa` !='' AND `numer`='numer1' OR `numer`='numer2' OR `numer`='numer3' OR `numer`='numer6' ";



GOŚĆ2:
nazwa = 'GOSC2'
access = 'm'
numer1 = '0'
numer2 = '1'
numer3 = '1'
numer4 = '1'
numer5 = '0'
numer6 = '0'


Czyli poprawne zapytanie będzie dla GOŚCiA2 :
  1. $sql = "SELECT * FROM `test` WHERE `nazwa` !='' AND `numer`='numer2' OR `numer`='numer3' OR `numer`='numer4' ";


Go to the top of the page
+Quote Post

Posty w temacie
- casperii   Pętla FOR i modyfikacja pierwszego wyniku z tej pętli.   14.03.2015, 13:46:58
- - Forti   Na szybkiego: [PHP] pobierz, plaintext $where='';...   14.03.2015, 14:04:05
- - casperii   Dziękuje za kod, ale nie działa to tak jak powinno...   14.03.2015, 14:15:32
- - Forti   [PHP] pobierz, plaintext $where='';for($i = 0;...   14.03.2015, 14:23:04
- - casperii   Nic nie zmieniło dalej to wygląda tak: [SQL] pob...   14.03.2015, 14:29:27
- - Forti   Nie ogarniam o co ci chodzi, wiesz? Pokaż co masz...   14.03.2015, 15:03:41
- - Forti   Nowy temat to niwy kod i nowy problem. Pokaz budow...   14.03.2015, 15:10:36
- - casperii   [PHP] pobierz, plaintext if(zalogowany(...   14.03.2015, 15:28:25
- - Forti   [PHP] pobierz, plaintext for($i = 1; $i < 7...   14.03.2015, 16:04:13
- - casperii   w dalszym ciągu jest tylko "AND" dla num...   14.03.2015, 16:41:50
- - Forti   Nic nie potrafisz sam pokombinować? [PHP] pobierz...   14.03.2015, 17:01:28
- - casperii   Dalej to samo dla TEST zrobiłem numer1="0...   14.03.2015, 18:08:15
- - Forti   To zmień $count = 1 i po problemie. POKOMBINU...   14.03.2015, 18:14:12
- - casperii   wiem co robi ++ tzw. inkrementacja -bynajmniej tak...   14.03.2015, 18:16:49
- - Forti   Ty san źle rozumiesz co chcesz zrobić. Masz na sta...   14.03.2015, 18:35:12
- - ctom   Cytat(casperii @ 14.03.2015, 13:46:58...   14.03.2015, 19:19:00
- - $_$   Z tego co wnioskuje to kolega chce sprawdzać warto...   14.03.2015, 20:19:24
|- - Forti   Cytat($_$ @ 14.03.2015, 20:19...   14.03.2015, 20:28:10
- - $_$   Skoro w bazie ma int-y to nie rozumiem tego Cytat...   14.03.2015, 20:30:24
- - Forti   1. co oznaczaja pola numer 1 do numer 6? 2. po co ...   14.03.2015, 23:04:03
- - casperii   nazwa logująca się ma przypisane numery od 1 do 6....   14.03.2015, 23:15:09
- - Forti   Ja nie ogarniam twojego zamiaru -,- Masz napisać...   14.03.2015, 23:23:53
- - casperii   JA już nie wiem , czy ja po Chińsku piszę , czy te...   14.03.2015, 23:45:30
- - Forti   many to many - mówi Ci to coś? -,- [user]: - id -...   15.03.2015, 00:37:01
- - casperii   Ale dlaczego rozbijasz to na 4 tabele ? :-) Nie da...   15.03.2015, 19:53:53
- - ctom   a co zrobisz gdy pojawią się klasy 1a i 1b dodasz...   15.03.2015, 21:04:03


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: 4.10.2025 - 05:50