[PHP][MySQL] Selecteren en verdelen in groepen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi, ik heb een tabel in mijn database staan met namen erin van mensen
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
.
     +-----+----------------------+
     | id  | naam                 |
     +-----+----------------------+
     |  1  | Amber                |
     |  2  | Angela               |
     |  3  | Bernice              |
     |  4  | Bart                 |
     |  5  | Carlos               |
     |  6  | Cindy                |    
     |  7  | Dennis               |
     |  8  | Dirk                 |
     +-----+----------------------+
.

Normaal gebruik ik dan een php/mysql code zoals deze:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
require_once('verbinding.php');

mysql_select_db($database_WielTotWiel, $verbinding);
$query_pagina   = "SELECT * FROM mijn_tabel";
$pagina         = mysql_query($query_pagina, $verbinding) or die(mysql_error());
$rij_pagina     = mysql_fetch_assoc($pagina);
$totaal_rijen   = mysql_num_rows($pagina);

    do

    {
        echo $rij_pagina['voornaam']."<br>";
    } 
    
    while ($rij_pagina = mysql_fetch_assoc($pagina)) 

mysql_free_result($pagina);


Zodat ik een lijst met de namen krijg van iedereen, dit ziet er zo uit

Namen:
Amber
Angela
Bernice
Bart
Carlos
Cindy
Dennis
Dirk


Ik wil liever dat de namen in groepen worden verdeeld, bijvoorbeeld op A,B,C,D,etc.

Namen:
Namen beginnend met een A:
--------------------------
Amber
Angela

Namen beginnend met een B:
--------------------------
Bernice
Bart

Namen beginnend met een C:
--------------------------
Carlos
Cindy

Namen beginnend met een D:
-----------------------------
Dennis
Dirk


Dit laatste resultaat wil ik dus bereiken, ik heb op google en hier gezocht maar ik kon helaas niets vinden waarmee ik verder kan.

Hoe kan ik nu alle rijen aanroepen en groeperen op een bepaalde kollom?

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Je moet het verschil tussen groeperen op SQL niveau (GROUP BY) en groeperen via code uit elkaar halen. De SQL functie is namelijk hier niet voor bedoeld. Wat jij wilt is puur cosmetisch. Wat je kan doen is gewoon gebruik maken van substring en dan vergelijken of er een ander is ;) Met een extra Check voeg je dan het stuk tekst "Namen beginnede met..." toe.

[ Voor 3% gewijzigd door ripexx op 24-11-2004 22:22 . Reden: nieuw tobo sucks :r ]

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Je zal hiermee met PHP zelf aan de slag moeten, door een variabele bij te houden die de eerste letter van elke naam controleert. Mogelijk heb je wat aan onderstaande query daarbij, hoef je PHP er niet lastig voor te vallen. :P
SQL:
1
2
3
SELECT *, LCASE(SUBSTR(naam, 1, 1)) AS letter
FROM mensen
ORDER BY naam

[ Voor 3% gewijzigd door NMe op 24-11-2004 22:48 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op woensdag 24 november 2004 @ 22:17:
Hoi, ik heb een tabel in mijn database staan met namen erin van mensen
Zoiets doe je even in PHP (niet getest):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
    $lastchar='';
    do

    {
        $char=strtoupper($rij_pagina['voornaam'][0]);
        if ($lastchar != $char) {
            echo "Namen beginnend met $char<br>\n";
        }
        echo $rij_pagina['voornaam']."<br>";
        $lastchar=$char;
    } 
    
    while ($rij_pagina = mysql_fetch_assoc($pagina))


Simpel toch?
Hoop ik...

(wel even sorteren in SQL met 'order by voornaam')

[ Voor 12% gewijzigd door Verwijderd op 24-11-2004 22:32 ]