Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Pobranie wszystkich tagów dla każdego z artykułów
Calibri
post 15.01.2012, 10:16:29
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 4
Dołączył: 22.07.2011

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


Cześć. Mam problem który próbuję rozwiązać a nie udaje mi się.

Pobieram wszystkie artykuły które przynależą do jednej kategorii. Chciałbym przy nich też wyświetlać wszystkie tagi które są połączone z każdym z artykułów.

Chcę to rozwiązać korzystając z PDO za pomocą jednego zapytania.

Znalazłem rozwiązanie na wikibooks -> Obsługa relacji w PDO ale po zastosowaniu to nie chce za bardzo działać.

Co prawda podaje mi poprawny pierwszy tytuł artykułu wybranej kategorii ale dalej sypie błędami "niezdefiniowany index: title". Tak nie powinno się stać gdyż te niezdefiniowane indexy odnoszą się do innych artykułów innych działów niż ten który wybrałem. Czyli - wywala mi wszystko z bazy.

Oto mój przykład:
  1. $wynik = array();
  2.  
  3. $articles = $m->s_theme_articles($this->idblogs, $_GET['idlinks'], 'byIdLinks'); // wypluwa te dane co w tablicy gdzie id kategorii = $_GET['idlinks']
  4. while ($result = $articles->fetch()) {
  5. $wynik[$result['idarticles']] = array(
  6. 'title' => $result['title'],
  7. 'day' => $result['day'],
  8. 'month' => $result['month'],
  9. 'year' => $result['year'],
  10. 'text' => $result['text'],
  11. 'name' => array()
  12. );
  13. }
  14.  
  15. $stmt = $m->pdo->query('SELECT idarticles, name FROM tags NATURAL JOIN arti_tags ORDER BY idarticles');
  16. while ($result = $stmt->fetch()) {
  17. $wynik[$result['idarticles']]['name'] = array(
  18. 'name' => $result['name']
  19. );
  20. }



Potem do wyświetlenia stosuję ten przykład z wikibooks:

  1. foreach($wynik as $w) {
  2. echo $w['title'];
  3. }


jest tylko wyświetlanie tytułu ale i tak w tym przykładzie sypie mi wszystko - nawet chce wyświetlić (a nie umie) te tytuły które nie należą do wybranej kategorii.
Czy jest sposób na to aby pobierało mi tylko wybrany artykuł z wybranej kategorii. W tej tablicy trzymię idartykułu, to może da się zmodyfikować pętlę poprzez dodanie indeksu równego id kategorii ? Podpowiem że id kategorii da się szybko wyciągnąć - jest to tablica globalna GET



Próbowałem też tak:
pole: name - nazwa taga
tabela: arti_tags - przechowywanie idartykułu i idtaga
tabela: tags - przechowywanie idtaga i nazwę taga
  1. SELECT idarticles, title, DAY(creation_date) AS day, MONTH(creation_date) AS month, YEAR(creation_date) AS year, text, name FROM articles NATURAL JOIN arti_tags NATURAL JOIN tags WHERE (...) ORDER BY idarticles GROUP BY name


ale ten przykład mi wyświetli po jednym tagu który znajdzie jako pierwszy z każdego artykułu.


Jak mam to rozwiązać questionmark.gif Fajnie gdyby dało się to zrobić za pomocą jednego zapytania.


Fajnie by było gdyby jakoś dało się to rozwiązać w PDO.


pozdrawiam.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 16:26