Tein yhden koodivinkin pohjalta seuraavan systeemin sivustonhallintajärjestelmää varten:
<?php function listaa($alku, &$tied, &$hak) { global $kansio, $kuvat, $txt; $k = 0; if(!file_exists($alku)) die("Hakemistoa ei löytynyt!"); foreach(glob("$alku*") as $nimi) { $sis = explode("/", str_replace("$kansio", "", $nimi)); echo laske(count($sis) - 2); if(is_dir($nimi)) { $hak++; if($nimi != "..") { $k = "<img src=\"img/iconset/m_dir.gif\"> "; $piilota = " (<a href=\"javascript: kansio('$nimi')\">Piilota / Näytä</a>)"; } else { $k = ""; $piilota = ""; } echo "$k<a href=\"$nimi\">" . str_replace("$alku", "", $nimi) . "</a>$piilota<br>"; } else { $tied++; $paate = explode(".", str_replace("$alku", "", $nimi)); if(in_array($paate[1], $kuvat)) $p = "m_image.gif\" title=\"Kuva"; else if(in_array($paate[1], $txt)) $p = "m_text.gif\" title=\"Tekstitiedosto"; else $p = "m_unknown.gif\" title=\"Tuntematon tiedosto"; if(in_array(end($paate), $txt)) $muokkaus = "<a href=\"muokkaa.php?nimi=$nimi\"><img src=\"img/iconset/edit.gif\" title=\"Muokkaa\"></a>"; else $muokkaus = "<img src=\"img/iconset/edit.gif\" title=\"Tätä tiedostoa ei voi muokata\">"; echo "$muokkaus <a href=\"javascript: poista('" . str_replace("$alku", "", $nimi) . "', '$nimi')\"><img src=\"img/iconset/delete.gif\" title=\"Poista " . str_replace("$alku", "", $nimi) . "\"></a> <img src=\"img/iconset/$p\"> <a href=\"$nimi\">" . str_replace("$alku", "", $nimi) . "</a><br>"; } if(is_dir("$nimi")) { echo "<div id=\"$nimi\" style=\"display: block;\">"; listaa($nimi . "/", $tied, $hak); echo "</div>\n"; } $k++; } }
Tämän pitäisi listata kaikki kansiot ../ kansiosta alkaen. Nyt käy niin, että osa kansioista on aivan väärässä paikassa (Esim, kansion x alihakemisto y on suoraan ennen x-hakemistoa). Lisäksi sen pitäisi ohittaa kansio jossa se on, ja sen alihakemistot.
Olet tehnyt tuon kovin sotkuisesti. Katsopa funktioni tästä vanhasta keskustelusta.
Nykyisen hakemiston voisi tarkistaa näin:
Tarkistusta ei ole minusta järkevää laittaa suoraan funktioon, vaan ennemmin sille voisi antaa ylimääräisiä parametreja kuten taulukon ohitettavista nimistä.
Älä kokoa tulostettavia asioita muuttujiin, tuo on todella epäselvää. Käsittele mieluummin asiat tulostusjärjestyksessä ja tulosta suoraan, tai jos laitat jotain muuttujaan, laita edes selkeä kokonaisuus. Tuo src-title-viritys on aivan erityisen ruma.
$nimi ei yleensä ole kelvollinen id, tarkista jostain id:n merkkivaatimukset. Muista urlencode($nimi) linkeissä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.