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
 
Start new topic
Odpowiedzi
Nh2003
post
Post #2





Grupa: Zarejestrowani
Postów: 81
Pomógł: 14
Dołączył: 3.10.2007

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


  1. SELECT
  2. site.id,
  3. section.id,
  4. section.name,
  5. section.section_position,
  6. page.id,
  7. page.name,
  8. page.`position`
  9. FROM
  10. site
  11. INNER JOIN section ON site.id = section.site_id
  12. INNER JOIN page ON section.id = page.section_id
  13. WHERE
  14. site.id = '1'
  15. ORDER BY
  16. section.section_position ASC,
  17. page.`position` ASC
Go to the top of the page
+Quote Post
kaminskp
post
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 18.03.2008
Skąd: Olsztyn

Ostrzeżenie: (20%)
X----


Czy możesz to opisać Nh2003?
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: 14.10.2025 - 11:56