Hello,
ik heb een vraag, ik heb in mijn database 2 tabellen;
1 voor artikelen
1 voor columns
in de tabel is een veld aangemaakt die bijhoudt hoeveel keer het artikel is bekeken.
Het is nu de bedoeling om die 2 tabellen samen te voegen en daarvan de top 5 van de meest bekeken artikelen te laten zien(van columns en artikelen)
om dit te doen heb ik eerst columns en daarna artikelen uitgelezen en daarvan alle waardes in een array gezet met de volgende waarde per keer:"aantal keer bekeken, het id nr, veld naam, tabel naam".
daarna heb ik de array gesorteerd met een gemaakte natsort() functie
rnatsort()
<?PHP
function rnatsort($a){
natsort($a);
$a = array_reverse($a, true);
}
?>
daarna ben ik alles gaan uitdraaien zoals je hieronder verder kunt zien.
mijn vraag/probleem is:
als ik net na de functie rnatsort() een foreach van de array doe, dan zie ik dat de hoogst aantal bekeken boven aan staat.
maar zodra het allemaal door de for lus gaat dan sorteerd hij ineens heel anders en pakt hij eerst de hoogste van artikelen en daarna die van columns wat niet zou moeten.
<?PHP
$most_read = array();
//alles selecteren uit de db artikelen
$q = "SELECT * FROM artikelen ORDER BY artikelen_bekeken DESC";
$r = mysql_query($q);
while($artikelen = mysql_fetch_object($r)){
$most_read[] = $artikelen->artikelen_bekeken." ".$artikelen->artikelen_id." artikelen_id artikelen";
}
unset($q);
unset($r);
//alles selecteren uit de db collumns
$q = "SELECT * FROM collumns ORDER BY column_bekeken DESC";
$r = mysql_query($q);
while($column = mysql_fetch_object($r)){
$most_view[] = $column->column_bekeken." ".$column->column_id." column_id collumns";
}
unset($q);
unset($r);
//sorteren van de array op datum
rnatsort($most_read);
//beginnen met de lus te maken
for($i=0; $i<5; $i++){
//de variabelen aanmaken zodat ze erlke keer op NULL staan
$tmp_array = array();
$item = "";
$q = "";
$r = "";
$qq = "";
$rr = "";
//alles voor de zekerheid unsetten zodat het echt leeg is!
unset($tmp_array);
unset($item);
unset($q);
unset($r);
unset($qq);
unset($rr);
//1 record uit de array $most_read naar 1 array gooien
$tmp_array = explode(" ", $most_read[$i]);
//beginnen met de opdracht voor de database
$q = "SELECT * FROM ".$tmp_array[3]." WHERE ".$tmp_array[2]." = ".$tmp_array[1];
$r = mysql_query($q) or die(mysql_error());
$item = mysql_fetch_object($r);
//if else lus maken voor de columns en de artikelen
if($tmp_array[3] == "collumns"){
echo "<div class=\"last_article_view_teller\">".$teller.".</div>";
echo "<div class=\"last_article_view\">";
echo "<a href=\"?page=column&columnid=".$item->column_id."\">".substr($item->column_titel, 0, 15)."...</div>\n";
echo "<div class=\"spacer\"></a></div>\n";
}
else{
echo "<div class=\"last_article_view_teller\">".$teller.".</div>";
echo "<div class=\"last_article_view\">";
echo "<a href=\"?page=artikelen&artid=".$item->artikelen_id."\">".substr($item->artikelen_titel, 0, 15)."...</div>\n";
echo "<div class=\"spacer\"></a></div>\n";
}
}
?>
1.292 views