Toon posts:

Array count probleempje

Pagina: 1
Acties:

Verwijderd

Topicstarter
Wie wil me even helpen.
Mijn consentratie laat het afweten. Waarschijnlijk door de hitte. 8)7

via web_dav worden er bestanden in een map geplaatst op de apache server.
Deze bestanden hebben als naam zoiets als:

week<weeknummer><datum als(24juli)>tm<datum als(24juli)><teamnummer><lokatie>.doc

ik heb met php een stukje code gemaakt die uit deze directory de .doc files haalt en ze op een pagina als snelkoppeling plaatst (zie code)
code:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
# Lees de files directory uit en zet de .doc files in een lijstje van links.
if ($handle = opendir('./files')) {
        while ($file = readdir($handle)) {
                if (preg_match("/\.doc/", $file)) {
                        echo "<a href=\"./files/$file\"><b>&nbsp;&nbsp;&nbsp;&nbsp;$file&nbsp;&nbsp;&nbsp;&nbsp;</b></a><br>";
                }
        }
        closedir($handle);
}

?>


En wat ik nu poog om voor elkaar te krijgen is een tabel maken van deze bestanden.
Gesorteerd op weeknummer en vervolgens gescheiden per locatie.
Dus dacht ik zelf om een array's te maken met daarin alle bestandsnamen per week.
En dan vervolgens die array's aanroepen en scheiden via strst per locatie.
Maar mijn hoofd kan dit echt niet meer aan. Kan iemand me een zetje geven?

Betere ideeen zijn overigens natuurlijk altijd welkom.

THANKS!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

zitten er scheidingstekens tussen de verschillende 'velden' ?

zo ja: doe ipv je echo (pseudo code)

$parts = explode("scheidingsteken",$file);
$locaties[$parts[locatie]][$parts[week]]=$file;
sorteer het array op locatie en op week
etc...

  • Wao
  • Registratie: Juni 1999
  • Laatst online: 03-12-2024

Wao

Je hoeft niet eens een scheidingsteken te hebben als de syntax van je document naam altijd hetzelfde is. Met een regex kan je deze gegevens in één keer ophalen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$filenaam = "week1121julitm24augustus12345amsterdam.doc";
$regex = "/^week([0-9]{2})([0-9]+[a-z]+)tm([0-9]+[a-z]+)([0-9]+)([a-z]+).doc$/";

preg_match($regex, $filenaam, $res);
print_r($res);

/* 
Output wordt dan:

Array
(
    [0] => week1121julitm24augustus12345amsterdam.doc
    [1] => 11
    [2] => 21juli
    [3] => 24augustus
    [4] => 12345
    [5] => amsterdam
)
*/


Voorwaarde is wel dat het eerste weeknummer altijd in twee cijfers wordt gerepresenteerd (dus week 1 moet dan 01 zijn) en dat locaties alleen lowercase letters zijn. Dit kan je eventueel ook afvangen door de regex te wijzigen.

Dit kan je dan vervolgens in een array stoppen en sorteren met de verschillende sortfuncties van PHP.

Verwijderd

Topicstarter
Rookie,

explode is geweldig! :9
Alleen zou je het doel van
code:
1
$locaties[$parts[locatie]][$parts[week]]=$file;
beter kunnen verkaren.

Ik zit er namelijk nog even mee hoe ik deze gegevens mooi in een tabel krijg gesorteerd op weeknummer. Waarschijnlijk zit in dat stukje code al een oplossing, maar begrijp ik hem niet. :?
Alvast bedankt.