![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Na szybkiego:
-------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuje za kod, ale nie działa to tak jak powinno, tzn. działa to tak jak bez tego warunku IF.
Zapytanie powinno działać na tej zasadzie, że: -jeśli numer1='1', numer2='1', numer3='1', numer4='1', numer5='1', numer6='1' istnieje to:
Jeżeli natomiast nie będzie numeru1 tylko od numer 2 do numer6 to zapytanie powinno być takie:
a z twoim kodem to wygląda tak:
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Literówkę w warunku if zrobiłem Ten post edytował Forti 14.03.2015, 14:23:27 -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nic nie zmieniło dalej to wygląda tak:
a powinno tak:
Jeżeli nie mam w bazie zaznaczonego numer1='1', to powinno być "AND" numer='numer2', jeżeli w bazie nie mam numer1='1' oraz numer2='1' to zapytanie powinno wyglądać tak:
|
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nie ogarniam o co ci chodzi, wiesz? Pokaż co masz w bazie.
Cytat Jeżeli nie mam w bazie zaznaczonego numer1='1', to powinno być "AND" numer='numer2', jeżeli w bazie nie mam numer1='1' oraz numer2='1' to zapytanie powinno wyglądać tak: masło maślane. "Jeżeli nie 1 to x, jeżeli nie 1 to y"? -,- i nie spamuj mi na priv. Jak będę miał czas to odpiszę. -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nowy temat to niwy kod i nowy problem. Pokaz budowę bazy i jasno napisz ci chcesz zrobić.
-------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
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:
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 :
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 :
|
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
-------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
w dalszym ciągu jest tylko "AND" dla numer1='1' a co jeśli nie ma tego numer1='1' tylko zaczyna się od numer2='1' to od razu daje "OR" a powinno być AND.
Jeszcze raz podsumuje o co mi chodzi: Baza mysql nazwa access numer1 numer2 numer3 numer4 numer5 numer6 TEST m 1 1 1 1 1 1 TEST2 m 0 1 0 1 0 1 TEST3 m 0 0 1 1 0 0 teraz dla TEST powinno być:
dla TEST2 powinno być:
dla TEST3 powinno być:
Ten post edytował casperii 14.03.2015, 16:50:43 |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Nic nie potrafisz sam pokombinować?
-------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
Dalej to samo
![]() dla TEST zrobiłem numer1="0" , numer2="0", numer3="1" , numer4="1", numer5="1", numer6="1" wyświetla:
gdzie dla pierwszego numeru powinno być zawsze "AND" jak zrobię w bazie dla TEST numer1="1" , numer2="0", numer3="1" , numer4="1", numer5="1", numer6="1" wyświetla poprawnie:
Czyli nie ważne czy jako pierwszy będzie numer3 czy numer4 pod warunkiem że przed nim nie bedzie numer1 oraz numer2 to jako pierwszy wartość "AND" ma otrzymać numer3. Bo cały czas jest tak że jeśli istnieje numer1="1" to wtedy dodaje "AND" a nie o to mi chodzi. Poza tym czemu print $count pokazuje mi 6 skoro np 4 numery mają wartość ="1" ? Ten post edytował casperii 14.03.2015, 18:13:44 |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
To zmień $count = 1 i po problemie. POKOMBINUJ.
edit: Cytat Poza tym czemu print $count pokazuje mi 6 skoro np 4 numery mają wartość ="1" ? Jak nie wiesz co robi $cont++ to nie mamy o czym rozmawiać. Ten post edytował Forti 14.03.2015, 18:14:56 -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
wiem co robi ++ tzw. inkrementacja -bynajmniej tak w C++ było.
Forti nie wiem czy dobrze my się rozumiemy, co ja chcę osiągnąć. wydaję mi się , że to powinno być na zasadzie sprawdzamy który numer jest jako pierwszy i dlatego pierwszego numeru dajemy warunek IF ... AND a kolejny OR. Bo zmiana $count=0 na $count=1 robi tyle że nie wychwyta pierwszego numer1="1" jeśli istnieje. Ten post edytował casperii 14.03.2015, 18:20:44 |
|
|
![]()
Post
#15
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ty san źle rozumiesz co chcesz zrobić. Masz na stałe kolumny nazwa1, nazwa2 itp. więc:
bardzo brzydkie, nie estetyczne etc. ale twoje kolumny również są brzydkie ![]() edit: nie sprawdzałem czy działa, ale powinno. Opisać Ci to czy rozumiesz? Ten post edytował Forti 14.03.2015, 18:35:43 -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]()
Post
#16
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 55 Dołączył: 19.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam mam kod:
Jak zrobić by dla pierwszego wyniku było "AND" a dla pozostałego wyniku "OR" chyba tak będzie łatwiej Kod $tmp= []; for($i = 0; $i < 7; $i++){ if($row['numer'.$i] == '1') array_push($tmp, 'numer' . $i); } $where = ' AND numer IN ('.implode(',', $tmp).')'; oczywiście dodaj gdzieś przechwycenie wyjątku gdy count($tmp) == 0 Ten post edytował ctom 14.03.2015, 19:21:13 -------------------- Polecam MyDevil hosting idealny dla deweloperów
|
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 9.07.2013 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co wnioskuje to kolega chce sprawdzać wartość z bazy a nie pętli
Ten post edytował $_$ 14.03.2015, 20:43:31 |
|
|
![]()
Post
#18
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Z tego co wnioskuje to kolega chce sprawdzać wartość z bazy a nie pętli
To mu także nic nie da. Wydaje mi się, że skłądnia powinna być AND ? Or ? Or ? Or ? i pierwszy parametr ma być pierwsza kolumna posiadająca wartość "1", a wsześniejsze nie brane pod uwagę. Mój przykład powinien mu zadziałać. -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 10 Pomógł: 0 Dołączył: 9.07.2013 Ostrzeżenie: (0%) ![]() ![]() |
Skoro w bazie ma int-y to nie rozumiem tego
Cytat WHERE `nazwa`!="" AND `numer` = "numer1"
|
|
|
![]()
Post
#20
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
1. co oznaczaja pola numer 1 do numer 6?
2. po co jest druga tabela, co ona przedstawia? 3. Co chcesz uzyskać? Odpowiedź dobrze na te pytania. Zwłaszcza na 3. Zakład o 1000zł, że twój problem rozwiązujesz w zły sposób. -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]()
Post
#21
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
nazwa logująca się ma przypisane numery od 1 do 6. Ale i może mieć wszystkie te numery. Jeżeli ma przypisany numer wstawiam wartość do bazy "1".
Teraz w drugiej tabeli test mam przechowane nazwy modeli o jakimś numerze z zakresu numer1 - numer6. Wybierając z selecta tą nazwę lub jej nie wybierając (WHERE `nazwa`!='') model wyświetlam. Porównaj to do np takiego opis. Jeżeli Kowalski ma uprawnienie "m" i chodzi do klasy numer1, numer2, numer3,numer4,numer5,numer6. Dlatego przypisuje w bazie wartości "1" by wiedzieć do której klasy chodzi Kowalski. Teraz w kolejnej tabeli powiedzmy, że tabela "uczniowie" chcę wyświetlić uczniów którzy chodzą do klasy 1, klasy 2 i klasy 3, albo do klasy 2 i 5. Potem np chcę wyświetlić uczniów o nazwisku Kowalski którzy chodzą do klasy 2 i 5. Stąd tak sobie wymyśliłem. Aha gdyby padło pytanie, dlaczego to rozbijam na 2 tabele. W jednej tabeli przechowuje nazwę oraz hasło i te numery od 1 - 6 oraz datę logowania itp. W drugiej tabeli już mam inne dane np data dodania, opis tego więc muszę to rozbić. Ten post edytował casperii 14.03.2015, 23:20:08 |
|
|
![]()
Post
#22
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ja nie ogarniam twojego zamiaru -,-
Masz napisać co chcesz uzyskać, a nie co masz. CEL. np.: chce mieć użytkowników, każdy jest przypisany do jakieś klasy i w zależności od ów klasy ma jakieś tam uprawnienia. a nie: mam tabele x, mam tabele y, chce by pole Z było G. - tak rozumiem twój opis. Może głupi jestem ;] -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]()
Post
#23
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
JA już nie wiem , czy ja po Chińsku piszę , czy ten problem jest nie do wykonania
![]() Nic innego nie robię jak próbuje wytłumaczyć co chcę wykonać... Baaa nawet pokazuje kod i schemat bazy mySQL. Dobra inaczej może wytłumaczę, bo z tymi klasami to chyba jest dobry sposób. tabela test w niej pola: -nazwa (varchar) -klasa1 (int) -klasa2 (int) -klasa3 (int) -klasa4 (int) -klasa5 (int) -klasa6 (int) -dostep (varchar) zrzut tabeli test: - kowalski, 1,0,1,0,1,1,nauczyciel - nowak, 0,1,1,0,1,0,uczen - słowik, 1,0,0,1,1,0,uczen - ktosiek, 1,1,0,0,1,0,uczen tabela zadania: -nazwa, -klasa zrzut tabeli zadania: -praca domowa, klasa1 -czytanie lektury,klasa3 tworzymy zapytanie do bazy $sql ... `test` tworzymy warunek if($row['dostep']=='nauczyciel') a w nim kolejne zapytanie do tabeli zadania $zapytanie do tabeli `zadania` tu chcę stworzyć warunek żeby wyświetliło mi tylko te zadania które wybiorę z listy select lub ich nie wybiorę ale należące do klasy do której jest przyporządkowany nauczyciel. Czyli nauczyciel ma wartość "1" dla klasy1, klasa3, klasa5, oraz klasa6. Czyli może zobaczyć wynik z tabeli zadania "praca domowa" oraz "czytanie lektury". Jak tego nie zrozumiesz to się poddaje.... |
|
|
![]()
Post
#24
|
|
![]() Grupa: Zarejestrowani Postów: 655 Pomógł: 73 Dołączył: 2.05.2014 Ostrzeżenie: (0%) ![]() ![]() |
many to many - mówi Ci to coś? -,-
[user]: - id - nazwa - dostęp [zadania]: - id - nazwa [user_zadania] - id_user - id_zadania tobie jednak nie do końca o to chodzi, więc: [user] - id - nazwa - dostep [klasa] - id - klasa [user_klasa] - id_user - id_ klasa [zadania] - id - nazwa - klasa [klasa_zadania] - id_klasa - id_zadania i teraz jednym zapytaniem robisz wszystko. Left join znasz? ![]() kurde pewnie zapytania Ci o tej godzinie nie podam, za długo z ORM korzystam ![]() -------------------- Overwatch24 - najbardziej zaawansowany Polski portal Overwatch od fanów dla fanów.
Fachowo.co Behance.net/fachowo |
|
|
![]()
Post
#25
|
|
Grupa: Zarejestrowani Postów: 681 Pomógł: 28 Dołączył: 14.08.2014 Ostrzeżenie: (0%) ![]() ![]() |
Ale dlaczego rozbijasz to na 4 tabele ? :-) Nie da się stworzyć tak zapytania by pobrać wyniki z tych dwóch tabel ?
tabela test w niej pola: -nazwa (varchar) -klasa1 (int) -klasa2 (int) -klasa3 (int) -klasa4 (int) -klasa5 (int) -klasa6 (int) -dostep (varchar) zrzut tabeli test: - kowalski, 1,0,1,0,1,1,nauczyciel - nowak, 0,1,1,0,1,0,uczen - słowik, 1,0,0,1,1,0,uczen - ktosiek, 1,1,0,0,1,0,uczen tabela zadania: -nazwa, -klasa zrzut tabeli zadania: -praca domowa, klasa1 -czytanie lektury,klasa3 coś na styl WHERE `test`.`klasa1` = `zadania`.`klasa` Chyba najłatwiej będzie zrobić w drugiej tabeli zadania też klasy od 1 do 6 i jeżeli należy do tej klasy to dawać wartość 1 i wtedy porównywać.. |
|
|
![]()
Post
#26
|
|
Grupa: Zarejestrowani Postów: 321 Pomógł: 55 Dołączył: 19.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
a co zrobisz gdy pojawią się klasy 1a i 1b
![]() ![]() spróbuj przyswoić to co napisał Ci @Forti Ten post edytował ctom 15.03.2015, 21:04:31 -------------------- Polecam MyDevil hosting idealny dla deweloperów
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 19:27 |