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
lobopol
post
Post #2





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

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


A może mógłbyś przedstawić strukturę bazy i dane jakie chcesz wyciągać. Bo naprawdę ciężko ciebie zrozumieć.

Na razie rozumiem, że masz jakąś tabelę o mniej więcej takiej strukturze
wykształcenie
id
zawartość_wykształcenie

i powiedzmy drugą tabelę
users
id
wykształcenie_id klucz obcy
reszta danych

i chciałbyś dodawać do bazy przez php w łatwy sposób nowych userów albo ich edytować w formie listy rozwijanej najprawdopodobniej

aby taką listę zrobić wystarczy, że wyciągniesz z bazy poleceniem select * from wyksztalcenie
i zrobisz np. tak listę:
  1. <form action="cel.php" method="post">
  2. <select name="list">
  3. <?php
  4. foreach($tabela as $key){
  5. echo '<option value="'.$key['id'].'">'.$key['login'];
  6. }
  7. ?>
  8. </select>
  9. <input type="submit" value="wyślij" />
  10. </form>
i teraz przy submicie dostajesz wartosc $_POST['list'] z wartością wybranego wykształcenia (oczywiście trzeba o sobie jeszcze zabezpieczyć (IMG:style_emoticons/default/smile.gif) )
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 - 05:10