Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Zaznaczenie checkboxów na podstawie odwołania do bazy
Forum PHP.pl > Forum > Przedszkole
loleq1111
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ę.




nospor
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
loleq1111
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ć ?
nospor
Ma byc odwrotnie...
...FROM OFERTY LEFT JOIN OFERTY_HOTELU
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.