Autor Zpráva
kincakivca
Profil
Dobrý den.
Vytvořil jsem si jednoduché forum v php, které mi funguje tak jak má až na jednu věc. nejdou mi řadit topici podle nejnovějších odpovedí.

}elseif (isset($_GET['viewforum'])){  
$id= $_GET['viewforum']; 
$stranka= $_GET['stranka']; 
echo"<a href='index.php?pridej-topic=$id'><img src='icons/topic_add.png ' alt='pridej topic'>Přidej topic</a>";
echo "<table class='forum_tabulky' width='98%' align='center'>";
        echo "<tr><th></th><th>Téma</th><th>Autor</th><th>Příspěvků</th><th>Hit</th></tr>";
$pocetradku = mysql_result(mysql_query("SELECT COUNT(*) from topic WHERE `id_fora` = '$id'"), 0);
$url = "index.php?viewforum=".$id."&strana=";
$max = "$data[10]";
$str=Ceil($ukaz_pocet[0]/$max); 
$strana2 = isset($_GET['strana'])  ?  ((int)($_GET['strana'])  ): 0;
$strana = $strana2*$max;
$topic = mysql_query("SELECT * FROM topic WHERE `id_fora`='$id' ORDER BY ID DESC LIMIT $strana, $max",$spojeni);
while ($Vypis=mysql_fetch_array($topic)){
      if($Vypis['nazev']){  
$pocetprispevku=mysql_result(mysql_query("SELECT COUNT(`id`) FROM `forum_odpovedi` WHERE `topic_id` = '".$Vypis['id']."' "),0);
if($Vypis['zamceno']==1){
                    $closet="<img src='icons/lock.png' alt='zamkni topic'>";
                }else{
$closet=".:.";
}
    echo"<tr>
                    <td></td>    
                    <td><div class='forum_nazev'>$closet<a href='index.php?viewtopic=".$Vypis['id']."&strana=0'>".$Vypis['nazev']."</a></td>
                    <td><div class='forum_nazev'>".$Vypis['zalozil']."</td>
                    <td><div class='forum_nazev'>".$pocetprispevku."</div></td>
                    <td><div class='forum_nazev'>?</div></td>";
 }else{
echo"<center><h3>Zatím nebylo nic publikováno!</h3></center>";
}
}
echo"</tr>";
echo "</table>";
include ROOT.("panely/strankovani/strankovani.php");
}
Vím že se to dělá nějak přez spojování tabulek
JOIN LEFT
ale nevím jak protože jak jsem googlil tak jsem našel něco co by jít mohlo ale zase mi tam nešlo stránkování. Potřeboval bych prosím poradit jak nato.
Taps
Profil
kincakivca:
ukaž jakou máš strukturu db tabulek
juriad
Profil
Mohlo by fungovat následující (ještě to otestuju) OTESTOVÁNO:
mysql_query("SELECT COALESCE(MAX(o.datum), t.zalozene) AS posledni, t.*, COUNT(o.datum) AS pocet
FROM topic AS t 
LEFT JOIN forum_odpovedi AS o ON t.id = o.topic_id
WHERE t.id_fora='$id' 
GROUP BY t.id
ORDER BY 1 DESC
LIMIT $strana, $max")

Živá ukázka:
http://sqlfiddle.com/#!2/12ef2/2/0
Výhodou je, že uvnitř dotazu si vytáhneš i počet odpovědí, nemusíš tedy posílat další dotaz.
kincakivca
Profil
Taps:
Tabulka topic :
id
id_fora
nazev
popis
zamceno
zalozil

a tabulka forum_odpovedi:
id
zalozil
text
topic_id
zalozeno


juriad:
Funguje perfektně děkuji :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0