Hoi,

ik heb een image map met ongeveer 20 foto's erin. ik heb ze in een array gezet en wil ze sorteren van hoog naar laag(20 t/m 1).

de images heten dus : 1.gif, 2.gif, 3.gif, 4.gif, 5.gif ..... enzovoort.

maar als ik de image nu sorteer met rsort() of ksort() of alle andere sort() functies, het lukt maar niet, ik zie dan steeds dat het sorteert op deze volgorde:
15, 14, 13, 12, 11, 10, 1, 9, 8, 7, 6, 5, 4, 3, 2, terwijl ik juist van hoog naar laag wil hebben.
op php.net staat over natsort() en dat doet precies wat ik wil, maar dat werkt ook niet bij mij??

iemand een idee?

hier mijn code:

<?
$aantal_foto_per_pagina = '1'; //aantal plaatjes op 1 pagina
$locatie = 'images/'; //map van afbeeldingen

//$files = array('13.gif','12.gif','11.gif','Kopie van 15.gif', '10.gif', '9.gif', '8.gif', '7.gif', '6.gif', '5.gif', '4.gif', '3.gif', '2.gif', '1.gif');
//file is een array
$files = array();
//tel de map images op
$a0 = count($files);
// for loop door de map images
for ($p=0;$p <= $a0; $p++){

//hieronder hoeft niks veranderd te worden
if (!isset($_GET['pagina'])) { $pagina = 1; } else { $pagina = $_GET['pagina']; }
$dir = opendir($locatie);

// Haal de gegevens uit dir
while (false !== ($file = readdir($dir))) {

if (($file !== ".") and ($file !== "..")) {


$files[$p] = ($file);
$p++;
//natsort($files);
rsort($files);
//echo $files[$p];
}

$a0 = count($files);
$a1 = ($a0/$aantal_foto_per_pagina);
$a2 = round($a1);
if ($a1 > $a2) {
$a2++;
}
}
}
echo "<table border='1'><tr>";
$i = '1';
while ($i != ($a2 + 1)) {
//als pagina 1 is.
if ($pagina == $i) {
//variable is aantal_per_pagina * 1
$j = (($aantal_foto_per_pagina * $i)-$aantal_foto_per_pagina);
//variable is + 1
$afb = ($j + 1);
//terwijl variable ongelijk is aan aantal_foto_per_pagina
while ($j != ($aantal_foto_per_pagina * $i)) {
//als afbeelding kleiner is dan count(files)
if ($afb > $a0) {
//variable is aantal_foto_per_pagina * $i
$j = ($aantal_foto_per_pagina * $i);
}
else {
//echo images
//rsort($files);
//ksort($files);
echo "<td><img src=\"$locatie".$files[$afb]."\"></td>";
$afb++;
$j++;
}
}

echo"</tr></table>";
echo"<center>";
//pagina nummers met links
$l = '1';
echo "<br><br>";
while ($l != ($a2 -0)){
if ($l == $pagina){
echo "<b>[$l]</b> ";
}
else {
echo "<a href=\"" . $_SERVER['PHP_SELF'] . "?pagina=$l\">[$l]</a> ";
}
$l++;
}
echo"</center>";

}
$i++;
}

?>
probeer eens ksort()
[edit]dit klopt niet denk ik :s is ook aflopend, dom van me dat ik het niet heb gezien dat je dat al geprobeerd hebt :s[/edit]
ja heb ik ook al geprobeerd, alleen hij sorteert niet logisch. hij sorteert dus zo:

9, 8, 7, 6, 5, 4, 3, 2, 15, 14, 13, 12, 11, 10, 1

heb bijna alles geprobeerd en jullie advie sis nu mijn laatste hoop :)
Warning
Be careful when sorting arrays with mixed types values because sort() can produce unpredictable results.


En dat heb jij dus, omdat er nog .gif achterstaat.
ja dat las ik ook, maar al mijn plaatjes zijn *.gif , en hij kijkt toch alleen naar het nummer?
DaMaster schreef op 27.03.2007 14:20
ja dat las ik ook, maar al mijn plaatjes zijn *.gif , en hij kijkt toch alleen naar het nummer?


Blijkbaar niet. Dus haal dat .gif eens weg kijken of hij het dan wel doet
ok ga ik uitproberen.....:)
Krijg nou wat..
hij doet nu precies wat ik wil, hij nummert op de juiste volgorde:)

maar een vraagje: nu moet ik dus telkens als ik een *.gif naar de map kopieer de extensie ervan weghalen en ik kan het niet meer openen in mijn windows.

bestaat er geen andere mogelijkheid om alsnog de images op volgorde te zien zonder de extensie weg te halen?

alvast bedankt :)
je moet een bestand niet openen om de naam ervan weg te laten :)
rechter muisklikje en naam wijzigen :)

Ik hoop dat je dat bedoeld!
Ja je kan doormiddel van [php]explode[/php] de extentie eruithalen daarna sorteren en erweer aan plakken.
Dizzy schreef op 27.03.2007 14:33
je moet een bestand niet openen om de naam ervan weg te laten :)
rechter muisklikje en naam wijzigen :)

Ik hoop dat je dat bedoeld!


haha nee joh dat bedoelde ik niet, maar ik heb mijn antwoord al gekregen ..thnx!

Reageren