Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: mysql kysely

nozies [04.04.2010 21:29:36]

#

scripti träkkää luettuja kommentteja ja allaoleva scripti koittaa linkkaa uusimpaan lukemattomaan kommenttiin:

<?php
						# lasketaan montako kommenttia luettu
						$total = mysql_query("SELECT COUNT(*) as r FROM comments_track WHERE post_id = ".intval($row['id'])." AND user_id = ".$user->data['user_id']." and section = 'news'"); # countataan commentit
						$total = mysql_fetch_assoc($total);
						# viestien määrä per sivu
						$rowsperpage = rowsperpage;
						# total sivujen määrä
						$totalpages = ceil($count['n'] / $rowsperpage);
						# lasketaan mille sivulle linkataan
						$whatpage = ceil(($total['r'] +1) / $rowsperpage);

						# jos sivu mille linkataa alle 1 tai kommentteja alle 1 sivullisen nii currentpage on 1
						if ($whatpage < 1 || $total['r'] < $rowsperpage) $whatpage = 1;

						# montako lukematta (kommenttienmäärä - luettumäärä)
						$unread = $count['n'] - $total['r'];

						#viimine kommentti
						$whatcomment = mysql_query("SELECT comment_id AS r from comments_track WHERE post_id = ".intval($row['id'])." AND user_id = ".$user->data['user_id']." AND section = 'news' ORDER BY comment_id DESC LIMIT 1");
						$whatcomment = mysql_fetch_assoc($whatcomment);
						$whatcomment = $whatcomment['r'] + 1;

						# ei näytetä kuitenkaa linkkiä jos ei oo yhtään kommenttiakaan
						if ($unread > 0) {

						echo "<div class='more'><a href='index.php?p=news&amp;id=".$row['id']."&currentpage=".$whatpage."#comment";

						# jos alle 15 kommenttia, tai ei yhtään kommenttia luettu kohdistetaan #comments muuten #commentsCommentid
						if ($count['n'] <= $rowsperpage || $total['r'] < $rowsperpage)
							echo "s";
						else
							echo $whatcomment;

							echo "'>{$unread} new</a></div>";

							}
?>

eli ongelmana on saada selville isoin luku missä post_id = x ja userid = x, toimii hyvin siihen asti kunnes vanhempaan postiin tulee uus kommentti koska nykyinen kysely hakee suurimman comment_id:n.

EDIT: selitin siis aika epäselvästi, ongelma tulee siis sillon kun se laskee uusimman comment_id:n sen perusteella että viimeksi luettu + 1 olis uusin mutta jos muihin posteihin tullu välissä kommentteja nii se kohdistaaki sen #comment(viimisinsiinäpostissa)+1 joka ois vaikka #comment200 ja toisessa postissa 20 kommenttia nii nyt se koittaa kohdistaa kuitenkin #comment201 eikä #comment221.

pistemies [05.04.2010 11:11:48]

#

Tietty selitit ehkä vaikeasti. Eikö tämä sitten käy päinsä:

"SELECT * FROM comment_id ORDER BY post_id DESC LIMIT 1"

Eli haetaan järjestys kentän mukaan, joka listaa viimeisimmät postaukset. Jos tuo kenttä päivittyy aina, kun siihen tulee uusi postaus, sen pitäisi toimia oikein...

Ps. Tuossa jäi epäselväksi tuo userid, millainen listaus sen mukaan piti tehdä?

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta