Hozzászólások sorszámozása fórumban
Hi!
Jelenleg egy fórumot fejlesztek, nos a kérdésem a következő lenne:
Adott 1 fórum, azon belül egy topik, azon belül a hozzászólások.
Nos én a hozzászólásokat szeretném sorszámozni 1,2,3... Erre nem nagyon van öteletem, hogy hogyan tudnám megvalósítani. Jelenleg a hozzászólás id-jét iratom ki, de ez elég csúnya, hogy mondjuk 45-ös sorszámmal kezdődik egy topikon belül az első hozzászólás.
a mysql tábláim így néznek ki:
CREATE TABLE IF NOT EXISTS `forumok` (
`forumID` int(14) NOT NULL auto_increment,
`forumnev` varchar(255) NOT NULL,
`kategoria` int(14) NOT NULL default '0',
`info` text NOT NULL,
`datum` varchar(50) NOT NULL default '0000.00.00.',
`zart` int(11) NOT NULL default '0',
`felhID` int(14) NOT NULL,
PRIMARY KEY (`forumID`)
) ENGINE=MyISAM DEFAULT CHARSET=UTF-8 AUTO_INCREMENT=8 ;
CREATE TABLE IF NOT EXISTS `forumtema` (
`temaID` int(14) NOT NULL auto_increment,
`kategoria` int(14) NOT NULL default '0',
`temanev` varchar(255) NOT NULL,
`info` text NOT NULL,
`zart` int(11) NOT NULL default '0',
`datum` varchar(50) NOT NULL default '0000.00.00.',
`forumID` int(14) NOT NULL,
`felhID` int(14) NOT NULL,
PRIMARY KEY (`temaID`)
) ENGINE=MyISAM DEFAULT CHARSET=UTF-8 AUTO_INCREMENT=9 ;
CREATE TABLE IF NOT EXISTS `forumkomment` (
`kommentID` int(14) NOT NULL auto_increment,
`temaID` int(14) NOT NULL default '0',
`felhID` int(14) NOT NULL default '0',
`komment` text NOT NULL,
`datum` varchar(50) NOT NULL default '0000.00.00.',
`valasz` varchar(255) NOT NULL default '0',
`forumID` int(14) NOT NULL,
PRIMARY KEY (`kommentID`)
) ENGINE=MyISAM DEFAULT CHARSET=UTF-8 AUTO_INCREMENT=35 ;
Várom az ötleteket, hogy miként tudnám megoldani.
■ Jelenleg egy fórumot fejlesztek, nos a kérdésem a következő lenne:
Adott 1 fórum, azon belül egy topik, azon belül a hozzászólások.
Nos én a hozzászólásokat szeretném sorszámozni 1,2,3... Erre nem nagyon van öteletem, hogy hogyan tudnám megvalósítani. Jelenleg a hozzászólás id-jét iratom ki, de ez elég csúnya, hogy mondjuk 45-ös sorszámmal kezdődik egy topikon belül az első hozzászólás.
a mysql tábláim így néznek ki:
CREATE TABLE IF NOT EXISTS `forumok` (
`forumID` int(14) NOT NULL auto_increment,
`forumnev` varchar(255) NOT NULL,
`kategoria` int(14) NOT NULL default '0',
`info` text NOT NULL,
`datum` varchar(50) NOT NULL default '0000.00.00.',
`zart` int(11) NOT NULL default '0',
`felhID` int(14) NOT NULL,
PRIMARY KEY (`forumID`)
) ENGINE=MyISAM DEFAULT CHARSET=UTF-8 AUTO_INCREMENT=8 ;
CREATE TABLE IF NOT EXISTS `forumtema` (
`temaID` int(14) NOT NULL auto_increment,
`kategoria` int(14) NOT NULL default '0',
`temanev` varchar(255) NOT NULL,
`info` text NOT NULL,
`zart` int(11) NOT NULL default '0',
`datum` varchar(50) NOT NULL default '0000.00.00.',
`forumID` int(14) NOT NULL,
`felhID` int(14) NOT NULL,
PRIMARY KEY (`temaID`)
) ENGINE=MyISAM DEFAULT CHARSET=UTF-8 AUTO_INCREMENT=9 ;
CREATE TABLE IF NOT EXISTS `forumkomment` (
`kommentID` int(14) NOT NULL auto_increment,
`temaID` int(14) NOT NULL default '0',
`felhID` int(14) NOT NULL default '0',
`komment` text NOT NULL,
`datum` varchar(50) NOT NULL default '0000.00.00.',
`valasz` varchar(255) NOT NULL default '0',
`forumID` int(14) NOT NULL,
PRIMARY KEY (`kommentID`)
) ENGINE=MyISAM DEFAULT CHARSET=UTF-8 AUTO_INCREMENT=35 ;
Várom az ötleteket, hogy miként tudnám megoldani.
rang
Sikerült :)
sql injection
hááát
miért, az id-val nem könnyű megoldani? az id változik?
szerintem hülyeség felvenni adatbázisba a sorszámot, ez a view réteg feladata, egyszerűen kell egy változó, amit a válaszok kiírásának ciklusmagjában növelsz aztán kiírsz.
szerk: ráadásul a moderáció igenis változtathatja a sorrendet és a végén ugyanúgy 45-tel fog kezdődni a listázás.
Moderálással nem változik,
Ezzel próbálkoztam én is először, ez csak az én egyéni véleményem. Az adatbázisos megoldás nekem jobban bejön
nem változik, csak nem egyenletes
megszámolom összesen hány
Ezzel csak az akartam
két féle nézet van: legutolsó hozzászólás legyen felül vagy a legelső.
while függvénybe: $n=n+1;
Ha a legelső van felül aminek a sorszáma n=0+1, akkor ez stimmel, a második n=n+1.
De ha a legutolsó hsz van felül ami most legyen a második hsz(összesen két hsz-van), tehát annak a sorszáma lesz az n=1, ami nem jó mivel ez az utolsó komment és nem az első.
Ezt meg lehet oldani, úgy hogy megnézem, hogy összesen hány hsz van tehát
$n=$n+1;
$osszes=mysql_num_rows(...hozzaszolasok...);
$n=$osszes-$n;
de ez nem a legjobb szerintem.
kivonás
nem egészen értem
És mi van akkor ha lehet válaszolni egy előző kommentre? Mondjuk kimented az id-jét az elemnek és hogyan keresed ki hogy most épp milyen sorszámmal rendelkezik? Főleg ha a forrás és a válasz között néhány hozzászólás törlődik is...
Szerintem semmivel sem bonyolultabb és pazarlóbb felvenni erre egy plusz mezőt az adatbázisban, kényelmesebben lehet keresni így a válaszok közül is.
válaszok sorszáma
adott egy tábla:
- commentId
- replyToId (annak a hozzászólásnak a commentId-ja amire válaszol)
- commentDate
- comment
a végére rakhatod a limitet, nem fog összezavarodni. az első sorszámnak (cord) pedig végülis nincs is jelentősége, azt a view is ki tudja számolni a hanyadikoldalez és a hozzászólásokoldalanként változókból. ha az első sorszám nincs akkor ráadásul akárhogyan rendezheted is a hozzászólásokat (oda-vissza) a limit mellett.
nem teszteltem teljesítmény szempontjából és maradhatott is benne hiba.
ja és hogy miért is jó egy új oszlop bevezetése nélkül:
- egyrészt szerintem a sorszámozás nem olyan fontos egy fórumban, használja egyáltalán valaki valamire?
- nem kell újrarendezni moderáláskor, törléskor
nincs újrarendezés
Nem azt mondtam, hogy nem oldható meg id-kkel, de egyszerűen ezt felesleges bonyolításnak tartom. És azzal amit írtál még mindig megmarad az, hogy komment törlésnél minden utána következő hozzászólás (generált) sorszáma megváltozik. Egyébként szerintem a sorszám fontos, marhára fel tud bosszantani amikor egy fórumba benézek egyszer, az utolsó hozzászólás száma #50, legközelebb benézek, akkor meg #45, de volt két új is, csak a moderátorok töröltek hetet. Na ezt nem oldja meg a lekérdezésed.
téma
a téma arról szól, hogy hogyan lehet megoldani a folyamatos sorszámozást (ami egytől kezdődik és nincs kimaradt szám). ennyi és nem több.
szerk: oké, most olvastam :D
téma
Remélem nincs harag - úgy gondolom így legalább a topiknyitó is megismert két álláspontot és már biztosan meg tudja oldani az említett problémákat :)
zárszó
:)
Szerintem, a sorszámozás nagyon fontos ezért is tettem fel ezt a kérdést. Én utálom azt, amikor írok egy választ, egy másik válaszra és egymáson belül van 3-4 quote, Ezért gondoltam hogy csak annyit írok ki egy válasz esetén, hogy Válasz erre: #sorszám - Név - Dátum
Mindkét megoldás jó!
gex: A te megoldásodat egy vendégkönyvbe, felhasználók vendégkönyvébe tudnám elképzelni.
Drawain: A te ötletedet 5 perc alatt meg lehet valósítani, és üzembe is helyezni (sikerült is!)
Köszönöm a hasznos kommenteket! bye