Eerste letter uit gebruiker halen
Ik heb in mijn database een tabel met users staan. Deze klopt helemaal.
Nu wil ik in mijn staff.php pagina het volgende:
Als een gebruiker, genaamd Aart op de Staff pagina komt, moet hij te zien krijgen wie zijn moderator is.
Ventheman | Letters ABC
Dus zou Aart moeten zien: Ventheman is jou moderator.
Ik heb dit al:
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
50
51
52
53
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
50
51
52
53
<?php
require "include/instelling.php";
dbconn();
$rest = substr ("abcdefghijklmnopqrstuvwxyz", 0, 1); // geeft "a"
$rest = substr ("bcdefghijklmnopqrstuvwxyz", 0, 1); // geeft "b"
$rest = substr ("cdefghijklmnopqrstuvwxyz", 0, 1); // geeft "c"
$rest = substr ("defghijklmnopqrstuvwxyz", 0, 1); // geeft "d"
$rest = substr ("efghijklmnopqrstuvwxyz", 0, 1); // geeft "e"
$rest = substr ("fghijklmnopqrstuvwxyz", 0, 1); // geeft "f"
$rest = substr ("ghijklmnopqrstuvwxyz", 0, 1); // geeft "g"
$rest = substr ("hijklmnopqrstuvwxyz", 0, 1); // geeft "h"
$rest = substr ("ijklmnopqrstuvwxyz", 0, 1); // geeft "i"
$rest = substr ("jklmnopqrstuvwxyz", 0, 1); // geeft "j"
$rest = substr ("klmnopqrstuvwxyz", 0, 1); // geeft "k"
$rest = substr ("lmnopqrstuvwxyz", 0, 1); // geeft "l"
$rest = substr ("mnopqrstuvwxyz", 0, 1); // geeft "m"
$rest = substr ("nopqrstuvwxyz", 0, 1); // geeft "n"
$rest = substr ("opqrstuvwxyz", 0, 1); // geeft "o"
$rest = substr ("pqrstuvwxyz", 0, 1); // geeft "p"
$rest = substr ("qrstuvwxyz", 0, 1); // geeft "q"
$rest = substr ("rstuvwxyz", 0, 1); // geeft "r"
$rest = substr ("stuvwxyz", 0, 1); // geeft "s"
$rest = substr ("tuvwxyz", 0, 1); // geeft "t"
$rest = substr ("uvwxyz", 0, 1); // geeft "u"
$rest = substr ("vwxyz", 0, 1); // geeft "v"
$rest = substr ("wxyz", 0, 1); // geeft "w"
$rest = substr ("xyz", 0, 1); // geeft "x"
$rest = substr ("yz", 0, 1); // geeft "y"
$rest = substr ("z", 0, 1); // geeft "z"
$rest = substr ("0123456789", 0, 1); // geeft "0"
$rest = substr ("123456789", 0, 1); // geeft "1"
$rest = substr ("23456789", 0, 1); // geeft "2"
$rest = substr ("3456789", 0, 1); // geeft "3"
$rest = substr ("456789", 0, 1); // geeft "4"
$rest = substr ("56789", 0, 1); // geeft "5"
$rest = substr ("6789", 0, 1); // geeft "6"
$rest = substr ("789", 0, 1); // geeft "7"
$rest = substr ("89", 0, 1); // geeft "8"
$rest = substr ("9", 0, 1); // geeft "9"
$whome = substr($CURUSER['username'], xxxxxx);[/code]
Nu is mijn vraag:
Welke code moet ik gebruiken om hiermee verder te gaan, dus wil ik de begin letter van Aart (A) hebben. Van daaruit kan ik weer verder werken.
Hopelijk is het duidelijk en alvast bedankt.
Mvg,
Ventheman
require "include/instelling.php";
dbconn();
$rest = substr ("abcdefghijklmnopqrstuvwxyz", 0, 1); // geeft "a"
$rest = substr ("bcdefghijklmnopqrstuvwxyz", 0, 1); // geeft "b"
$rest = substr ("cdefghijklmnopqrstuvwxyz", 0, 1); // geeft "c"
$rest = substr ("defghijklmnopqrstuvwxyz", 0, 1); // geeft "d"
$rest = substr ("efghijklmnopqrstuvwxyz", 0, 1); // geeft "e"
$rest = substr ("fghijklmnopqrstuvwxyz", 0, 1); // geeft "f"
$rest = substr ("ghijklmnopqrstuvwxyz", 0, 1); // geeft "g"
$rest = substr ("hijklmnopqrstuvwxyz", 0, 1); // geeft "h"
$rest = substr ("ijklmnopqrstuvwxyz", 0, 1); // geeft "i"
$rest = substr ("jklmnopqrstuvwxyz", 0, 1); // geeft "j"
$rest = substr ("klmnopqrstuvwxyz", 0, 1); // geeft "k"
$rest = substr ("lmnopqrstuvwxyz", 0, 1); // geeft "l"
$rest = substr ("mnopqrstuvwxyz", 0, 1); // geeft "m"
$rest = substr ("nopqrstuvwxyz", 0, 1); // geeft "n"
$rest = substr ("opqrstuvwxyz", 0, 1); // geeft "o"
$rest = substr ("pqrstuvwxyz", 0, 1); // geeft "p"
$rest = substr ("qrstuvwxyz", 0, 1); // geeft "q"
$rest = substr ("rstuvwxyz", 0, 1); // geeft "r"
$rest = substr ("stuvwxyz", 0, 1); // geeft "s"
$rest = substr ("tuvwxyz", 0, 1); // geeft "t"
$rest = substr ("uvwxyz", 0, 1); // geeft "u"
$rest = substr ("vwxyz", 0, 1); // geeft "v"
$rest = substr ("wxyz", 0, 1); // geeft "w"
$rest = substr ("xyz", 0, 1); // geeft "x"
$rest = substr ("yz", 0, 1); // geeft "y"
$rest = substr ("z", 0, 1); // geeft "z"
$rest = substr ("0123456789", 0, 1); // geeft "0"
$rest = substr ("123456789", 0, 1); // geeft "1"
$rest = substr ("23456789", 0, 1); // geeft "2"
$rest = substr ("3456789", 0, 1); // geeft "3"
$rest = substr ("456789", 0, 1); // geeft "4"
$rest = substr ("56789", 0, 1); // geeft "5"
$rest = substr ("6789", 0, 1); // geeft "6"
$rest = substr ("789", 0, 1); // geeft "7"
$rest = substr ("89", 0, 1); // geeft "8"
$rest = substr ("9", 0, 1); // geeft "9"
$whome = substr($CURUSER['username'], xxxxxx);[/code]
Nu is mijn vraag:
Welke code moet ik gebruiken om hiermee verder te gaan, dus wil ik de begin letter van Aart (A) hebben. Van daaruit kan ik weer verder werken.
Hopelijk is het duidelijk en alvast bedankt.
Mvg,
Ventheman
kun je het nog eens uitleggen?
Nu wil ik een code om de eerste letter van 'Aart' eruit te plukken. Daarna kan ik verder werken, zodat ik kan laten zien aan gebruiker Aart wie zijn moderator is.
Dus: Aart zijn naam begint met een A
Ventheman is moderator met gebruikersnamen die beginnen met de letters A.
Dan moet er komen te staan:
Hallo Aart, jou moderator is Ventheman.
edit: stel dat dat veld gebruikers_beginletter zou heten, dan zou het met deze query kunnen namelijk:
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
SELECT something FROM somethingelse WHERE beginletterModerator = LOWER(SUBSTRING(naam, 0, 1))
Dan lock je jezelf weer in, LEFT is MySQL-only voor zover ik weet. SUBSTRING bestaat ook in PostgreSQL (etc), ook met een SUBSTR variant.
Ventheman | Letters ABC
géén goed datamodel, maar het zou dus zoiets moeten worden als:
PHPerik:
@Jan
Dan lock je jezelf weer in, LEFT is MySQL-only voor zover ik weet. SUBSTRING bestaat ook in PostgreSQL (etc), ook met een SUBSTR variant.
Dan lock je jezelf weer in, LEFT is MySQL-only voor zover ik weet. SUBSTRING bestaat ook in PostgreSQL (etc), ook met een SUBSTR variant.
Okee, dan lijkt een combinatie van onze voorstellen mij hier de aangewezen oplossing :-)
Ohh, ik had niet begrepen dat dát een datamodel was. Ik dacht dat het was hoe hij het wilde gaan weergeven. Maar met al deze functies kan hij vast wel verder.
Jan:
Okee, dan lijkt een combinatie van onze voorstellen mij hier de aangewezen oplossing :-)
PHPerik:
@Jan
Dan lock je jezelf weer in, LEFT is MySQL-only voor zover ik weet. SUBSTRING bestaat ook in PostgreSQL (etc), ook met een SUBSTR variant.
Dan lock je jezelf weer in, LEFT is MySQL-only voor zover ik weet. SUBSTRING bestaat ook in PostgreSQL (etc), ook met een SUBSTR variant.
Okee, dan lijkt een combinatie van onze voorstellen mij hier de aangewezen oplossing :-)
Inderdaad.
Code (php)
1
2
3
4
5
2
3
4
5
SELECT naam
FROM moderators
WHERE LOWER(gebruikers_beginletter)
LIKE CONCAT('%',LOWER(SUBSTRING(gebruiker, 0, 1)),'%')
LIMIT 1
FROM moderators
WHERE LOWER(gebruikers_beginletter)
LIKE CONCAT('%',LOWER(SUBSTRING(gebruiker, 0, 1)),'%')
LIMIT 1
Gewijzigd op 01/01/1970 01:00:00 door Jan Koehoorn
Maar, in mijn optiek moet 'ie zo:
Net net even getest en in MySQL is LIKE case-insensitive, dus voor MySQL zouden die LOWER's wegkunnen. Hoe dat voor PostgreSQL is, weet ik niet.
Nou, wie is er zo lief een link naar normaliseren te zoeken?
(PostgreSQL is case-sensitive, de rest ook)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--
-- Tabel structuur voor tabel `mod_per_letter`
--
CREATE TABLE `mod_per_letter` (
`letter` char(1) NOT NULL default '',
`mod_name` varchar(100) NOT NULL default '',
`mod_id` int(5) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Gegevens worden uitgevoerd voor tabel `mod_per_letter`
--
INSERT INTO `mod_per_letter` VALUES ('A', 'Kimmetje', 1305);
-- Tabel structuur voor tabel `mod_per_letter`
--
CREATE TABLE `mod_per_letter` (
`letter` char(1) NOT NULL default '',
`mod_name` varchar(100) NOT NULL default '',
`mod_id` int(5) default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
--
-- Gegevens worden uitgevoerd voor tabel `mod_per_letter`
--
INSERT INTO `mod_per_letter` VALUES ('A', 'Kimmetje', 1305);
Nu heb ik staff.php, maar hoe insert ik dat daar?
Jan:
Dat hangt van je collation af. Als je bijvoorbeeld latin1_general_ci hebt, dan is je tabel (of veld) case-insensitive. Heb je daarentegen latin1_general_cs, dan is 'ie wél case-sensitive.Net net even getest en in MySQL is LIKE case-insensitive
@ Willem_vp: dankje! Ik mag dus aannemen dat de meeste hosts hun collation op latin1_general_ci hebben staan?
Ik heb nu een field genaamd 'mod' in de tabel 'users' gezet. Ik zal straks even zeggen als het gelukt is.
het is alleen een beetje doelloos om een string indezelfde string op te slaan zonder veranderenen :P
Quote:
$username = $username;