[PHP] Opendir/while alfabetisch sorteren.

Pagina: 1
Acties:
  • 328 views

Acties:
  • 0 Henk 'm!

  • Poenzkie
  • Registratie: Oktober 2006
  • Laatst online: 19-09 10:15

Poenzkie

Just being Hendrick

Topicstarter
Goede morgen,

Ik heb een stukje code om een aantal plaatjes uit een bepaalde dir uit te lezen en die in een keuze menu te gooien zodat je die bij een bepaald stukje tekst kan laten zien.

Dit is de code voor het oproepen van het keuze menu:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<select name="nimg" size="1"  onChange="swapImage('imgPic',this.value)">
<?php
            if ($dir = opendir('./'.$dirpic)){
                /* This is the correct way to loop over the directory. */
                while (false !== ($file = readdir($dir))) {
                    if(strtolower(substr($file,-3)) == "jpg" ){
                        // echo $file."<br/>";
?>
<option label="<?=$file?>" value="<?=$file?>" <?php if($news_img==$file){ echo 'selected="selected"'; } ?> ><?=$file?></option>
<?php
                    }
                }
                closedir($dir);
            }
?>
</select>


Nu komt dit er alleen niet alfabetisch uit. En we willen graag dat dit wel op alfabetische volgorde eruit komt.

Kan iemand me hier bij helpen?

Grtz, Poenzkie

Acties:
  • 0 Henk 'm!

  • Flowmo
  • Registratie: November 2002
  • Laatst online: 18-08 08:24
Kan je er niet beter een array van maken en die array dan alfebetisch / alfanumerisch laten sorteren?

Zie bv dit:
http://www.php-questions.com/phpfaq/answer114

Maak een array van al je bestanden en laat die met natsort sorteren op naam en nummer. Op deze manier krijg je geen lijsten als 1.gif, 10.gif, 2.gif, 20.gif etc, maar 1,2,10,20 etc.

Kan je hier wat mee?

[ Voor 57% gewijzigd door Flowmo op 29-07-2009 09:01 ]


Acties:
  • 0 Henk 'm!

  • jbdeiman
  • Registratie: September 2008
  • Laatst online: 19-09 18:27
Eerst alle namen in een array gooien, deze sorteren en met een foreach weer uitlezen en dan de options aanmaken. Dat is de meest eenvoudige oplossing om dit probleem op te lossen.

Acties:
  • 0 Henk 'm!

  • Zyppora
  • Registratie: December 2005
  • Laatst online: 12-09 10:59

Zyppora

155/50 Warlock

Wat ik altijd doe is blokken code die externe resources aanroepen, apart ergens neer te zetten. Ik weet niet hoe dat bij PHP zit, maar je wilt niet bijv. tijdens het refactoren per ongeluk je closedir() call verwijderen of zo. Zoals Flowmo zegt: mik de filelist in een array en ga daarmee te werk. Dus zo:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
$filelist = array();

// haal de lijst met files op
if ($dir = opendir('./' . $dirpic)) {
  while ($file = readdir($dir)) {
    $filelist = $file;
  }

  closedir($dir);
}

// Nu heb je een array met je filenames erin, waarmee je kunt doen wat je wilt

$myfiles = sort($myfiles);
//$myfiles = asort($myfiles);
//$myfiles = ksort($myfiles);
//$myfiles = arsort($myfiles);
//$myfiles = krsort($myfiles);

// Hier kun je dan je output definieren

foreach ($myfiles as $filename) {
  echo "<option label='" . $filename . "' value='" . $filename . "'>";
}


Maakt je code m.i. een stuk overzichtelijker en beter onderhoudbaar, ook voor die devver die jou straks gaat opvolgen (in een project bijvoorbeeld).

Phenom II X4 945 \\ 8GB DDR3 \\ Crosshair IV Formula \\ R9 290


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Poenzkie schreef op woensdag 29 juli 2009 @ 08:54:

Nu komt dit er alleen niet alfabetisch uit. En we willen graag dat dit wel op alfabetische volgorde eruit komt.

Kan iemand me hier bij helpen?
Euh; sorry, maar zo werkt het hier niet helemaal. We zien hier graag wat eigen initiatief en wat je dus zoal hebt geprobeerd om tot een oplossing te komen. Het enige wat ik hier zie is een copy/paste van php.net en de "klacht" dat het er niet alfabetisch uit komt en dat je dat wel graag zou willen. En dat is dus niets meer dan een ordinair scriptrequest / Kan iemand even...? vraag en daar doen we hier dus niet aan ;) Omdat ik verder dus niet zie wat je zelf al geprobeerd hebt (en laten we wel zijn, met 3 seconden googlen kom je er ook) gaat dit topic dus dicht.

[ Voor 10% gewijzigd door RobIII op 29-07-2009 09:16 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Dit topic is gesloten.