Gisteren ben ik hier geholpen met sorteren van data uit database. Nu zit ik er nog mee dat de query telkens opnieuw wordt uitgevoerd als ik sorteer. Maar nu wil ik eigenlijk dat de data alleen op het scherm wordt gesorteerd zonder dat de query opnieuw wordt uitgevoerd en dat de gegevens dus niet opnieuw uit de database getrokken hoeven te worden. Is dit mogelijk? dit is de code tot nu toe.

<?php
function get_items ($sort_by, $sort_order) {
$sql = "
SELECT id, name, projectleader, kindofproduct, brand, ETD, ETA, country
FROM proposal
ORDER BY " . $sort_by . " " . $sort_order;
if (!$res = mysql_query ($sql)) {
echo '<pre>';
echo htmlentities ($sql);
trigger_error (mysql_errno () . ': ' . mysql_error ());
echo '</pre>';
}
else {
if ($sort_order == 'ASC') {
$sort_order = 'DESC';
}
else {
$sort_order = 'ASC';
}
echo '<table align="center">';
echo '<tr>';
echo '<td><a href="?sort_by=name&amp;sort_order='.$sort_order.'">Project name &#9660;</a></td>';
echo '<td><a href="?sort_by=projectleader&amp;sort_order='.$sort_order.'">Project leader &#9660;</a></td>';
echo '<td><a href="?sort_by=kindofproduct&amp;sort_order='.$sort_order.'">Kind of product &#9660;</a></td>';
echo '<td><a href="?sort_by=brand&amp;sort_order='.$sort_order.'">Brand &#9660;</a></td>';
echo '<td>ETD</td>';
echo '<td>ETA</td>';
echo '<td>Exclusivity country</td>';
echo '<td>Project details</td>';
echo '</tr>';
while (list($id, $name, $projectleader, $kindofproduct, $brand, $ETD, $ETA, $country) = mysql_fetch_array ($res)) {
echo("<tr>
<td>$name</td>
<td>$projectleader</td>
<td>$kindofproduct</td>
<td>$brand</td>
<td>$ETD</td>
<td>$ETA</td>
<td>$country</td>
<td><a href=\"projectdetails.php?id=$id \">Project details</a></td>
\n");
}
echo '</table>';
}
}

$sort_by = (isset ($_GET['sort_by'])) ? ($_GET['sort_by']) : ('name');
$sort_by_toegestaan = array ('ID', 'name', 'projectleader', 'kindofproduct', 'brand');
if (!in_array ($sort_by, $sort_by_toegestaan)) {
$sort_by = 'name';
}
$sort_order = (isset ($_GET['sort_order'])) ? ($_GET['sort_order']) : ('ASC');
$sort_order_toegestaan = array ('ASC', 'DESC');
if (!in_array ($sort_order, $sort_order_toegestaan)) {
$sort_order = 'ASC';
}
?>
Karel,

Dit is mogelijk... Wanneer je dat wilt sorteren die op het scherm staat, en je wilt dit doen vanuit de browser, zul je alleen client-side moeten gaan werken...
Het is dus mogelijk, maar dan niet met PHP... Ik weet niet hoe groot je javascript kennis is, maar ik zou eens zoeken naar scripts als: http://www.activewidgets.com/grid/ (let op, deze is niet gratis!)

Maar volgens mij geeft hij wel duidelijk weer wat je wilt, of niet?
ah bedankt, ik heb iets gevonden dat inderdaag met javascript werkt en waar ik niet voor hoef te betalen ;)

Reageren