Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]wyciągnięcie danych z bazy i zrobienie z nich menu
lobopol
post
Post #1





Grupa: Zarejestrowani
Postów: 1 729
Pomógł: 346
Dołączył: 4.04.2009

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


  1. --tabela łącząca właściciela ze swoją stroną
  2. CREATE TABLE `site` (
  3. `id` int(11) NOT NULL AUTO_INCREMENT,
  4. `user_id` int(11) NOT NULL,
  5. PRIMARY KEY (`id`),
  6. UNIQUE KEY `user_id` (`user_id`),
  7. CONSTRAINT `user_ids` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
  8. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  9.  
  10. --
  11. CREATE TABLE `section` (
  12. `id` int(11) NOT NULL AUTO_INCREMENT,
  13. `site_id` int(11) NOT NULL,
  14. `name` varchar(255) NOT NULL,
  15. `section_position` int(11) NOT NULL,
  16. PRIMARY KEY (`id`),
  17. KEY `site_id` (`site_id`),
  18. CONSTRAINT `site_id` FOREIGN KEY (`site_id`) REFERENCES `site` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
  19. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  20.  
  21.  
  22. CREATE TABLE `page` (
  23. `id` int(11) NOT NULL AUTO_INCREMENT,
  24. `section_id` int(11) NOT NULL,
  25. `name` varchar(255) NOT NULL,
  26. `position` int(11) NOT NULL,
  27. PRIMARY KEY (`id`),
  28. KEY `section_id` (`section_id`),
  29. CONSTRAINT `section_id` FOREIGN KEY (`section_id`) REFERENCES `section` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
  30. ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  31.  
  32.  
  33.  


W skrócie menu miałoby wyglądać:


site_id (zależnie od tego miałoby wyciągać sekcje, a na podstawie sekcji wyciąganie stron


SECTION position 1 (bądź najmniejszą istniejącą następną w wypadku gdy ta pozycja już nie istnieje)
page position 1 (bądź najmniejszą istniejącą następną w wypadku gdy ta pozycja już nie istnieje) gdzie section_id = id sekcji z pozycją 1
page position 2 (bądź najmniejszą istniejącą następną w wypadku gdy ta pozycja już nie istnieje) gdzie section_id = id sekcji z pozycją 1
page position 3 (bądź najmniejszą istniejącą następną w wypadku gdy ta pozycja już nie istnieje) gdzie section_id = id sekcji z pozycją 1
SECTION position 2 (bądź najmniejszą istniejącą następną w wypadku gdy ta pozycja już nie istnieje)
page position 1 (bądź najmniejszą istniejącą następną w wypadku gdy ta pozycja już nie istnieje) gdzie section_id = id sekcji z pozycją 2
page position 2 (bądź najmniejszą istniejącą następną w wypadku gdy ta pozycja już nie istnieje) gdzie section_id = id sekcji z pozycją 2
page position 3 (bądź najmniejszą istniejącą następną w wypadku gdy ta pozycja już nie istnieje) gdzie section_id = id sekcji z pozycją 2
.
.
.
SECTION position ostatnia (bądź najmniejszą istniejącą następną w wypadku gdy ta pozycja już nie istnieje)
page position 1 (bądź najmniejszą istniejącą następną w wypadku gdy ta pozycja już nie istnieje) gdzie section_id = id sekcji z pozycją ostatnia
page position 2 (bądź najmniejszą istniejącą następną w wypadku gdy ta pozycja już nie istnieje) gdzie section_id = id sekcji z pozycją ostatnia
page position 3 (bądź najmniejszą istniejącą następną w wypadku gdy ta pozycja już nie istnieje) gdzie section_id = id sekcji z pozycją ostatnia


Jakie zapytanie do tego ułożyć i jak to w miarę dobrze wyświetlić pętlą

Ok to może inaczej postanowiłem to rozbić na 2 zapytania z pierwszym nie mam problemu :
wyciągnięcie sekcji
SELECT * FROM section where site_id='1' ORDER BY `section_position`;

ale z drugim zapytaniem mam już problem bo nie wiem jak wyciągnąć strony których section_id ma przypisane site_id='1'
zapytanie
SELECT page.id, page.name from page, section where section.site_id='1' podwaja mi wyniki

Ten post edytował lobopol 9.01.2010, 12:40:40
Go to the top of the page
+Quote Post

Posty w temacie


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: 3.10.2025 - 20:56