kolommen sorteren via php (tabellen)

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Jan heide

jan heide

28/09/2007 20:56:00
Quote Anchor link
een vraagje,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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&amp;id=$id&amp;artiestnaam=".$artiestnaam2.">".$artiestnaam."</a>&nbsp;&nbsp;(".$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>";
        ?>
 
PHP hulp

PHP hulp

25/04/2024 14:29:53
 
Josh

Josh

28/09/2007 22:10:00
Quote Anchor link
Volgens mij moet dit goed met één query te doen zijn, waar je er nu vier gebruikt.

Maargoed.
Het heeft te maken met je LIMIT-waarden die je hier berekent:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
        $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);

        ?>

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.
 
Jan heide

jan heide

29/09/2007 12:51:00
Quote Anchor link
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...?
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.