È necessario apportare modifiche al codice per list.php in base all'input ottenuto tramite il parametro GET. qualcosa come:
if ($_GET['id'] == 'FREE'){
// do something like display FREE items
}
elseif($_GET['id'] == 'GIFT') {
// display GIFT items
}
else {
// perform some default action
}
Questo per renderlo ancora più guidato dal database (utile quando ci sono molte categorie):
$sql = "select * from categories where id = '".$_GET['id']."'";
if (mysql_results($sql)){
// do something
}
else {
// show error
}
Nota che questo è solo per demo e nel tuo codice dovresti usare PDO/MySQLI e istruzioni preparate e non la funzione mysql_results.
Alla luce di ulteriori informazioni fornite da OP:Cambia questo
$articles = $article->fetch_all();
a
$articles = $article->fetch_data($_GET['id']);
in list.php e verifica se ottieni risultati corretti.