ugrás a tartalomhoz

Egyszerűbb fórum készítésénél fellépett cikluson belüli session probléma.

nadilla · 2012. Dec. 17. (H), 00.42
Van egy egyszerűbb fórumom amit készítettem.
Ez témákból és az azon belül létrejövő hozzászólásokból áll. Tehát nincsen egyéb módon csoportosítva csak amolyan a téma a kérdés és a hozzászólás a hozzá tartozó válaszok. A fórum témáit (a kérdéseket) egy topik nevű táblában tárolom. Itt van néhány adat (id, a kérdés címe, a hozzá tartozó megjegyzés rovat stb...) , a hozzászólások pedig a fórum táblámban (id, hozzászóló felhasználó neve, tid= az az id amelyik topikhoz tartozik, stb...).
Mivel közel sem vagyok profi így megpróbáltam valahogyan összerakni azzal az ismerettel amit a neten szereztem. Két sessiont hoztam létre amely közül az egyik a topik id-t tárolja bizonyos kapcsolódási pontokon, egy másik pedig a felhasználó id-jét. Ezekre hivatkozok többször.
Jelenleg töklletesen működne CSAK mégse. Vagyis megjelenik a kérdések listázva az adatbázisomból úgy ahogyan én szeretném. A megnyitás gombbal pedig megnyitom a hozzászólást ahová szépen úgy tudok hozzászólni amennyiben bejelentkezek, ahogyan én szeretnék. A hiba az, hogy bármelyik kérdés megnyitására is kattintok ugyan úgy az utolsó kilistázandót nyitja meg és csak ahoz tudok hozzászólni. Rájöttem, hogy az a hiba, hogy a cikluson belül ha a megnyitás gombra kattintok akkor nem csak az aktuális kérdéshez vezeti le hogy session[tid] egyenlő legyen az aktuális topik id-vel, hanem az összessel sorban így nyilván valóan mindig az utolsó megjegyzett lesz az aktuális. Mivel fordított sorrendben iratom ki, hogy mindig a legfrissebbet láthassam így ez mindig az első hozzászólás lesz. Kicseréltem, átcserélte, összecseréltem, így-úgy kiírattam, úgy írattam, átírattam... Nem megy.

Tudna valaki segíteni nekem erre a problémára?
<?php 
session_start(); 
include 'connect.php'; 
header("Content-Type: text/html; charset=utf-8"); 

$ker= mysql_query("SELECT * FROM `topik` WHERE `delete` = '0' ORDER BY `id` DESC"); 
while($top = mysql_fetch_array($ker)) 
{ 

echo '<p>Topik:</p><br/><div id="topik" sytle="backgorund-image:url(/img/fust.png)">'.$top['name'
].''.$top['id'].' <br/>'.$top['text'].' '.$top['date'].'</div>'; 

echo '<form method="POST"><input border="0" src="img/megnyit.png" name="megnyit" width="70px" height="30px" type="image"></form>'; 
echo $top['id']; 
if(isset($_POST['megnyit_x'])){ 
$_SESSION['tid']=$top['id']; 
echo'<meta http-equiv="refresh" content="0; url=for.php"">';} 

}; 
?> 
Bizonyára nem a legszebb kivitelezés, de ennyire telik tőlem.
 
1

session?

Poetro · 2012. Dec. 17. (H), 07.55
Azt megmagyaráznád, miért kell az egészhez session változó? Miért nem adod át a kérdéses téma azonosítóját GET változóban?
if(isset($_POST['megnyit_x'])){   
$_SESSION['tid']=$top['id']; 
"">';} [/quote]
Ez okozza a problémát, ugyanis ez pontosan minden téma esetén beállítja a munkamenet változót a téma azonosítójára. Azaz ha 10 elemen megy végig, akkor pont 10-szer állítja be, ha be van állítva a megnyit_x POST változó. Mondjuk azt nem igazán értem, hogy milyen célt szolgál ez a POST változó, és miért van beállítva a ciklusban minden egyes témára a munkamenet.