Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> system newsów - kategorie
xxdrago
post
Post #1





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Witam, ja się chciałem zapytać czy to jest dobry pomysł z kategoriami newsów najpierw dam tabele:

Nazwy kategorii, id , typ
  1. CREATE TABLE `kategorie` (
  2. `kategoria_id` int(11) NOT NULL AUTO_INCREMENT,
  3. `kategoria_nazwa` text collate utf8_polish_ci NOT NULL,
  4. `typ` int(11) NOT NULL DEFAULT '0',
  5. KEY `kategoria_id` (`kategoria_id`)
  6. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=3 ;




W tej tabeli mam newsy:


  1. CREATE TABLE `newsy_strony` (
  2. `id` smallint(6) NOT NULL AUTO_INCREMENT,
  3. `nazwa` text collate utf8_polish_ci NOT NULL,
  4. `data` datetime NOT NULL DEFAULT '0000-00-00 00:00:00',
  5. `autor` varchar(255) collate utf8_polish_ci NOT NULL DEFAULT '',
  6. `tresc` text collate utf8_polish_ci NOT NULL,
  7. `typ` text collate utf8_polish_ci NOT NULL,
  8. `kategoria_id` int(11) NOT NULL,
  9. `link` text collate utf8_polish_ci NOT NULL,
  10. PRIMARY KEY (`id`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=127 ;


`kategoria_id` int(11) NOT NULL, - id kategorii.

Myślałem sobie zrobić tak żeby była możliwość, kilku kategorii dla jednego newsa, więc zastosowałbym funkcje explode.

A przykładowy rekord z kategoria_id wyglądałby tak:
Kod
5,7,3


Potem funkcją
  1. explode(','$rekord['kategoria_id'])
bym to ładnie podzielił do tabeli, następnie wyszukałbym w bazie nazwy kategorii, po id. Czy to jest doby pomysł?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
xxdrago
post
Post #2





Grupa: Zarejestrowani
Postów: 654
Pomógł: 42
Dołączył: 27.07.2010
Skąd: Jaworzno

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


Zrobiłem tak jak mówicie, zrobiłem sobie tabele:

Co tutaj można by było z optymalizować?

  1. if (is_null($news)) {
  2. $dane = 'SELECT * FROM `newsy_strony` WHERE typ =1 ORDER BY `data` DESC limit ' . $start . ',' . ($end - $start + 1);
  3. $sql = $db->query($dane);
  4.  
  5.  
  6. while ($newss = $sql->fetch_assoc()) {
  7. $bb = new BbCode(); // Dodanie BB-CODE
  8. $bb->parse($newss['tresc']); // Prasowanie
  9. $length = 500; // Sktracanie tekstu...
  10. $cutText = $bb->cutText($length);
  11.  
  12. // Ilosc komentarzy
  13. $sql_ilosc = 'SELECT COUNT( * ) FROM komentarze WHERE id =' . $newss['id'];
  14. $sql_iloscc = $db->query($sql_ilosc);
  15. $newse = $sql_iloscc->fetch_assoc();
  16.  
  17. // Kategoria
  18. $kategoria_sql = 'SELECT * FROM `kategorie_newsy` where news_id=' . $newss['id'];
  19. $kategoria = $db->query($kategoria_sql);
  20. $kategoriaa = $kategoria->fetch_assoc();
  21.  
  22. if (empty($kategoriaa['kategoria_id']))
  23. {
  24. $id_k =1;
  25. }
  26. else
  27. {
  28. $id_k = $kategoriaa['kategoria_id'];
  29. }
  30.  
  31. // Zap2
  32. $kategoria2_sql = 'SELECT * FROM `kategorie` where kategoria_id=' . $id_k;
  33. $kategoria2 = $db->query($kategoria2_sql);
  34. $kategoriaa2 = $kategoria2->fetch_assoc();
  35.  
  36.  
  37.  
  38. // To poniżej dodajemy co cache
  39.  
  40. $news[] = array(
  41. 'nazwa' => znaki('znaki', $newss['nazwa']),
  42. 'id' => $newss['id'],
  43. 'link' => $newss['link'],
  44. 'tresc' => $cutText,
  45. 'autor' => $newss['autor'],
  46. 'data' => $newss['data'],
  47. 'komentarze' => $newse['COUNT( * )'],
  48. 'kategoria' => $kategoriaa2['kategoria_nazwa'],
  49. );
  50. }
  51. $cache->Put('news' . $actualPage, $news, '@queries');
  52. }
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: 10.10.2025 - 05:08