Hey,

Ik ben bezig met mijn forum en daarbij moet het volgende gedaan worden op de pagina Topiclist.php

Alle topics moet uit de database gehaald worden bij desbetreffende sub_id, dit is niet zo moeilijk en lukt ook gewoon:

<?php
$sql = mysql_query("
					SELECT
						*
					FROM
						topic
					WHERE
						sub_id = '".mysql_real_escape_string($_GET['sub_id'])."'
				   ");
?>


Alleen nu het probleem:
Hij moet gaan ordenen op de last post...
hoe de h*ll krijg ik het voor elkaar om eerst alle post nog even op te halen en dan daarmee te ordenen?

En dan probleem 2:
Hij moet dan ook nog eens kijken naar de status van het topic, alleen als de status nr 2 heeft moet dat topic bovenin blijven deze is namelijk een sticky.

Iemand een idee of een duwtje in de goede richting?

Gr,
dus overal de a. en b. weg? en dit: ON (b.topic_id = a.id) ook weg?
dus overal de a. en b. weg?


Ja in je SELECT

En dit: ON (b.topic_id = a.id) ook weg?


Nee, die horen daar
dit dus:


$sql1 = mysql_query("
                    SELECT
                        *
                    FROM 
                        topic AS a
                    INNER JOIN 
                        posts AS b
                    ON 
                        (b.topic_id = a.id)
                    WHERE 
                        a.sub_id = '".mysql_real_escape_string($_GET['sub_id'])."'
                    ORDER BY
                        b.datum
                    DESC
                   ");

SELECT
    ietsvantabel1,
    ietsvantabell1,
    ietsvantabel2,
    ietsvantabell2
FROM 
    tabel1 AS a
INNER JOIN 
    tabel2 AS b
ON 
    b.ID = a.ID
WHERE 
    a.sub_id = '".intval($_GET['sub_id'])."'
ORDER BY
    b.datum
DESC 


[Edit]

Een id is altijd een cijfer, gebruik daarvoor (int) of intval()
Foutafhandeling inbouwen en de error in een echo doet wonderen. De error van de query geeft namelijk precies aan waar het fout gaat.
NA dit is me script:

<?php
session_start();

// Database connectie maken
include('config.php');

// Sessie aanmaken herhalen
$_SESSION['login'] = $_SESSION['login'];

// Functies includen
include('Functies.php');

// Stylesheet koppelen
echo '<link href="CSS/Forum.css" rel="stylesheet" type="text/css">';

// Alles uit database halen
$sql1 = mysql_query("
					SELECT
						*,
						*
					FROM 
						topic AS a
					INNER JOIN 
						posts AS b
					ON 
						(b.topic_id = a.id)
					WHERE 
						a.sub_id = '".intval($_GET['sub_id'])."'
					ORDER BY
						b.datum
					DESC
                   ");
// Aantal per pagina en aangeven hoeveel paginas er zijn
$per_pag = 15;
$aant_pag =  ceil(mysql_num_rows($sql1) / $per_pag);

// Huidige pagina een waarde geven
if(isset($_GET['nr']))
{
	$pagina = $_GET['nr'];
}
else
{
	$pagina = 0;
}

// Bepalen vanaf welk rec we uit de db meoten halen
$van = $pagina * $per_pag;
	
// Gegevens van de huidige pagina uit de database halen
$sql2 = mysql_query("
                    SELECT
						*,
						*
					FROM 
						topic AS a
					INNER JOIN 
						posts AS b
					ON 
						(b.topic_id = a.id)
					WHERE 
						a.sub_id = '".intval($_GET['sub_id'])."'
					ORDER BY
						b.datum
					DESC
					LIMIT
						$van, $per_pag
                   ");
echo '<div class="Forum">';

	// Alle pagina nummers echoën
	if($aant_pag > 1)
	{
		echo '<div class="navigatie">';
			if($pagina > 0)
			{
				echo '<a class="nav" href="?sub_id='.$_GET['sub_id'].'&nr='.($pagina - 1).'">Prev</a> ';
			}
			for($nmr = 0; $nmr < $aant_pag; $nmr++)
			{
				if($_GET['nr'] == $nmr)
				{
					echo '<b>'.($nmr + 1).'</b>';
				}
				else
				{
					echo '<a class="nav" href="?sub_id='.$_GET['sub_id'].'&nr='.$nmr.'">'.($nmr + 1).'</a>';
				}
				if($nmr < $aant_pag - 1) {
					echo ", ";
				} 
			}
			if($aant_pag > $pagina + 1)
			{
				echo ' <a class="nav" href="?sub_id='.$_GET['sub_id'].'&nr='.($pagina + 1).'">Next</a>';
			}
		echo '</div>';
	}
	
	// Hoofdcategorie titel echoën
	echo '<p class="titel-balk">Huiswerk</p>';
	
	// Hoe wie wat waar balk.
	echo '<div class="top-info-balk">';
		echo '<p class="top-info-klein"></p>';
		echo '<p class="top-info-groot">Topic</p>';
		echo '<p class="top-info-klein">Replies</p>';
		echo '<p class="top-info-middel1">Author</p>';
		echo '<p class="top-info-klein">Views</p>';
		echo '<p class="top-info-middel2">Last post</p>';
	echo '</div>';
	
	if(!mysql_query($sql1) OR !mysql_query($sql2))
	{
		if(mysql_num_rows($sql1) > 0)
		{
			// De gegevens echoën
			while($rec2 = mysql_fetch_array($sql2))
			{
				// Aantal posts ophalen
				$cnt = mysql_query("SELECT * FROM posts WHERE topic_id = '".$rec2['id']."'");
				// Last post ophalen
				$sql3 = mysql_query("SELECT * FROM posts WHERE topic_id = '".$rec2['id']."' ORDER BY id DESC LIMIT 1");
				$rec3 = mysql_fetch_array($sql3);
			
					// Alles weergeven
				echo '<div class="top-frm-balk">';
					/*
					TopStatus
						[ 0 ] => Gewoon
						[ 1 ] => Op slot
						[ 2 ] => Sticky (Toekomstig)
						[ 3 ] => Verhuisd
					*/
				
					echo '<p class="top-frm-klein">';
							if($_SESSION['login'] == $rec3['poster_id'])
							{
								if($rec2['status'] == '2')
								{
									echo '<img style="margin-top: 6.5px;" src="CSS/IMAGES/TopStatus4.gif">';
								}
								elseif($rec2['status'] == '1')
								{
									echo '<img style="margin-top: 6.5px;" src="CSS/IMAGES/TopStatus3.gif">';
								}
								elseif($rec2['status'] == '3')
								{
									echo '<img style="margin-top: 6.5px;" src="CSS/IMAGES/TopStatus5.gif">';
								}
								elseif($rec2['status'] == '0')
								{
									echo '<img style="margin-top: 6.5px;" src="CSS/IMAGES/TopStatus2.gif">';
								}
							}
							else
							{
								if($rec2['status'] == '2')
								{
									echo '<img style="margin-top: 6.5px;" src="CSS/IMAGES/TopStatus4.gif">';
								}
								elseif($rec2['status'] == '1')
								{
									echo '<img style="margin-top: 6.5px;" src="CSS/IMAGES/TopStatus3.gif">';
								}
								elseif($rec2['status'] == '3')
								{
									echo '<img style="margin-top: 6.5px;" src="CSS/IMAGES/TopStatus5.gif">';
								}
								elseif($rec2['status'] == '0')
								{
									echo '<img style="margin-top: 6.5px;" src="CSS/IMAGES/TopStatus1.gif">';
								}
							}
					echo '</p>';
					
					echo '<p class="top-frm-groot">';
					echo '<a class="toptitel" href="Showtopic.php?sub_id='.$_GET['sub_id'].'&topic_id='.$rec2['id'].'">'.$rec2['titel'].'</a><br>';
					echo '</p>';
				
					echo '<p class="top-frm-klein">'.mysql_num_rows($cnt).'</p>';
					echo '<p class="top-frm-middel1">'.gebruikersnaam($rec2['poster_id']).'</p>';
					echo '<p class="top-frm-klein">'.$rec2['views'].'</p>';
					echo '<p class="top-frm-middel2">'.gebruikersnaam($rec3['poster_id']).'<br>'.$rec3['datum'].'</p>';
				echo '</div>';
			}
		}
		else
		{
			echo '<p class="error">Helaas, er zijn nog geen topics in deze categorie</p>';
		}
	}
	else
	{
		echo '<p class="error">Helaas, er is een fout opgetreden bij een van de query´s</p>';
		echo '<br>Query 1:<br>';
		echo mysql_error($sql1);
		echo '<br>Query 2:<br>';
		echo mysql_error($sql2);
	}
	
	// Alle pagina nummers echoën
	if($aant_pag > 1)
	{
		echo '<div class="navigatie">';
			if($pagina > 0)
			{
				echo '<a class="nav" href="?sub_id='.$_GET['sub_id'].'&nr='.($pagina - 1).'">Prev</a> ';
			}
			for($nmr = 0; $nmr < $aant_pag; $nmr++)
			{
				if($_GET['nr'] == $nmr)
				{
					echo '<b>'.($nmr + 1).'</b>';
				}
				else
				{
					echo '<a class="nav" href="?sub_id='.$_GET['sub_id'].'&nr='.$nmr.'">'.($nmr + 1).'</a>';
				}
				if($nmr < $aant_pag - 1) {
					echo ", ";
				} 
			}
			if($aant_pag > $pagina + 1)
			{
				echo ' <a class="nav" href="?sub_id='.$_GET['sub_id'].'&nr='.($pagina + 1).'">Next</a>';
			}
		echo '</div>';
	}
	
if(isset($_SESSION['login']))
{
	echo '</div><br>';
	echo '<a href="Addtopic.php?sub_id='.$_GET['sub_id'].'"><img src="CSS/IMAGES/Addtopic.png" border="0"></a>';
}
else
{
	echo '<p class="error">Uw moet inloggen voor u een topic kunt aanmaken.</p>';
	echo '</div>';
}
?>


dus zoals je ziet zit er wel degelijk foutafhandeling in...
Regel 17 geen foutafhandeling
Regel 51 geen foutafhandeling
Regel 113 onmogelijk
Regel 121 geen foutafhandeling
Regel 123 geen foutafhandeling
R 17, en 51 worden gecheckt bij de onmogelijke regel XD

en 121 en 123 hebben indd geen foutafhandeling maar het gaat momenteel nu over de andere query's...

Wat is er onmogelijk aan als ik vragen mag?
Hier voer je 2 query's uit.
$sql1 = mysql_query(...);
$sql2 = mysql_query(...);

Dus daar zit nu een resultset in en dan voer je daar weer een query op uit.
if(!mysql_query($sql1) OR !mysql_query($sql2))

Dat gaat niet lukken.
Aaah


$Query =
"
    SELECT
        veld1,
        veld2,
        veld3
    FROM
        topic
    WHERE
        sub_id = '".intval($_GET['sub_id'])."'
    ORDER BY
        datum
    DESC
";

# Result of query
$Result = mysql_query($Query);

# Kijken of de query is gelukt
if(!$Result) {......


Maar dit heeft toch hetzelfde effect?

Reageren