Witam
zamierzam w ramach treningu (oop) napisać system newsów oparty na xml (pisze w tym dziale bo nie chodzi mi o oop akurat).
Jak dorobić komentarze do newsa zapisanego w plik xml/txt, zawsze pracowałem na mysql, i teraz są schody
no i czy zapisywanie newsów w formie
<newsy>
<news>
<title>news nr 1</title>
<body>tresc </body>
</news>
<news>
<title>news nr 2</title>
<body>tresc </body>
</news>
<news>
<title>news nr 3</title>
<body>tresc </body>
</news>
itd.
</newsy>
bedzie dobrym rozwiazaniem ?
Fifi209
26.07.2010, 18:33:24
Ja bym jeszcze dodał id newsów, czas i datę - to raz.
Komentarze:
<komentarze>
<komentarz newsid="1" czas="13123123" autor="aaa">Tresc</komentarz>
</komentarze>
I coś takiego wystarczy.
Gdy ma być tego więcej to rozbij na pliki.
bardziej chodzi mi o to jak to połączyć, jak to obrać w php ?
kiedy dzielic pliki ?
Fifi209
26.07.2010, 18:45:21
Cytat(rvk @ 26.07.2010, 18:40:19 )

bardziej chodzi mi o to jak to połączyć, jak to obrać w php ?
Parsujesz za pomocą:
simplexml wrzucasz newsy do tablicy i tak samo z komentarzami.
Cytat(rvk @ 26.07.2010, 18:40:19 )

kiedy dzielic pliki ?
Gdy np. komentarzy będzie bardzo dużo, wtedy polecałbym opcję, że jeden plik z komentarzem przypisany jest do jednego newsa.
do tablicy wrzucac po prostu ?
foreach($xml as $value)
{
$array['id'] = $xml->news->id;
$array['title'] = $xml->news->title
itd.
}
jeden plik z komentarzami do kazdego newsa, a czy newsy też dzielic, chyba nie?
Fifi209
26.07.2010, 19:03:24
Cytat(rvk @ 26.07.2010, 18:59:18 )

do tablicy wrzucac po prostu ?
foreach($xml as $value)
{
$array['id'] = $xml->news->id;
$array['title'] = $xml->news->title
itd.
}
jeden plik z komentarzami do kazdego newsa, a czy newsy też dzielic, chyba nie?
Raczej nie będą miały takich długich treści i nie będzie ich tak wiele jak komentarzy.
Co do kodu polecam rzutowanie:
ogólnie zrób tak:
foreach ($xml as $value) {
$array[(int)$value['id']] = (string) $value->tresc;
}
muk4
26.07.2010, 19:04:35
Zauważ, że jeden news może wywołać flame war więc komentarzy będzie dużo a newsów nie
@DOWNLepiej dać id kategorii do newsa.
co do tych newsów to chodziło mi bardziej czy dzielić je na ktegorie po plikach.
everth
26.07.2010, 19:11:55
Jeśli chcesz to obrać w PHP to zapoznaj się z szablonami
XSLT. Znakomicie ułatwiają przekształcanie jednego xml w drugi (choćby HTML). W PHP masz odpowiednie klasy do tego (SimpleXML, DOMDocument, XSLTProcessor).
Crozin
26.07.2010, 19:14:51
XML to format umożliwiający przechowywanie hierarchicznych danych więc w ogóle nie rozumiem co to za jakieś
komentarz newsid="123".
<archive>
<news>
<title>Some title</title>
<content>Some content</content>
<comments>
<comment>
<content>Blah blah blah</content>
</comment>
<comment>
<content>Blah blah blah #2</content>
</comment>
</comments>
</news>
</archive>
jak lepiej zrobic
<newsy>
<news id="1">
itd.
</news>
</newsy>
czy dodac pole <id>1</id> ?
everth
26.07.2010, 19:26:35
Jak wolisz. Co jest atrybutem/węzłem nie jest sformalizowane. Ładniej wygląda jako węzeł (pole).
Crozin
26.07.2010, 19:27:58
id/data dodania itp. - to są atrybuty dla aktualności. Co innego treść.
a czy nie bedzie później problemu ze zrobieniem RSS
np. jak mamy newsy
<archive>
<news>
<title>Some title</title>
<content>Some content</content>
<comments>
<comment>
<content>Blah blah blah</content>
</comment>
<comment>
<content>Blah blah blah #2</content>
</comment>
</comments>
</news>
</archive>
a rss wyglada tak
<?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0">
<channel>
<title>W3Schools Home Page</title>
<link>http://www.w3schools.com</link>
<description>Free web building tutorials</description>
<item>
<title>RSS Tutorial</title>
<link>http://www.w3schools.com/rss</link>
<description>New RSS tutorial on W3Schools</description>
</item>
<item>
<title>XML Tutorial</title>
<link>http://www.w3schools.com/xml</link>
<description>New XML tutorial on W3Schools</description>
</item>
</channel>
</rss>
to jest jakis sposob aby to polazyc ?
Fifi209
26.07.2010, 19:36:56
Cytat(Crozin @ 26.07.2010, 19:14:51 )

XML to format umożliwiający przechowywanie hierarchicznych danych więc w ogóle nie rozumiem co to za jakieś
komentarz newsid="123".
<archive>
<news>
<title>Some title</title>
<content>Some content</content>
<comments>
<comment>
<content>Blah blah blah</content>
</comment>
<comment>
<content>Blah blah blah #2</content>
</comment>
</comments>
</news>
</archive>
Jeżeli będziesz miał po 100 komentarzy do newsa to powodzenia. ;]
everth
26.07.2010, 19:39:40
Pierwsza znaleziona
klasa. Na tamtej stronce masz ich więcej.
Cytat(fifi209 @ 26.07.2010, 20:36:56 )

Jeżeli będziesz miał po 100 komentarzy do newsa to powodzenia. ;]
Ale co to za problem nawigować po XMLu, jak się ma do dyspozycji Xpath i XQuery?
Crozin
26.07.2010, 20:02:41
Cytat
Jeżeli będziesz miał po 100 komentarzy do newsa to powodzenia. ;]
To, że XML jest tutaj złym rozwiązaniem to już inna bajka. Z narzędzi korzysta się tak jak się powinno i dobiera się właściwie do różnych zastosowań.
Cytat
Ale co to za problem nawigować po XMLu, jak się ma do dyspozycji Xpath i XQuery?
Gdy plik zacząłby nabierać dziesiątek megabajtów danych pojawiłby się problemy z ilością pamięci jak i czasem parsowania samego pliku. Banalne do ominięcia przechowując sparsowany XML bezpośrednio w pamięci.
everth
26.07.2010, 20:10:38
Nie myślałem że on chce użyć tych danych jako coś w rodzaju bazy danych. Ech, trochę mnie gubi moje przyzwyczajenie do pracy według schematu DB -> XML -> XSLT -> HTML. Zawsze spokojnie może zmapować to drzewo xml na tabelę w Sql
no cóż chciałem poćwiczyć oop i napisac klase do zarządzania plikami (cw. operacje na plikach i przy okazji xml) a jako płaską baze miec cos jakby xml'a
ale zrobie to jednak chyba z mysql, bo zacześli taką pogawędke...
ale nie bardzo wiem jak ma wygladac klasa mysql...
Crozin
26.07.2010, 21:06:26
To Ci się trochę pomyliło: XML to hierarchiczna baza danych, MySQL to płaska baza danych.
Cytat
ale nie bardzo wiem jak ma wygladac klasa mysql...
PDO.
everth
26.07.2010, 21:11:40
Może mieć namiastkę hierarchiczności w tabeli jak ją odpowiednio skonstruuje. Słowo klucz: SQL Tree.
Cytat(Crozin @ 26.07.2010, 22:06:26 )

To Ci się trochę pomyliło: XML to hierarchiczna baza danych, MySQL to płaska baza danych.
PDO.
ale nie chcce korzystac z gotowej, chce napisac własna dla nauki i nie wiem jak ma wygladac..
wookieb
27.07.2010, 09:22:00
Ok pisz, Ale znacznie stracisz na wydajności w porównaniu do bardzo dobrej natywnej biblioteki.
ale mi chodzi o nauke oop w tym wypadku.. odradzasz rozumiem ?
Fifi209
27.07.2010, 10:14:19
Cytat(rvk @ 27.07.2010, 10:11:26 )

ale mi chodzi o nauke oop w tym wypadku.. odradzasz rozumiem ?
Ucz się pisząc aplikację opartą o MVC.
phpion
27.07.2010, 10:16:42
Cytat(fifi209 @ 27.07.2010, 11:14:19 )

Ucz się pisząc aplikację opartą o MVC.

Bardzo mądra porada. Może od razu rzuć kolegę na Zend Framework? Żeby poznawać wzorce projektowe (np. MVC) należy mieć podstawy (solidne?) "czystego" OOP więc klepanie jakiś prostych zestawów klas (nawet durnych jeśli chodzi o późniejsze wykorzystanie) będzie jak najbardziej wskazane.
Fifi209
27.07.2010, 10:22:48
Cytat(phpion @ 27.07.2010, 10:16:42 )

Bardzo mądra porada. Może od razu rzuć kolegę na Zend Framework? Żeby poznawać wzorce projektowe (np. MVC) należy mieć podstawy (solidne?) "czystego" OOP więc klepanie jakiś prostych zestawów klas (nawet durnych jeśli chodzi o późniejsze wykorzystanie) będzie jak najbardziej wskazane.
Rzucając kogoś na głęboką wodę zwykle szybciej uczy się pływać - przynajmniej na tyle, aby przetrwać.

Ja jestem zwolennikiem własnej teorii jeżeli chodzi o naukę: pisz to co Ci się może przydać - nigdy nie pisałem świństwa do bazy, ale np. session handlera czy cache system to tak.

i nawet z tego korzystałem w innych projektach.
phpion
27.07.2010, 10:33:36
Cytat(fifi209 @ 27.07.2010, 11:22:48 )

Rzucając kogoś na głęboką wodę zwykle szybciej uczy się pływać - przynajmniej na tyle, aby przetrwać.

Fajnie, tylko że potem mamy wysyp tematów, w których ludzie nie umieją/nie rozumieją np. dziedziczenia.
Fifi209
27.07.2010, 10:36:04
Cytat(phpion @ 27.07.2010, 10:33:36 )

Fajnie, tylko że potem mamy wysyp tematów, w których ludzie nie umieją/nie rozumieją np. dziedziczenia.
Czytałeś resztę postu mojego? Niech pisze, ale coś co mu się przyda.
everth
27.07.2010, 12:58:45
Podejście ma dobre - tak napisz swoją bazę danych (może być oparta o XML). Jeszcze lepiej to zrobisz jak zapoznasz się przy tym z pewnymi uniwersalnymi algorytmami wyszukiwania, sortowania. To naprawdę ci pomoże w przyszłości. Z mojej strony to mogę ci polecić na początek "Algorytmy, struktury danych i techniki programowania" wyd. Helion (jak to kryptoreklama to można usunąc

)
dziękuję wszystkim za rady i wskazówki, od jakiegoś czasu właśnie noszę się z zamiarem nauki tego OOP
dział o OOP takim czystym przerobiłem m.in w książce heliona "PHP i MySQL księga przykładów" oraz skorzystałem z wielu kursów które były dostępne w internecie.
zamierzam kupić książkę również helionu "PHP, MySQL i MVC"
ponieważ chciałbym pisać aplikację tzn zacząć już właśnie od MVC jak fifi209 polecał. Przeczytałem kilka artykułów o MVC w internecie i jednak nie są one dla mnie tak bardzo pomocne jakbym chciał, mam nadzieję, że w tej książce bardziej ogarne ten wzorzec.
jeszcze raz dziękuję za pomoc, postaram się do końca wakacji na pewno bede edukować się w kierunku oop i mvc a jakieś efekty/skrypty które stworzę na pewno tutaj umieszcze pod kątem jakieś weryfikacji czy coś.
Aktualnie, mam po prostu problem z tym jak klasa ma wyglądać np. taka właśnie jak obsługujaca mysql( bo chodzi mi o taką uniwersalna a nie tylko do jednej tabeli.. z tym się motam), ale chyba lepiej używać PDO, używać również tego przy później projektach już na MVC ?
Fifi209
27.07.2010, 13:24:48
Cytat(rvk @ 27.07.2010, 13:21:26 )

Aktualnie, mam po prostu problem z tym jak klasa ma wyglądać np. taka właśnie jak obsługujaca mysql( bo chodzi mi o taką uniwersalna a nie tylko do jednej tabeli.. z tym się motam), ale chyba lepiej używać PDO, używać również tego przy później projektach już na MVC ?
Dlatego pisałem, że nie ma sensu wynajdywać koło na nowo.

Użyj PDO w swoim projekcie, da Ci to możliwość np. łatwej zmiany bazy danych z mysql na postgre czy sqlite.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę
kliknij tutaj.