I have a little problem and I can't see the solution. It should be very easy. I want to make a liitle script that does a simle thing. When I click:
Class -> go to classes.php?sort=class-desc
Then Class again -> go to classes.php?sort=class-asc
Then Class again -> go to classes.php?sort=class-desc
And so on ...
if (isset($_GET['sort'])) {
$item = $_GET['sort'];
$pos = strpos($item, '-');
$crit = substr($item, 0, $pos);
$ordine = substr($item, $pos+1);
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=class-asc>Class</a></div>";
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=avg_grades-asc>General</a></div>";
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=abscences-asc>Nr Abscences</a></div>";
echo "<div style='float:left;width: 180px;'><a href=classes.php?sort=nr_students-asc>Nr Students</a></div><br><br>";
}else{
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=class-desc>Class</a></div>";
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=avg_grades-desc>General</a></div>";
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=absente-desc>Nr Abscences</a></div>";
echo "<div style='float:left;width: 180px;'><a href=classes.php?sort=nr_students-desc>Nr Students</a></div><br><br>";
$item = 'avg_grades';
}
I'm sorry , I know It is an easy thing but I simply don't know where to put the loop.
Thank you
You need another if else
statement to check your $ordine
variable:
if (isset($_GET['sort'])) {
$item = $_GET['sort'];
$sort = explode('-', $item);
$crit = $sort[0];
$ordine = $sort[1];
if ($ordine === 'desc') {
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=class-asc>Class</a></div>";
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=avg_grades-asc>General</a></div>";
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=abscences-asc>Nr Abscences</a></div>";
echo "<div style='float:left; width: 180px;'><a href=classes.php?sort=nr_students-asc>Nr Students</a></div><br><br>";
} else {
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=class-desc>Class</a></div>";
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=avg_grades-desc>General</a></div>";
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=absente-desc>Nr Abscences</a></div>";
echo "<div style='float:left; width: 180px;'><a href=classes.php?sort=nr_students-desc>Nr Students</a></div><br><br>";
$item = 'avg_grades';
}
}
Or you could do it a bit shorter by applying the $ordine
variable in your a
tag href
:
if (isset($_GET['sort'])) {
$item = $_GET['sort'];
$sort = explode('-', $item);
$crit = $sort[0];
$ordine = $sort[1] === 'desc' ? 'asc' : 'desc';
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=class-$ordine>Class</a></div>";
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=avg_grades-$ordine>General</a></div>";
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=absente-$ordine>Nr Abscences</a></div>";
echo "<div style='float:left; width: 180px;'><a href=classes.php?sort=nr_students-$ordine>Nr Students</a></div><br><br>";
}
Try this code snippet , i have removed the code duplication :
if (isset($_GET['sort'])) {
$item = $_GET['sort'];
$submitted_direction_exploded = explode('-',$item);
$submitted_direction = isset($submitted_direction_exploded[1]) ? $submitted_direction_exploded[1] : '';
$direction = ($direction=='desc')?'asc' : $submitted_direction;
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=class-$direction>Class</a></div>";
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=avg_grades-$direction>General</a></div>";
echo "<div style='float:left; width: 150px;'><a href=classes.php?sort=abscences-$direction>Nr Abscences</a></div>";
echo "<div style='float:left;width: 180px;'><a href=classes.php?sort=nr_students-$direction>Nr Students</a></div><br><br>";
}