[PHP] li sorteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • console
  • Registratie: September 2002
  • Laatst online: 21:35
Dag here,

Momenteel ben ik met een site bezig, waar ik uit een tabel informatie haal met namen. Nu wil ik deze namen sorteren op alfabet. Maar dit moet ik één enkele 'ul' lijst en er zijn standaard 3 rijen. De 'li' heeft een float:left!

Voorbeeld;

De volgende normale list zou ze naast elkaar zetten.
code:
1
2
3
4
5
6
7
8
9
10
11
<ul>
<li>aa</li>
<li>ab</li>
<li>ac</li>
<li>ba</li>
<li>bb</li>
<li>bc</li>
<li>ca</li>
<li>cb</li>
<li>cc</li>
</ul>


Maar de structuur van de list moet zo worden, dan worden de namen netjes onderelkaar gezet op alfabet
code:
1
2
3
4
5
6
7
8
9
10
11
<ul>
<li>aa</li>
<li>ba</li>
<li>ca</li>
<li>ab</li>
<li>bb</li>
<li>cb</li>
<li>ac</li>
<li>bc</li>
<li>vc</li>
</ul>


Afbeeldingslocatie: http://fupload.5dstudio.nl/upload/262855015.png (elk - is een nieuwe li )

Eerlijk gezegt heb ik geen flauw idee hoe ik dit het beste voor mekaar kan krijgen :? Zou fijn zijn als iemand me een duw in de goede richting kan geven hoe ik dit op kan lossen.

Acties:
  • 0 Henk 'm!

  • Guillome
  • Registratie: Januari 2001
  • Niet online

Guillome

test

Hoe sorteer je? Ik zie ASC en DESC verschillend gebruikt worden

If then else matters! - I5 12600KF, Asus Tuf GT501, Asus Tuf OC 3080, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Acties:
  • 0 Henk 'm!

  • console
  • Registratie: September 2002
  • Laatst online: 21:35
Guillome schreef op woensdag 31 maart 2010 @ 16:01:
Hoe sorteer je? Ik zie ASC en DESC verschillend gebruikt worden
ASC. De eerste voorbeeld is hoe ik nu heb, maar moet voorbeeld 2 worden. Want de li heeft een float:left; dus zet alles naast elkaar maar word afgekapt door de div breedte zodat je elke keer een rij van 3 namen naast elkaar hebt.

Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 17:28

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Volgens mij gaat het helemaal niet specifiek om het sorteren, maar worden de li's gewoon in een andere formatie worden weergegeven dan gewenst.

Je hebt de Li's al in gesorteerde volgorde, maar als je ze een float left geeft dan krijg je dus het linkervoorbeeld als ik het goed begrijp, terwijl je eigenlijk wilt dat ze geordend worden zoals in het rechter voorbeeld? Dus drie kolommen, in plaats van 3 regels?

Kortom: je wilt de li's onder elkaar hebben en zodra de onderkant van de DIV bereikt is, wil je dat ie in een tweede kolom verder gaat en daarna een derde?

Dat ze nu naast elkaar komen komt in elk geval door die float:left, lijkt me. Hoe je met CSS iets over meerdere kolommen kan uitsmeren zou ik niet weten, daarvoor heb ik te weinig kaas gegeten van CSS :)

[ Voor 30% gewijzigd door Orion84 op 31-03-2010 16:08 ]

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • dev10
  • Registratie: April 2005
  • Laatst online: 18-09 19:18
Je kunt gewoon de eerste structuur van je lijst houden, maar dan moet je opdelen na 3 li's.

Dan krijg je dus iets als:
HTML:
1
2
3
4
5
6
7
8
9
10
<ul style="float: left">
  <li>aa</li>
  <li>ab</li>
  <li>ac</li>
</ul>
<ul style="float: left">
  <li>aa</li>
  <li>ab</li>
  <li>ac</li>
</ul>


edit:
Wat Orion84 zegt dus


Met PHP kun je wel een loopje maken dat na drie li's de lijst afbreekt en er een nieuwe lijst inzet.

[ Voor 4% gewijzigd door dev10 op 31-03-2010 16:06 ]


Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 17:28

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

@dev10: dat kan inderdaad ook. Maar werkt alleen als je weet hoeveel regels je kwijt kan. Ik vermoed echter dat de hoogte van de DIV afhankelijk is van het aantal items, en dat alleen de breedte vast staat?

Dat is ook wel in PHP op te lossen, door de array te splitsen in 3 array's, eentje per kolom. Waarbij je dus item 1 naar array1 verplaatst, item 2 naar array2, item 3 naar array3, item 4 weer naar array1 etc. Daarna vul je de linker UL met array 1, de middelste met array2 en de rechtse met array3.

Edit: of wat pino zegt inderdaad, dat is wat efficienter: Pin0 in "[PHP] li sorteren"

[ Voor 52% gewijzigd door Orion84 op 31-03-2010 16:13 ]

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • console
  • Registratie: September 2002
  • Laatst online: 21:35
dev10 schreef op woensdag 31 maart 2010 @ 16:05:
Je kunt gewoon de eerste structuur van je lijst houden, maar dan moet je opdelen na 3 li's.

Dan krijg je dus iets als:
HTML:
1
2
3
4
5
6
7
8
9
10
<ul style="float: left">
  <li>aa</li>
  <li>ab</li>
  <li>ac</li>
</ul>
<ul style="float: left">
  <li>aa</li>
  <li>ab</li>
  <li>ac</li>
</ul>


edit:
Wat Orion84 zegt dus


Met PHP kun je wel een loopje maken dat na drie li's de lijst afbreekt en er een nieuwe lijst inzet.
Die manier van jou had ik ook al in mijn hoofd, maar het moet mogelijk zijn om in één 'list' de gewenste resultaat te krijgen wat ik wil.

[ Voor 42% gewijzigd door console op 31-03-2010 16:11 ]


Acties:
  • 0 Henk 'm!

  • Pin0
  • Registratie: November 2002
  • Niet online
Ja, het komt er op neer het totaal aantal namen te delen door drie (aantalKolommen) en vervolgens als dat aantal bereikt is (totaalAantal/aantalKolommen) de ul afsluiten en opnieuw openen voor de volgende lijst...

Mijn Lego Mocs - LEGO idea: The Motorcycle Garage


Acties:
  • 0 Henk 'm!

  • HMS
  • Registratie: Januari 2004
  • Laatst online: 21-08 23:06

HMS

Je zou het met XSL / XSLT kunnen proberen

(http://www.w3schools.com/xsl/el_sort.asp)

Acties:
  • 0 Henk 'm!

  • Orion84
  • Registratie: April 2002
  • Laatst online: 17:28

Orion84

Admin General Chat / Wonen & Mobiliteit

Fotogenie(k)?

Voor een CSS multi column oplossing moet je zo te zien iig nog even wachten:
http://www.w3.org/TR/2001/WD-css3-multicol-20010118/

Als je het per se in één UL wilt hebben, dan zou je eventueel mijn oplossing kunnen gebruiken. Dus per kolom opsplitsen in aparte arrays en dan de UL als volgt vullen:

item1 uit array1
item1 uit array2
item1 uit array3
item2 uit array1
...

[ Voor 55% gewijzigd door Orion84 op 31-03-2010 16:17 ]

The problem with common sense is that it's not all that common. | LinkedIn | Flickr


Acties:
  • 0 Henk 'm!

  • NetForce1
  • Registratie: November 2001
  • Nu online

NetForce1

(inspiratie == 0) -> true

Als je makkelijk op de server al kan bepalen hoeveel kolommen je hebt, en hoe lang die zijn, kun je daar al sorteren op naam, dan verdelen over het aantal kolommen, en daarna de items in gewenste volgorde weer samenvoegen.
edit:
te laat, niet zo lang denken over je post...

[ Voor 11% gewijzigd door NetForce1 op 31-03-2010 16:19 ]

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Acties:
  • 0 Henk 'm!

  • console
  • Registratie: September 2002
  • Laatst online: 21:35
Orion84 schreef op woensdag 31 maart 2010 @ 16:15:
Voor een CSS multi column oplossing moet je zo te zien iig nog even wachten:
http://www.w3.org/TR/2001/WD-css3-multicol-20010118/

Als je het per se in één UL wilt hebben, dan zou je eventueel mijn oplossing kunnen gebruiken. Dus per kolom opsplitsen in aparte arrays en dan de UL als volgt vullen:

item1 uit array1
item1 uit array2
item1 uit array3
item2 uit array1
...
Yep, inderdaad dat is hem! Het is ook zo simpel, maar op een gegeven moment zie je het eff niet meer als je de heledag aan het PHPén ben 8)7
Pagina: 1