kolommen sorteren via php (tabellen)
ik heb 3 kollommen die alfab. worden gevuld door de database met artiesten. Alles gaat goed alleen met het afronden gaat het fout want bij de eerste twee kollommen geen problemen maar als de waarde num_rows9 = bijv. 10, 13, 16, 19 etc etc dan begint de derde kolom met de zelfde waarde als de laatste waarde van de 2 de kolom..? vreemd
Hopelijk kan iemand mij vertellen hoe je dit moet ondervangen.
Alvast thanx
Jan
Note je kunt het live beeld zien op: http://www.gitaartabs.nl/index.php?page=artiestenoverzicht&id=v (afhankelijk van of er nog artiesten zijn bijgevoegd ;/)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
<?php
$sql9="SELECT artiest_id FROM artiest WHERE artiestnaam >= '$id1' AND artiestnaam < '$id2' ";
$mysql_result9=mysql_query($sql9,$connection);
$num_rows9=mysql_num_rows($mysql_result9);
$start_at_b = ceil( $num_rows9/3) ;
$start_at_c = ceil(($num_rows9/3) + ($num_rows9/3)) ;
$per_kolom_a = ceil($num_rows9 / 3);
$per_kolom_b = ceil($num_rows9 / 3);
$per_kolom_c = ceil($num_rows9 / 3);
//Haal alle gegevens op.
$sql="SELECT artiest_id,artiestnaam FROM artiest WHERE artiestnaam >= '$id1' AND artiestnaam < '$id2' ORDER BY artiestnaam ASC LIMIT 0, $per_kolom_a";
$mysql_result=mysql_query($sql,$connection);
$num_rows=mysql_num_rows($mysql_result);
//Haal alle gegevens op.
$sql2="SELECT artiest_id,artiestnaam FROM artiest WHERE artiestnaam >= '$id1' AND artiestnaam < '$id2' ORDER BY artiestnaam ASC LIMIT $start_at_b, $per_kolom_b";
$mysql_result2=mysql_query($sql2,$connection);
$num_rows2=mysql_num_rows($mysql_result2);
//Haal alle gegevens op.
$sql3="SELECT artiest_id,artiestnaam FROM artiest WHERE artiestnaam >= '$id1' AND artiestnaam < '$id2' ORDER BY artiestnaam ASC LIMIT $start_at_c, $per_kolom_c";
$mysql_result3=mysql_query($sql3,$connection);
$num_rows3=mysql_num_rows($mysql_result3);
echo "<table class=\"tabel\" >";
// alle rijen een voor een aflopen....
for ($n = 0; $n < $num_rows3; $n++)
{
$artiestnaam = mysql_result($mysql_result3,$n,'artiestnaam');
$artiest_id = mysql_result($mysql_result3,$n,'artiest_id');
//Hoeveel songs staan er onder deze artiest?
$sql8= "SELECT song_id FROM song WHERE artiest_id=$artiest_id";
$song_id = mysql_query($sql8,$connection);
$row8=mysql_num_rows($song_id);
$artiestnaam = "$artiestnaam";
$artiestnaam2 = str_replace(" ", "-", $artiestnaam);
echo "<tr><td><a href=index.php?page=artiestenoverzicht&id=$id&artiestnaam=".$artiestnaam2.">".$artiestnaam."</a> (".$row8.")";
if ($_SESSION['logon']=="1") { echo "<a href=verwijderartiest.php?id=".$artiest_id." onclick=\"return delConfirm(this.href);\">del</a></td>";}
echo "</tr>";
}
print "</table>";
?>
$sql9="SELECT artiest_id FROM artiest WHERE artiestnaam >= '$id1' AND artiestnaam < '$id2' ";
$mysql_result9=mysql_query($sql9,$connection);
$num_rows9=mysql_num_rows($mysql_result9);
$start_at_b = ceil( $num_rows9/3) ;
$start_at_c = ceil(($num_rows9/3) + ($num_rows9/3)) ;
$per_kolom_a = ceil($num_rows9 / 3);
$per_kolom_b = ceil($num_rows9 / 3);
$per_kolom_c = ceil($num_rows9 / 3);
//Haal alle gegevens op.
$sql="SELECT artiest_id,artiestnaam FROM artiest WHERE artiestnaam >= '$id1' AND artiestnaam < '$id2' ORDER BY artiestnaam ASC LIMIT 0, $per_kolom_a";
$mysql_result=mysql_query($sql,$connection);
$num_rows=mysql_num_rows($mysql_result);
//Haal alle gegevens op.
$sql2="SELECT artiest_id,artiestnaam FROM artiest WHERE artiestnaam >= '$id1' AND artiestnaam < '$id2' ORDER BY artiestnaam ASC LIMIT $start_at_b, $per_kolom_b";
$mysql_result2=mysql_query($sql2,$connection);
$num_rows2=mysql_num_rows($mysql_result2);
//Haal alle gegevens op.
$sql3="SELECT artiest_id,artiestnaam FROM artiest WHERE artiestnaam >= '$id1' AND artiestnaam < '$id2' ORDER BY artiestnaam ASC LIMIT $start_at_c, $per_kolom_c";
$mysql_result3=mysql_query($sql3,$connection);
$num_rows3=mysql_num_rows($mysql_result3);
echo "<table class=\"tabel\" >";
// alle rijen een voor een aflopen....
for ($n = 0; $n < $num_rows3; $n++)
{
$artiestnaam = mysql_result($mysql_result3,$n,'artiestnaam');
$artiest_id = mysql_result($mysql_result3,$n,'artiest_id');
//Hoeveel songs staan er onder deze artiest?
$sql8= "SELECT song_id FROM song WHERE artiest_id=$artiest_id";
$song_id = mysql_query($sql8,$connection);
$row8=mysql_num_rows($song_id);
$artiestnaam = "$artiestnaam";
$artiestnaam2 = str_replace(" ", "-", $artiestnaam);
echo "<tr><td><a href=index.php?page=artiestenoverzicht&id=$id&artiestnaam=".$artiestnaam2.">".$artiestnaam."</a> (".$row8.")";
if ($_SESSION['logon']=="1") { echo "<a href=verwijderartiest.php?id=".$artiest_id." onclick=\"return delConfirm(this.href);\">del</a></td>";}
echo "</tr>";
}
print "</table>";
?>
Maargoed.
Het heeft te maken met je LIMIT-waarden die je hier berekent:
Code (php)
Ik vind dit wel een knap staaltje rekenwerk, maar ik denk dat het niet goed genoeg doordacht is.
in geval van 9 resultaten en 3 kolomen zou dit de LIMIT-waarden moeten zijn voor de drie queries:
LIMIT 0,3
LIMIT 3,3
LIMIT 6,3
Bij 8 resultaten:
LIMIT 0,3
LIMIT 3,3
LIMIT 6,2 (hoewel 6,3 ook wel goed zal gaan)
Maar wat bij 10 resultaten?
LIMIT 0,4
LIMIT 4,4
LIMIT 8,2
of
LIMIT 0,4
LIMIT 4,3
LIMIT 7,3
?
Maar de kneep zit em in de beginwaarde, die moet je niet naar boven afronden, omdat de eerste waarde al door 0 wordt opgehaald.
mmm, ik snap de bedoeling maar doe kunnen we zoiets dan wel (evt op een makkelijke) manier oplossen.. Want zou ik dan ipv ceil floor moeten gebruiken of...?