weergave op alfbetische volgorde

Status
Niet open voor verdere reacties.

twinnie

Gebruiker
Lid geworden
15 jan 2001
Berichten
249
Hoi, ik gebruik dit script om bestanden weer te geven, het werkt goed.
Nu wil ik dat de bestanden in alfabetische volgorde gerangschikt worden als weergave.

Kan iemand mij daar mee helpen?
Vast bedankt.
Twinnie

PHP:
<?php

// Benodigde variabelen
$image_types = array("jpg","gif","bmp","png","jpeg");
$mappen_reeks = "";
$plaatjes_reeks = "";
$overige_reeks = "";

if (!empty($_GET['']))
{
    $mapnaam = $_GET['//mededelingen'];
}
else
{
    $mapnaam = "/mededelingen";
};

// Voorkom dat mensen 'boven' de huidige map kunnen kijken.
if ( ereg('..',$mapnaam) || ereg('//',$mapnaam) )
{
    $mapnaam = "/mededelingen";
};

// Map inhoud ophalen en tonen
$map = opendir(".{$mapnaam}");
while (false!==($bestand = readdir($map))) {
    if ($bestand != "." && $bestand != "..") {
        // Wat is de extensie?
        $ext = explode('.',$bestand);
        $extl = sizeof($ext) - 1;
        $ext = strtolower($ext[$extl]);

        if ( !ereg('.',$bestand) )
        {
            // Gaat om een map
            $mappen_reeks .= "<a href=\"index.php?mapnaam={$mapnaam}{$bestand}/\">{$bestand}</a><br />";
        }
        elseif ( in_array($ext,$image_types) )
        {
            // Plaatje
            $plaatjes_reeks .= "<img src=\".{$mapnaam}{$bestand}\" alt=\"Plaatje\" /><br />\n";
        }
        else
        {
            // Overige
            $overig_reeks .= "<a href=\".{$mapnaam}/{$bestand}\">{$bestand}</a><br />";
        }
    }
}

if ( $mappen_reeks != "" )
{
    echo ("<h1>Mappen</h1>");
    echo ($mappen_reeks);
}

if ( $plaatjes_reeks != "" )
{
    echo ("<h1>Plaatjes</h1>");
    echo ($plaatjes_reeks);
}

if ( $overig_reeks != "" )
{
    echo ("<h1>Mededelingen</h1>");
    echo ($overig_reeks);
}
closedir($map);
?>
 
Dan wordt het zoiets. Ik heb het alleen ingesteld voor de plaatjes, de mappen en mededelingen kun je zelf ook zo ombouwen door te vergelijken.

PHP:
<?php

// Benodigde variabelen
$image_types = array("jpg","gif","bmp","png","jpeg");
$mappen_reeks = "";
$plaatjes_reeks = "";
$overige_reeks = "";

if (!empty($_GET['']))
{
    $mapnaam = $_GET['//mededelingen'];
}
else
{
    $mapnaam = "/mededelingen";
};

// Voorkom dat mensen 'boven' de huidige map kunnen kijken.
if ( ereg('..',$mapnaam) || ereg('//',$mapnaam) )
{
    $mapnaam = "/mededelingen";
};

// Map inhoud ophalen en tonen
$map = opendir(".{$mapnaam}");
while (false!==($bestand = readdir($map))) {
    if ($bestand != "." && $bestand != "..") {
        // Wat is de extensie?
        $ext = explode('.',$bestand);
        $extl = sizeof($ext) - 1;
        $ext = strtolower($ext[$extl]);

        if ( !ereg('.',$bestand) )
        {
            // Gaat om een map
            $mappen_reeks .= "<a href=\"index.php?mapnaam={$mapnaam}{$bestand}/\">{$bestand}</a><br />";
        }
        elseif ( in_array($ext,$image_types) )
        {
            // Plaatje
            $plaatjes_reeks[] = ".".$mapnaam.$bestand;
        }
        else
        {
            // Overige
            $overig_reeks .= "<a href=\".{$mapnaam}/{$bestand}\">{$bestand}</a><br />";
        }
    }
}

if ( $mappen_reeks != "" )
{
    echo ("<h1>Mappen</h1>");
    echo ($mappen_reeks);
}

if ( $plaatjes_reeks != "" )
{
    echo ("<h1>Plaatjes</h1>");
    //alfabetisch sorteren
    natsort($plaatjes_reeks);
    foreach ($plaatjes_reeks as $id => $plaatje)
    {
       echo "<img src='$plaatje' alt='Plaatje' /><br />\n";
    }
}

if ( $overig_reeks != "" )
{
    echo ("<h1>Mededelingen</h1>");
    echo ($overig_reeks);
}
closedir($map);
?>
 
Dank je wel.

Ik ga gelijk ook de andere aanpassen.

Super bedankt:thumb:
 
Hoi hackerfrans,

Het werkt goed, dank je.
Nog even een vraagje: als ik nou van Z naar A wil hebben wat moet ik dan precies verander?
Ik denk dat ik natsort moet veranderen maar waarin?
Ik hoop dat jij dit ook weet.

Vast bedankt
Twinnie
 
Dan moet je array_reverse() gebruiken, dus na natsort().

natsort($plaatjes_reeks);
array_reverse($plaatjes_reeks);
 
Hoi, dit werkt goed.
Nu ben ik bezig om het ook bij "overige" toe te passen maar ik krijg hier steeds fout melding in regel 100, 101 en 102 (in "overige" komen pdf bestanden te staan).

Misschien dat jij mij nog 1x wilt helpen.

Vast bedankt
 
Wat is de foutmelding die je krijgt en in hoeverre is je code veranderd?
 
Hoi dit zijn de foutmeldingen:

Warning: natsort() [function.natsort]:
The argument should be an array in /usr/local/home/map/upload/weergave-mededelingen11.php on line 100
Warning: array_reverse() [function.array-reverse]:
The argument should be an array in /usr/local/home/map/upload/weergave-mededelingen11.php on line 101
Warning: Invalid argument supplied for foreach()
in /usr/local/home/map/upload/weergave-mededelingen11.php on line 102

En onderstaande het aangepaste deel die ik zelf heb gedaan.


PHP:
    echo ("<h1>Mededelingen</h1>"); 
    //alfabetisch sorteren 
    natsort($overige_reeks);
    array_reverse($overige_reeks);
    foreach ($overige_reeks as $id => $overige) 
    { 
       echo "<img src='$overige' alt='overige' /><br />\n"; 
    } 
} 

closedir($map);
 
Er staat dat het geen array is.

Ik zie in je code wel dat je overig_reeks en overige_reeks door elkaar haalt. Daar zal het wel aan liggen.
 
Ik denk eerder dat je in het midden bent vergeten er een array van te maken:
Origineel:
PHP:
// Overige
            $overig_reeks .= "<a href=\".{$mapnaam}/{$bestand}\">{$bestand}</a><br />";

Wordt:
PHP:
$overig_reeks[] = ".".$mapnaam.$bestand;

Let dus op de [].
 
Oke, dat klopt dit heb ik al veranderd maar nu zie ik de bestanden die in de map "mededeling" zitten niet verschijnen.

PHP:
if ( $overige_reeks != "" ) 
{ 
    echo ("<h1>Mededelingen</h1>"); 
    //alfabetisch sorteren 
    natsort($overige_reeks);
    array_reverse($overige_reeks);
    foreach ($overig_reeks as $id => $mededelingen) 
    { 
       echo "<img src='$mededelingen' alt='mededelingen' /><br />\n"; 
    } 
} 

closedir($map);
 
PHP:
echo '<img src="'.$mededelingen.'" alt=\'mededelingen\' /><br />\n';
 
Hoi ik heb het verander maar de bestanden worden nog niet zichtbaar, helaas.

PHP:
if ( $overige_reeks != "" )  
{  
    echo ("<h1>Mededelingen</h1>");  
    //alfabetisch sorteren  
    natsort($overige_reeks); 
    array_reverse($overige_reeks); 
    foreach ($overig_reeks as $id => $mededelingen)  
    {  
        echo '<img src="'.$mededelingen.'" alt=\'mededelingen\' /><br />\n';  
 
    }  
}  

closedir($map);
 
Nee, helaas nog geen bestanden gezien.
Ik heb ook even mijn "temp" leeg gemaakt maar nee.
 
Is het wel de bedoeling dat de overige bestanden als afbeelding worden weergegeven? Zo niet dan moet het zijn:
PHP:
        echo $mededelingen .'<br />\n';

Als je ook de tekst mededelingen niet te zien krijgt zit de fout eerder in het script en moet je dat even plaatsen denk ik.
 
Ik krijg ook de tekst Mededelingen niet te zien.
Ik ga nog even verder kijken in het script.

Voordat het op alfabetische volgorde kwam te staan dit het script het wel.
 
Ik ben nog steeds bezig, de tekst "Mededelingen" is weer terug maar de bestanden komen nog steeds niet met aflopende alfabet op de site te staan.

Helaas, wie weet hoe het moet?

Gr. Twinnie
 
Hier een gewijzigd script. Het volledige bestandspad van de overige bestanden wordt onder 'Mededelingen' van Z naar A weergegeven.

PHP:
<?php

// Benodigde variabelen
$image_types = array("jpg","gif","bmp","png","jpeg");
$mappen_reeks = "";
$plaatjes_reeks = "";
$overige_reeks = "";

if (!empty($_GET['']))
{
    $mapnaam = $_GET['//mededelingen'];
}
else
{
    $mapnaam = "/mededelingen";
};

// Voorkom dat mensen 'boven' de huidige map kunnen kijken.
if ( ereg('..',$mapnaam) || ereg('//',$mapnaam) )
{
    $mapnaam = "/mededelingen";
};

// Map inhoud ophalen en tonen
$map = opendir(".{$mapnaam}");
while (false!==($bestand = readdir($map))) {
    if ($bestand != "." && $bestand != "..") {
        // Wat is de extensie?
        $ext = explode('.',$bestand);
        $extl = sizeof($ext) - 1;
        $ext = strtolower($ext[$extl]);

        if ( !ereg('.',$bestand) )
        {
            // Gaat om een map
            $mappen_reeks .= "<a href=\"index.php?mapnaam={$mapnaam}{$bestand}/\">{$bestand}</a><br />";
        }
        elseif ( in_array($ext,$image_types) )
        {
            // Plaatje
            $plaatjes_reeks[] = ".".$mapnaam.$bestand;
        }
        else
        {
            // Overige
            $overig_reeks[] .= ".".$mapnaam.$bestand;
        }
    }
}

if ( $mappen_reeks != "" )
{
    echo ("<h1>Mappen</h1>");
    echo ($mappen_reeks);
}

if ( $plaatjes_reeks != "" )
{
    echo ("<h1>Plaatjes</h1>");
    //alfabetisch sorteren
    natsort($plaatjes_reeks);
    foreach ($plaatjes_reeks as $id => $plaatje)
    {
       echo "<img src='$plaatje' alt='Plaatje' /><br />\n";
    }
}

if ( $overig_reeks != "" )
{
    echo ("<h1>Mededelingen</h1>");

    array_reverse($overig_reeks);
    foreach ($overig_reeks as $id => $overig)
    {
       echo $overig."<br />";
    }
}
closedir($map);
?>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan