PDA

Bekijk Volledige Versie : [PHP] Elementen in array in welbepaalde volgorde sorteren



Shenzou
25/05/05, 20:15
Ik heb een menu en naargelang het product dat wordt weergegeven, komen
er in het menu meer of minder items te staan. Nu is het echter
belangrijk dat die items in het menu steeds in dezelfde volgorde komen
te staan.

Ik heb een tabel productCategory die er als volgt uitziet:

|productId|subLabel |
| 005 | description |
| 010 | awards |
| 005 | awards |
| 005 | references |
| 002 | downloads |
| 005 | images |

Per productId wil ik nu alle subLabels eruit sorteren, in dit geval zal
de array dan worden (voor 005): $prod_subs("description", "awards",
"references", "images")
Echter mijn menu-items moeten steeds zo geordend zijn:
$volgorde("description", "specifications", "pictures", "downloads",
"awards", references").

Hoe krijg ik $prod_subs() nu zodanig geordend dat de elementen geordend
worden in de volgorde zoals ze in $volgorde staan? Het aantal elementen
in $prod_subs is variabel, afhankelijk van het product, maar telt
minimum 1 element en maximum 6 elementen (=aantal elementen waaruit
$volgorde bestaat). Ik heb gezien dat PHP verschillende sorteer-functies
bezit maar ik geraak er niet aan uit

Als iemand mij al kan zeggen hoe ik dit best kan aanpakken, misschien
zijn er betere methodes, dan zal ik die persoon zeer dankbaar zijn.

Tot slot nog kort even een andere vraag: welke is de beste/snelste
manier om (met PHP) te checken of een welbepaald record in een MySQL
tabel bestaat?

John Bokma
25/05/05, 21:05
Shenzou wrote:

> Ik heb een menu en naargelang het product dat wordt weergegeven, komen
> er in het menu meer of minder items te staan. Nu is het echter
> belangrijk dat die items in het menu steeds in dezelfde volgorde komen
> te staan.
>
> Ik heb een tabel productCategory die er als volgt uitziet:

Maak een extra kolom aan in je database waar je op sorteerd. En nee, dat
sorteren doe je niet in PHP maar daar waar het "hoort", in je database
query.

|productId|subLabel | Order
| 005 | description | 1
| 010 | awards |
| 005 | awards | 2
| 005 | references | 3
| 002 | downloads |
| 005 | images | 4

Als je ooit iets tussenvoegt: even hernummeren (of gebruik een order met
stapgrootte 10 o.i.d.).

> Tot slot nog kort even een andere vraag: welke is de beste/snelste
> manier om (met PHP) te checken of een welbepaald record in een MySQL
> tabel bestaat?

Middels een SQL query. Iets als: SELECT * FROM tabel WHERE iets = waarde

--
John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html

Daniel Tryba
25/05/05, 21:05
Shenzou <black_onion@nospamhotmail.com> wrote:
[uit een database specifieke volgorde]
> Hoe krijg ik $prod_subs() nu zodanig geordend dat de elementen
> geordend worden in de volgorde zoals ze in $volgorde staan? Het aantal
> elementen in $prod_subs is variabel, afhankelijk van het product, maar
> telt minimum 1 element en maximum 6 elementen (=aantal elementen
> waaruit $volgorde bestaat). Ik heb gezien dat PHP verschillende
> sorteer-functies bezit maar ik geraak er niet aan uit Als iemand mij
> al kan zeggen hoe ik dit best kan aanpakken, misschien zijn er betere
> methodes, dan zal ik die persoon zeer dankbaar zijn.

Gebruik hiervoor een array met de gewenste volgorde en sla de gegevens
uit de database op in een associatief array.

> Tot slot nog kort even een andere vraag: welke is de beste/snelste
> manier om (met PHP) te checken of een welbepaald record in een MySQL
> tabel bestaat?

Er een index op zetten.

John Bokma
25/05/05, 21:45
Daniel Tryba wrote:

[ sorteren ]

> Gebruik hiervoor een array met de gewenste volgorde en sla de gegevens
> uit de database op in een associatief array.

Brrr, het lijkt mij handiger om het op 1 plaats op te slaan: de database.

--
John Voorbeeldscripts in Perl: http://johnbokma.com/perl/
Website design: http://johnbokma.com/websitedesign/
Ervaren Perl / Java programmeur beschikbaar: http://castleamber.com/
Tevreden opdrachtgevers: http://castleamber.com/testimonials.html

Shenzou
30/05/05, 17:15
John Bokma wrote:
>
>
> Maak een extra kolom aan in je database waar je op sorteerd. En nee, dat
> sorteren doe je niet in PHP maar daar waar het "hoort", in je database
> query.
>
> |productId|subLabel | Order
> | 005 | description | 1
> | 010 | awards |
> | 005 | awards | 2
> | 005 | references | 3
> | 002 | downloads |
> | 005 | images | 4
>
> Als je ooit iets tussenvoegt: even hernummeren (of gebruik een order met
> stapgrootte 10 o.i.d.).
>

Ah, bedankt voor de info. Inderdaad geen slecht idee :)

>
>>Tot slot nog kort even een andere vraag: welke is de beste/snelste
>>manier om (met PHP) te checken of een welbepaald record in een MySQL
>>tabel bestaat?
>
>
> Middels een SQL query. Iets als: SELECT * FROM tabel WHERE iets = waarde
>

Ik heb een SELECT COUNT(*) gebruikt wat sneller blijkt te zijn dan
wanneer je met mysql_num_rows() nog het aantal rijen moet tellen.

Nogmaals bedankt.