[PHP/MySQL] Sorteren in array of tijdelijke tabel?

Pagina: 1
Acties:

  • Dr.Bob
  • Registratie: November 1999
  • Laatst online: 14-08 10:48

Dr.Bob

Dr.Bob says: HEAL!

Topicstarter
Hi, zit met een dir met pdf-files en wil die gesorteerd ter download aanbieden op ons intranet. De filenames zijn nu van het type "projectnummer-datum-documentsoort.pdf" oftewel bv. T0123-20020408-termsheet.pdf. En dan zijn er documenten van meerdere projecten, meerdere data en meerdere soorten.

Waar ik naartoe wil is een weergave als:

------------------------------------------------
P R O J E C T T 0 1 2 3
------------------------------------------------


term sheet
------------------------------------------------
08 apr 2002
03 apr 2002
14 feb 2002

annual report
------------------------------------------------
02 apr 2002
29 mrt 2002
12 dec 2001



Waarbij de onderstreepte data de links naar de pdf files zijn, en er zodoende gedownload kan worden.

Ik dacht als volgt te werk te gaan:
In eerste instantie selecteer ik per project welke files er zijn door te selecteren op de het stukje in de naam tot de eerste dash (-). Die array die ik dan krijg moet ik bewerken zodat ik van elke filenaam een opsplitsing krijg van de datum en de documentsoort, en dan moet ik eerst op documentsoort groeperen en daarbinnen op datum sorteren.

Ik denk dat dit wel moet kunnen, maar vooralsnog begint het me een beetje te duizelen qua arrays-binnen-een-array groeperen en sorteren, dus de vraag die ik heb is de volgende:

Is het nou wel of niet verstandig om voor deze data een tijdelijke tabel te creeeren (CREATE TEMPORARY TABLE), want dan is het een piece of cake om de gewenste sortering enzo uit te voeren? Of kan dat met arrays, en arrays-binnen-arrays, net zo makkelijk?

Hoop dat ik 't duidelijk genoeg verwoord hebt.
Thanx, Dr.B

NERDCORE FOR LIFE


  • eborn
  • Registratie: April 2000
  • Laatst online: 08-09 12:50
Kun je niet de volgende tabel maken:

files: ( ID, projectnummer, datum, documentsoort )

Als je die dan vult met al je filenames en ze vervolgens ergens in een mapje wegzet. Dan kun je door deze drie gegevens aan elkaar te plakken je files terugkrijgen.

En sorteren en groeperen per projectnummmer en/of datum is natuurlijk een DBMS z'n specialiteit :)

Verwijderd

Op dinsdag 09 april 2002 14:32 schreef Dr.Bob het volgende:
Hi, zit met een dir met pdf-files en wil die gesorteerd ter download aanbieden op ons intranet. De filenames zijn nu van het type "projectnummer-datum-documentsoort.pdf" oftewel bv. T0123-20020408-termsheet.pdf. En dan zijn er documenten van meerdere projecten, meerdere data en meerdere soorten.

Waar ik naartoe wil is een weergave als:

BLA!
projectnummer-datum-documentsoort.pdf

Okay simpel gezegd:
Je hebt te maken met een bestand dat uit drie delen bestaat.
Wat je dus wilt is de twee delen van het bestand achter het projectnummer koppelen aan het projectnummer en orderen op een datum. (Tamelijk +) omschreven maar goed... :))

Stap 1) haal je bestanden tevoorschijn en haal al je bestandsnamen op het - uitelkaar. (het makkelijkste vind ik als de array er ongeveer zo uitziet:
code:
1
2
3
$array['$bestandsnaam'][] = 'projectnummer' => $projectnummer, 
'datum' => $datum, 
'documentsoort' => $documentsoort);

)
Stap 2) Ga nu met foreach en array_values en array_keys de dingen op de juiste plaats sorteren (bijv met asort)

Je plaats hangt dus af van verschillende keys
code:
1
$bestandsnaam[$array['bestandsnaam']['projectnummer'][$countertje_ofzo]];

ofzoiets wazigs. Dat wijst zich gaande weg vanzelf vermoed ik.)

Tip: print_r is een handige functie om mee te debuggen
Laat me even weten of het lukt.

[edits]klote topix[/edit]

  • Dr.Bob
  • Registratie: November 1999
  • Laatst online: 14-08 10:48

Dr.Bob

Dr.Bob says: HEAL!

Topicstarter
eborn en daniel, beide bedankt voor je reactie, waarbij -kort samengevat (ja sorry daniel, mijn eerste verhaal was inderdaad beetje lang, bang dat het anders niet duidelijk was ;) ) eborn dus kiest voor de temporary tabel en daniel zegt dat dit eigenlijk niet nodig is, als ik maar goed de array functies van php gebruik.

Ik ga ermee stoeien en laat weten hoe en of ik het uiteindelijk voor elkaar heb gekregen. Thanx again!

NERDCORE FOR LIFE


  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 09-09 20:58

Janoz

Moderator Devschuur®

!litemod

Kijk vooral ook naar usort. Hierbij kun je je eigen sort conditie bepalen. Op dat moment hoef je maar 1x de sort aan te roepen en je hele array staat in de juiste volgorde.

Daarnaast moet je de db-oplossing alleen gebruiken waneer je gegevens al in een DB staan! Het lijkt me een beetje overdreven om elke keer
1 tabel aanmaken
2 tabel vullen
3 tabel gesorteerd uitlezen
4 tabel verwijderen

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


  • eborn
  • Registratie: April 2000
  • Laatst online: 08-09 12:50
In mijn geval was het ook de bedoeling om alles in de database te zetten en te laten staan. Elke keer als er dan een nieuw bestand geupload wordt moet dit gewoon als nieuw record in de database worden gezet. Dus niet echt temporary :)

  • Grum
  • Registratie: Juni 2001
  • Niet online
daniel_hoenderdos: [..snip..]
code:
1
2
3
$array['$bestandsnaam'][] = 'projectnummer' => $projectnummer, 
'datum' => $datum, 
'documentsoort' => $documentsoort);

'$bestandsnaam' zal niet echt werken he. >:)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Grum:
'$bestandsnaam' zal niet echt werken he. >:)
pff, je hebt zelf gezegd dat je je named arrays moet quoten, hoor!!

:+

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1