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,
Nee, de laatste methode is juist.

Daar doe je in feite dit:
if(!$Result = mysql_query($Query))

En bij de 'oude' doe je dit:
if(!$Result = mysql_query(mysql_query($Query)))
Aaah vandaar...

Dus dan zou dit correct moeten werken:


<?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 = ("
		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
		");
$res1 = mysql_query($sql1);
		
// Aantal per pagina en aangeven hoeveel paginas er zijn
$per_pag = 15;
$aant_pag =  ceil(mysql_num_rows($res1) / $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 = ("
        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
		");
$res2 = mysql_query($sql2);

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>';
	
	// Kijken of 1e 2 query's gelukt zijn.
	if(!$res1 or !$res2)
	{
		if(mysql_num_rows($res1) > 0)
		{
			// De gegevens echoën
			while($rec2 = mysql_fetch_array($res2))
			{
				// 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>';
}
?>
Ziet er een stuk beter uit.
Pfoe,

Ben nu in ieder geval al me scripts van het forum aan het her schrijven...
Als dat allemaal gedaan is kom ik weer terug met een error, denk ik :P

Gr,
Een error los je op.
Géén error is veel lastiger. ;-)
XD Die houden we er in :P

Ik heb een error hoor:

2 zelfs :P


Query 1:

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /customers/after-party.nl/after-party.nl/httpd.www/Forum/Topiclist.php on line 170

Query 2:

Warning: mysql_error(): supplied argument is not a valid MySQL-Link resource in /customers/after-party.nl/after-party.nl/httpd.www/Forum/Topiclist.php on line 173
En de bijbehorende regels zijn?

Edit: Waarschijnlijk deze regel (en de volgende op 3 regels verder)
echo mysql_error($sql1);

Moet zijn:
echo mysql_error($res1);


Edit2: Nutteloze regel:
$_SESSION['login'] = $_SESSION['login'];
Dat heb ik gedaan en ik blijf dezelfde error houden...

deze regels zijn het indd:


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($res1);
	
echo '<br>Query 2:<br>';
echo mysql_error($res2);


en die hebben het over:

QUERY 1

$sql1 = "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";
$res1 = mysql_query($sql1);


QUERY 2

$sql2 = "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";
$res2 = mysql_query($sql2);
En wat als je de eerste leeg laat?
Dus zo?

echo mysql_error();
Dan zegt hij meer:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* FROM topic AS a INNER JOIN posts AS ' at line 3

Reageren