Toon posts:

Ledenlijst maken, profielen staan in database

Pagina: 1
Acties:
  • 294 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik zit met een probleem.

voor een website ben ik bezig met een profielenpagina. dit alles werkt goed, maar ik kom niet echt verder.

Nu heb ik nog een .htm bestand met alle links naar de profielen. bijv.:
<a href="www.domein.nl/profielen/profiel_id.php?id=1">Profiel 1</a>
<a href="www.domein.nl/profielen/profiel_id.php?id=2">Profiel 2</a>
enz...

dit is natuurlijk veel te veel werk.

nu wilde ik een pagina maken die alle gebruikers uit de database haalt en die in een pagina met tabellen gooit, zodat je de namen die beginnen met een "A" onder de A komen te staan en ga zo maar door.

Op de pagina die ik nu heb moet ik alles zelf doen, maar heb ik wel bovenin de pagina een rij met alle letters van het alfabet staan en als je op bijv. de "C" klikt, hij gelijk door scrollt naar de lijst die met de "C" begint.

wie kan me helpen met een script wat de users uit de database haalt en ze mooi op alfabetische volgorde gooit, incl de link zoals ik ze nu in mijn .htm bestand heb staan?

alvast bedankt

Gr.

Ronald Wilting

[ Voor 6% gewijzigd door Verwijderd op 09-05-2006 23:13 ]


Verwijderd

Ik denk dat je je eens moet gaan verdiepen in MySQL in combinatie met php of iets dergelijks.Ik denk trouwens dat dit beter in webdesign past, not sure. Heb je al eens de GoT search gebruikt. Je zal wel een beetje moeten kunnen scripten, alhoewel het waarschijnlijk niet dodelijk lastig wordt.

Welkom op GoT :)

[ Voor 4% gewijzigd door Verwijderd op 09-05-2006 23:16 ]


Verwijderd

Topicstarter
Scripten kan ik wel een beetje, en zelf denk ik dat het beter bij het programmeren past, maar dat is even niet ter zake.

ik ga even zoeken.

tnx

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Je zal simpelweg alle profielen op moeten halen, eventueel met een LIMIT in je SQL statement. Vervolgens ga je in PHP kijken naar het eerste karakter van de profielnaam, en op basis daarvan kun je de namen verdelen onder de kopjes waar ze thuishoren.

'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.


Verwijderd

Topicstarter
en hoe verdeel je die dan?

bijv.: eerste letter is een "b"

hoe zet je die dan in de lijst waar de namen beginnen met de "b"?

moet je dan eerst een array maken?

  • Joshua
  • Registratie: Juli 2005
  • Laatst online: 19-01 20:46
Verwijderd schreef op dinsdag 09 mei 2006 @ 23:29:
en hoe verdeel je die dan?

bijv.: eerste letter is een "b"

hoe zet je die dan in de lijst waar de namen beginnen met de "b"?

moet je dan eerst een array maken?
code:
1
ORDER BY tablename DESC;

of
code:
1
ORDER BY tablename ASC;

[ Voor 5% gewijzigd door Joshua op 09-05-2006 23:34 ]


  • Rob
  • Registratie: Februari 2000
  • Niet online

Rob

De eerste letter telkens vergelijken met de eerste letter van de vorige. Als die anders is, dan zit je dus in een nieuwe rij

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...


Verwijderd

Topicstarter
oke in dit geval ORDER BY tablename ASC.

dan heb ik ze dus in een lijst van a tot z

maar dan moeten ze nog opgesplitst worden zodat ik 26 variabelen krijg van bijv. $a - $z.

en in $a komen dan de profielen die met een a beginnen.

hoe krijg ik dat voor elkaar?
kan iemand toevallig even iets in elkaar zetten voor me? ik ben nog geen pro in php en mysql zoals jullie al merken
Rob schreef op dinsdag 09 mei 2006 @ 23:34:
De eerste letter telkens vergelijken met de eerste letter van de vorige. Als die anders is, dan zit je dus in een nieuwe rij
oke, en hoe doe je dat?

[ Voor 25% gewijzigd door Verwijderd op 09-05-2006 23:36 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

Nee, je zal gewoon een loopje moeten maken waarin je checkt of de eerste letter gelijk is aan de eerste letter van de vorige profielnaam. Je zal daarvoor dus zo'n constructie moeten maken:
PHP:
1
2
3
4
5
6
7
8
9
$vorige = '';
while (...) { // loopconditie kun je zelf wel verzinnen ;)
  $huidige = substr($string, 0, 1);
  if ($vorige != $huidige) {
    echo '<h1>' . $huidige . '</h1>';
  }
  echo $profielnaam . '<br>';
  $vorige = $huidige;
}

Simpel gezegd: eerst zorg je dat de variabele voor de vorige letter een waarde heeft die de huidige waarde nooit aan kan nemen, zodat het eerste kopje afgedrukt wordt. Vervolgens check je òf de vorige en huidige eerste letter gelijk zijn, en als dat niet het geval is, dan drukt hij een kopje af. Vervolgens drukt hij ook nog de profielnaam af.

Het is verder aan jou om er nette code van te maken. :P
Verwijderd schreef op dinsdag 09 mei 2006 @ 23:36:
hoe krijg ik dat voor elkaar?
kan iemand toevallig even iets in elkaar zetten voor me? ik ben nog geen pro in php en mysql zoals jullie al merken
Nou heb ik dat hierboven wel gedaan, maar dat is dus niet de insteek van dit subforum. ;) We zijn zeker niet te beroerd om je te helpen, maar je moet zelf ook de wil tonen om iets te leren. In dit topic zijn aardig wat steekwoorden gevallen die je in elk geval zou kunnen opzoeken voordat je de handdoek in de ring gooit en vraagt of iemand anders niet wat in elkaar kan zetten. ;)

Zie daarvoor ook Programming FAQ - Scriptrequests. :)

[ Voor 31% gewijzigd door NMe op 09-05-2006 23:38 ]

'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.


  • lennartkocken
  • Registratie: September 2004
  • Laatst online: 14:45
@ -nme-:

waarom niet gewoon in de query:

WHERE `nickname` LIKE 'b%'

?

Verwijderd

Topicstarter
ik ga even kijken, morgen zal ik even posten of ik verder ben gekomen, dan zal ik ook mijn code even posten ;)

alvast heel erg bedankt

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 19-10-2025
lennartkocken schreef op dinsdag 09 mei 2006 @ 23:39:
@ -nme-:

waarom niet gewoon in de query:

WHERE `nickname` LIKE 'b%'

?
omdat je dan 26 queries moet doen, en like ook al niet de snelste is...

This message was sent on 100% recyclable electrons.


  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 04-01 15:49

JHS

Splitting the thaum.

lennartkocken: Omdat je dan 26 queries op de database gaat loslaten, wat niet echt performant zal zijn :) . Bij een grote hoeveelheid gebruikers zal dat met alle profielen op één pagina overigens sowieso al moeilijk zijn, dus zou ik (te zijner tijd) overgaan op paginering.

DM!


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 22-01 23:51

NMe

Quia Ego Sic Dico.

lennartkocken schreef op dinsdag 09 mei 2006 @ 23:39:
@ -nme-:

waarom niet gewoon in de query:

WHERE `nickname` LIKE 'b%'

?
Dat is handig als je één pagina wil hebben waarop alleen maar profielen staan die met een B beginnen. Naar wat ik begrijp moet er juist een overzichtspagina komen met alle profielen, waarbij elk profiel een eigen kopje krijgt. Wanneer je dat met je LIKE-query oplost, zul je een query moeten doen per mogelijke eerste letter.

Overigens werkt mijn "pseudocode" alleen wanneer de resultset gesorteerd is op naam, maar dat is (hoop ik) wel duidelijk. :)

'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.


Verwijderd

Topicstarter
-NMe- schreef op dinsdag 09 mei 2006 @ 23:42:
[...]

Dat is handig als je één pagina wil hebben waarop alleen maar profielen staan die met een B beginnen. Naar wat ik begrijp moet er juist een overzichtspagina komen met alle profielen, waarbij elk profiel een eigen kopje krijgt. Wanneer je dat met je LIKE-query oplost, zul je een query moeten doen per mogelijke eerste letter.
Het is al opgelost, ik heb gewoon verschillende pagina's aangemaakt ;)

  • Rob
  • Registratie: Februari 2000
  • Niet online

Rob

Verwijderd schreef op zondag 14 mei 2006 @ 11:07:
[...]


Het is al opgelost, ik heb gewoon verschillende pagina's aangemaakt ;)
En waar komen mensen onder te staan die Ëddie heten? ;)

In the beginning the Internet was a bunch of smart users with dumb terminals. Now...


Verwijderd

Topicstarter
sorry, was even het forum vergeten, ik ga het even testen voor je ;)

Edit: die komen onder de E

[ Voor 19% gewijzigd door Verwijderd op 19-07-2006 22:12 ]

Pagina: 1