Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Zaznaczenie checkboxów na podstawie odwołania do bazy
loleq1111
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.03.2016

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


Witam
zmagam się z problemem zaznaczenia checkboxów mających odwołanie w tabeli
powiedzmy mam tabelę łączącą oferty i hotel i tabela nazywa się oferty_hotelu:
składa się z:
id_hotelu
id_oferty
i teraz podczas edycji ogloszenia wybranych ofert hotelu checkboxy które mają odwołanie w tabeli są zaznaczone a te co nie mają odwołania pozostają bez zaznaczenia
np.

----------------------------
TABELA oferty |
----------------------------
| id_oferty | nazwa |
| 1 | klimatyzacja |
| 2 | darmowe wino |
| 3 | garaz |


----------------------------
TABELA oferty_hotelu |
----------------------------
| id_hotelu | id_oferty |
| 1 | 1 |
| 1 | 3 |
--------------------------
więc wybrany hotel (id 1) nie posiada w swojej ofercie darmowego wina (nr id 2 - brakuje w tabeli oferty_hotelu) więc checkbox o nazwie darmowe wino w porównaniu do reszty nie jest zaznaczony

kod który wykonałem ale nie spełnia wymagań, zapewne jest zły, bo nie jestem pewien czy wgl logiczny
( ponieważ poprawnie działa tylko do pierwszego, natomiast z pętlą while wyświetla więcej pól)
  1. $row=mysqli_fetch_array($result);
  2. if(($row['id_oferty'])==1)
  3. {
  4. echo '<input type="checkbox" name="klimatyzacja" checked/> klimatyzacja';
  5. }
  6. else
  7. {
  8. echo '<input type="checkbox" name="klimatyzacja" /> klimatyzacja';
  9. }
  10.  
  11. if(($row['id_oferty'])==2)
  12. {
  13. echo '<input type="checkbox" name="wino" checked/>wino';
  14. }
  15. else
  16. {
  17. echo '<input type="checkbox" name="wino" /> wino';
  18. }
  19. ....

Zastanawiałem się też nad wykorzystaniem funkcji
  1. if(mysqli_num_rows($result) > 0)

jednak chyba do każdego rekordu z oferty musiała by być osobna funkcja
Proszę o radę.




Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




1)Checkboxy to maja byc pobierane z bazy a nie jak teraz masz na sztywno w kodzie :/ Dodasz jakas oferte w bazie i co, musisz tez zmieniac kod php. Zero logiki
2) Razem z zapytaniem pobierajacym oferty z bazy dodajesz left join i laczysz w ten sposob czy dana oferta jest danym hotelu czy nie. Dzieki temu bedziesz wiedzial czy dany hotel masz zaznaczyc czy nie
Go to the top of the page
+Quote Post
loleq1111
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 12.03.2016

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


AD.1
Zdecydowanie masz rację, z tym pobieraniem nazwy checkboxów z bazy
Kod:
  1. $zap="SELECT * FROM oferty_hotelu LEFT JOIN oferty ON oferty.id_oferty = oferty_hotelu.id_oferty ";
  2. $wynik = mysqli_query($lacz, $zap);
  3. while($row=mysqli_fetch_array($wynik))
  4. {
  5. echo '<input type="checkbox" name="'.($row['nazwa']).'" /> '.($row['nazwa']).'';
  6. }

Wybrane zapytanie zwraca nazwy checkoboxów mające odwołanie w tabeli oferty_hotelu,
tylko ja chciałbym pobrać wszystkie pola z tabeli oferty (znam zapytanie) ale zaznaczyć tylko te co mają wlaśnie odwołanie do tabeli oferty_hotelu. W dalszym momencie nie wiem jak to ugryźć... W jaki sposób je zaznaczyć ?

Ten post edytował loleq1111 29.01.2017, 22:52:57
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Ma byc odwrotnie...
...FROM OFERTY LEFT JOIN OFERTY_HOTELU
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 - 22:31