[php][mysql]sorteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hallo,

Ik wil het volgende creeeren ,

Naam Jan Feb Maart Apr Mei Jun en zo verder
Pietje 0 110 11 250 0 0

nu haal ik die waardes op uit de db maar ik krijg dan zeg maar 6x pietje(voor iedere maand 1)

hoe krijg ik dat weer dat er maar 1 pietje staat en dat ie dan de rest van de waardes in de maanden vult ? Nu heb ik het met een while loopje gedaan maar dan krijg ik :

Naam Jan Feb Maart Apr
Pietje 0
Pietje 110
Pietje 11
Pietje 250
Klaasje 0
Klaasje 1
Klaasje 11
Klaasje 240

wie kan me hier de schop in de goede richting geven.

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

Voor maar één keer pietje:
distinct (staat ook in de faq dacht ik)

edit:

Rest van je vraag snap ik dus echt niet ...

[ Voor 57% gewijzigd door blizt op 30-04-2004 09:15 . Reden: typo's, link naar faq toegevoegd ]

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • TG
  • Registratie: Juli 2001
  • Laatst online: 30-10-2024

TG

select * from table where veld=zoekwaarde group by naam?

Acties:
  • 0 Henk 'm!

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Om alleen unieke waardes terug te krijgen kent sql het distinct commando :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

blizt schreef op 30 april 2004 @ 09:12:
Voor maar één keer pietje:
distinct (staat oko in de faq dacht ik)
Klopt, maar zijn eigenlijke probleem zit hem meer in het genereren van een kruistabel, denk ik :P
Ik gok dat je eigenlijk primair moet sorteren op naam, secundair op maandID en vervolgens moet je in PHP dit dan netjes gaan uitsplitsen.

Alleen een distinct gaat hier niet helpen; sterker nog, distinct zal in dit geval denk ik niets uitmaken..

Je moet zorgen dat je recordset teruggeeft:

Naam MaandID Waarde
test 1 0
test 2 2
test 3 4
test 4 6
test2 1 4
test2 2 4
test2 3 5
test2 4 3

In PHP ga je dit dan uitsplitsen en vergelijken; bijvoobeeld als maandID = 4, zet dan <tr></tr> neer.

[ Voor 42% gewijzigd door gorgi_19 op 30-04-2004 09:20 ]

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

gorgi_19 schreef op 30 april 2004 @ 09:14:
[...]

Klopt, maar zijn eigenlijke probleem zit hem meer in het genereren van een kruistabel, denk ik :P
Natuurlijk klopt 't, dat is altijd zo als ik wat zeg :Y)
Maar dan mag de TS wel wat duidelijker zijn vind ik ...

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:45
gorgi_19 schreef op 30 april 2004 @ 09:14:
[...]

Klopt, maar zijn eigenlijke probleem zit hem meer in het genereren van een kruistabel, denk ik :P
Ik gok dat je eigenlijk primair moet sorteren op naam, secundair op maandID en vervolgens moet je in PHP dit dan netjes gaan uitsplitsen.

Alleen een distinct gaat hier niet helpen; sterker nog, distinct zal in dit geval denk ik niets uitmaken..

Je moet zorgen dat je recordset teruggeeft:

Naam MaandID Waarde
test 1 0
test 2 2
test 3 4
test 4 6
test2 1 4
test2 2 4
test2 3 5
test2 4 3

In PHP ga je dit dan uitsplitsen en vergelijken; bijvoobeeld als maandID = 4, zet dan <tr></tr> neer.
Groepsverandering met meerdere niveau's. \o/

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
fetch_row();
OldNaam = row["naam"];
OldMaandId = row["maandid"];
while ( !eof )
{
     print_naam();
     while( OldNaam == row["naam"]  && !eof)
     {
          print_maand();
          while( OldNaam == row["naam"] && OldMaandId == row["maandid"] && !eof )
         {
               print_iets_anders_of_maak_totalen_oid();
               fetch_row();
               OldNaam = row["naam"]
               OldMaandId = row["maandId"];
         }
     }
}

[ Voor 6% gewijzigd door whoami op 30-04-2004 09:47 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb onderstaande in me bestaande while loop gezet maar dan print helemaal niets meer.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
while ( !eof )
            {
             print ("$Voornaam $Tussenvoegsels $Achternaam");
                while( $OldNaam == $row2["Voornaam"]  && !eof)
                    {
                      print_maand();
                        while( $OldNaam == $row2["Voornaam"] && $OldMaandId == $row2["M"] && !eof )
                            {
                            print ("$Tot");
                            $OldNaam = $row2["Voornaam"];
                            $OldMaandId = $row2["M"];
                            }
                    }
            }

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 14:45
Euh, mijn voorbeeldje was gewoon 'pseudo-code' he....

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ok ben nu verder gekomen het is me gelukt maar nu heb ik nog 1 uitdaging , het komt bijv voor dat iemand in 1 maand niks doet. in onderstaande script schijft zeg maar alles dan. Dus als iemand in maand 1 2 3 5 werkt dan komt maand 5 in de rij van maand 4 te staan.
Heeft iemand een idee hoe ik er voor zorg dat er dan bij maand 4 een nul komt te staan ? De maanden waar niks in gedaan word staan niet in de array, alleen de maanden waarin gewerkt word staan in de db.

code:
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
while ($row2 = mysql_fetch_array($totaal2))
        {
        $teller++;
          if( $Vorigenaam != $row2["ThuiswerkerID"] ) 
          {
            $id=$row2["id"];
            $ThuiswerkID=$row2["ThuiswerkID"];
            $ThuiswerkerID=$row2["ThuiswerkerID"];
            $Jaar2=$row2["Y"];
            $Day=$row2["D"];
            $Birthdate=$row2["Birthdate"];
            $Voornaam=$row2["Voornaam"];
            $Tussenvoegsels=$row2["Tussenvoegsels"];
            $Achternaam=$row2["Achternaam"];

            $AllTotaal += $Tot;
            $Ordertotaal = ($Terug * $Stukprijs);
            $Vorigenaam = $row2["ThuiswerkerID"]; 

        //De kleuren bepalen van de rijen
        $i++;
        $bgcolor          = ($i % 2) ? $row_color1 : $row_color2;
        //End kleuren
        $Leftijd = Lftijd($ThuiswerkerID);
        print ("</tr>");
        print ("<tr height='22' bgcolor='$bgcolor'>");
        print ("<td>$Voornaam $Tussenvoegsels $Achternaam</td>");
        }
        $Tot=$row2["Tot"];
        $Tot = number_format($Tot, 2, ',', '' );
        $Maand2=$row2["M"];
        print ("<td>$Tot</td>");
        }

Acties:
  • 0 Henk 'm!

  • gorgi_19
  • Registratie: Mei 2002
  • Laatst online: 20-09 08:50

gorgi_19

Kruimeltjes zijn weer op :9

Zelf ook een tellertje bij houden en kijken of maandid overeenkomt met het telletje?

Digitaal onderwijsmateriaal, leermateriaal voor hbo


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat had ik geprobeerd maar dan loop ik tegen het probleem aan dat die waarde overgeslagen word, en de rest van de waardes ingevuld worden, dus de maand die nul moet zijn word nul maar wat dan in maand 5 moet staan dat word niet meer geprint.
Pagina: 1