Dynamisch menu met php
ik ben bezig met een stage bij een bedrijf en moet daar een intranet opzetten. Ik heb daar een ftp waar met een public html map. Hier komt het intranet in te draaien. Een vriend van me heeft me geholpen een script te maken wat een directory uitleest en aan de hand van die mappenstructuur een menu opbouwt. Erg gebruiksvriendelijk want het berdijf kan nu de inhoud van hun intranet gewoon weggooien als het vervuilt raakt en in de avonduren compleet opnieuw uploaden. Ook nieuwe mappen staan gelijk in het menu. Nu komt het probleem; we hebben geen flauw idee waar opgebaseerd word welke volgorde hij gebruikt. We willen graag een numeriek volgorde. Kan iemand me hier mee helpen?
Hier de code;
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>Menu</title>
<script type="text/javascript" src="fsmenu.js"></script>
<link rel="stylesheet" type="text/css" id="listmenu-o" href="listmenu_o.css" title="Vertical 'Office'" />
<link rel="stylesheet" type="text/css" id="fsmenu-fallback" href="listmenu_fallback.css" />
<link rel="stylesheet" type="text/css" href="divmenu.css" />
</head>
<body>
<iframe frameborder="0" name="main" scrolling="auto" src="%%%%%%" width="80%" height="600%" align="right" hspace="15" vspace="9"></iframe>
<b>
<ul class="menulist" id="listMenuRoot">
Code (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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
<?php
$dir = $_SERVER['DOCUMENT_ROOT'] . "/intranet";
if (is_dir($dir)) {
$opendir = opendir($dir);
while($file = readdir($opendir)) {
if (is_dir($dir . "/" . $file) AND ($file != "..") AND ($file != ".")) {
echo "<li><a href=\"documenten.php?docsmap=" . $dir . "/" . $file . "\" target=\"main\">" . $file . "</a></li>";
// sub 1
$subdir2 = $dir . "/" . $file;
$opensubdir2 = opendir($subdir2);
$totaal = "0";
while ($subfile2 = readdir($opensubdir2)) {
if (is_dir($subdir2 . "/" . $subfile2) AND ($subfile2 != "")) {
$totaal = $totaal + "1";
}
}
if ($totaal != "2") {
echo "<ul>";
}
$subdir = $dir . "/" . $file;
$opensubdir = opendir($subdir);
while ($subfile = readdir($opensubdir)) {
if (is_dir($subdir . "/" . $subfile) AND ($subfile != "") AND ($subfile != "..") AND ($subfile != ".")) {
echo "<li><a href=\"documenten.php?docsmap=" . $subdir . "/" . $subfile . "\" target=\"main\">" . $subfile . "</a></li>";
// nieuwe sub 2
$subdir4 = $subdir . "/" . $subfile;
$opensubdir4 = opendir($subdir4);
$totaal2 = "0";
while ($subfile4 = readdir($opensubdir4)) {
if (is_dir($subdir4 . "/" . $subfile4) AND ($subfile4 != "")) {
$totaal2 = $totaal2 + "1";
}
}
if ($totaal2 != "2") {
echo "<ul>";
}
$subdir3 = $subdir . "/" . $subfile;
$opensubdir3 = opendir($subdir3);
while ($subfile3 = readdir($opensubdir3)) {
if (is_dir($subdir3 . "/" . $subfile3) AND ($subfile3 != "") AND ($subfile3 != "..") AND ($subfile3 != ".")) {
echo "<li><a href=\"documenten.php?docsmap=" . $subdir3 . "/" . $subfile3 . "\" target=\"main\">" . $subfile3 . "</a></li>";
// nieuwe sub 3
$subdir6 = $subdir3 . "/" . $subfile3;
$opensubdir6 = opendir($subdir6);
$totaal3 = "0";
while ($subfile6 = readdir($opensubdir6)) {
if (is_dir($subdir6 . "/" . $subfile6) AND ($subfile6 != "")) {
$totaal3 = $totaal3 + "1";
}
}
if ($totaal3 != "2") {
echo "<ul>";
}
$subdir5 = $subdir3 . "/" . $subfile3;
$opensubdir5 = opendir($subdir5);
while ($subfile5 = readdir($opensubdir5)) {
if (is_dir($subdir5 . "/" . $subfile5) AND ($subfile5 != "") AND ($subfile5 != "..") AND ($subfile5 != ".")) {
echo "<li><a href=\"documenten.php?docsmap=" . $subdir5 . "/" . $subfile5 . "\" target=\"main\">" . $subfile5 . "</a></li>";
// nieuwe sub 4
$subdir8 = $subdir5 . "/" . $subfile5;
$opensubdir8 = opendir($subdir8);
$totaal4 = "0";
while ($subfile8 = readdir($opensubdir8)) {
if (is_dir($subdir8 . "/" . $subfile8) AND ($subfile8 != "")) {
$totaal4 = $totaal4 + "1";
}
}
if ($totaal4 != "2") {
echo "<ul>";
}
$subdir7 = $subdir5 . "/" . $subfile5;
$opensubdir7 = opendir($subdir7);
while ($subfile7 = readdir($opensubdir7)) {
if (is_dir($subdir7 . "/" . $subfile7) AND ($subfile7 != "") AND ($subfile7 != "..") AND ($subfile7 != ".")) {
echo "<li><a href=\"documenten.php?docsmap=" . $subdir7 . "/" . $subfile7 . "\" target=\"main\">" . $subfile7 . "</a></li>";
}
}
if ($totaal4 != "2") {
echo "</ul>";
}
//einde sub 4
}
}
if ($totaal3 != "2") {
echo "</ul>";
}
// einde sub 3
}
}
if ($totaal2 != "2") {
echo "</ul>";
}
// einde sub 2
}
}
if ($totaal != "2") {
echo "</ul>";
// einde sub 1
}
}
}
}
echo "</ul>";
?>
$dir = $_SERVER['DOCUMENT_ROOT'] . "/intranet";
if (is_dir($dir)) {
$opendir = opendir($dir);
while($file = readdir($opendir)) {
if (is_dir($dir . "/" . $file) AND ($file != "..") AND ($file != ".")) {
echo "<li><a href=\"documenten.php?docsmap=" . $dir . "/" . $file . "\" target=\"main\">" . $file . "</a></li>";
// sub 1
$subdir2 = $dir . "/" . $file;
$opensubdir2 = opendir($subdir2);
$totaal = "0";
while ($subfile2 = readdir($opensubdir2)) {
if (is_dir($subdir2 . "/" . $subfile2) AND ($subfile2 != "")) {
$totaal = $totaal + "1";
}
}
if ($totaal != "2") {
echo "<ul>";
}
$subdir = $dir . "/" . $file;
$opensubdir = opendir($subdir);
while ($subfile = readdir($opensubdir)) {
if (is_dir($subdir . "/" . $subfile) AND ($subfile != "") AND ($subfile != "..") AND ($subfile != ".")) {
echo "<li><a href=\"documenten.php?docsmap=" . $subdir . "/" . $subfile . "\" target=\"main\">" . $subfile . "</a></li>";
// nieuwe sub 2
$subdir4 = $subdir . "/" . $subfile;
$opensubdir4 = opendir($subdir4);
$totaal2 = "0";
while ($subfile4 = readdir($opensubdir4)) {
if (is_dir($subdir4 . "/" . $subfile4) AND ($subfile4 != "")) {
$totaal2 = $totaal2 + "1";
}
}
if ($totaal2 != "2") {
echo "<ul>";
}
$subdir3 = $subdir . "/" . $subfile;
$opensubdir3 = opendir($subdir3);
while ($subfile3 = readdir($opensubdir3)) {
if (is_dir($subdir3 . "/" . $subfile3) AND ($subfile3 != "") AND ($subfile3 != "..") AND ($subfile3 != ".")) {
echo "<li><a href=\"documenten.php?docsmap=" . $subdir3 . "/" . $subfile3 . "\" target=\"main\">" . $subfile3 . "</a></li>";
// nieuwe sub 3
$subdir6 = $subdir3 . "/" . $subfile3;
$opensubdir6 = opendir($subdir6);
$totaal3 = "0";
while ($subfile6 = readdir($opensubdir6)) {
if (is_dir($subdir6 . "/" . $subfile6) AND ($subfile6 != "")) {
$totaal3 = $totaal3 + "1";
}
}
if ($totaal3 != "2") {
echo "<ul>";
}
$subdir5 = $subdir3 . "/" . $subfile3;
$opensubdir5 = opendir($subdir5);
while ($subfile5 = readdir($opensubdir5)) {
if (is_dir($subdir5 . "/" . $subfile5) AND ($subfile5 != "") AND ($subfile5 != "..") AND ($subfile5 != ".")) {
echo "<li><a href=\"documenten.php?docsmap=" . $subdir5 . "/" . $subfile5 . "\" target=\"main\">" . $subfile5 . "</a></li>";
// nieuwe sub 4
$subdir8 = $subdir5 . "/" . $subfile5;
$opensubdir8 = opendir($subdir8);
$totaal4 = "0";
while ($subfile8 = readdir($opensubdir8)) {
if (is_dir($subdir8 . "/" . $subfile8) AND ($subfile8 != "")) {
$totaal4 = $totaal4 + "1";
}
}
if ($totaal4 != "2") {
echo "<ul>";
}
$subdir7 = $subdir5 . "/" . $subfile5;
$opensubdir7 = opendir($subdir7);
while ($subfile7 = readdir($opensubdir7)) {
if (is_dir($subdir7 . "/" . $subfile7) AND ($subfile7 != "") AND ($subfile7 != "..") AND ($subfile7 != ".")) {
echo "<li><a href=\"documenten.php?docsmap=" . $subdir7 . "/" . $subfile7 . "\" target=\"main\">" . $subfile7 . "</a></li>";
}
}
if ($totaal4 != "2") {
echo "</ul>";
}
//einde sub 4
}
}
if ($totaal3 != "2") {
echo "</ul>";
}
// einde sub 3
}
}
if ($totaal2 != "2") {
echo "</ul>";
}
// einde sub 2
}
}
if ($totaal != "2") {
echo "</ul>";
// einde sub 1
}
}
}
}
echo "</ul>";
?>
</body>
</html>
<script type="text/javascript">
var listMenu = new FSMenu('listMenu', true, 'display', 'block', 'none');
listMenu.animations[listMenu.animations.length] = FSMenu.animFade;
listMenu.animations[listMenu.animations.length] = FSMenu.animSwipeDown;
var arrow = null;
if (document.createElement && document.documentElement)
{
arrow = document.createElement('span');
arrow.appendChild(document.createTextNode('>'));
arrow.className = 'subind';
}
addEvent(window, 'load', new Function('listMenu.activateMenu("listMenuRoot", arrow)'));
</script>
Voorbeeldje:
Code (php)
edit:
Misschien dat je hiermee wat verder komt:
Code (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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
error_reporting(E_ALL);
print_r(lees_dir('c:/map/'));
function lees_dir( $_sFullPathDir )
{
if( !is_dir($_sFullPathDir) || !($rDirHandle = opendir($_sFullPathDir)) )
{
return array();
}
$aResult = array();
while( $sFile = readdir($rDirHandle) )
{
if( $sFile == '.' || $sFile == '..' )
{
continue;
}
if( is_file($_sFullPathDir . $sFile) )
{
$aResult[$sFile] = $_sFullPathDir . $sFile;
}
elseif( is_dir($_sFullPathDir . $sFile) )
{
$aResult[$sFile] = lees_dir($_sFullPathDir . $sFile);
}
}
# Sleutels sorteren
ksort($aResult);
closedir($rDirHandle);
return $aResult;
}
?>
error_reporting(E_ALL);
print_r(lees_dir('c:/map/'));
function lees_dir( $_sFullPathDir )
{
if( !is_dir($_sFullPathDir) || !($rDirHandle = opendir($_sFullPathDir)) )
{
return array();
}
$aResult = array();
while( $sFile = readdir($rDirHandle) )
{
if( $sFile == '.' || $sFile == '..' )
{
continue;
}
if( is_file($_sFullPathDir . $sFile) )
{
$aResult[$sFile] = $_sFullPathDir . $sFile;
}
elseif( is_dir($_sFullPathDir . $sFile) )
{
$aResult[$sFile] = lees_dir($_sFullPathDir . $sFile);
}
}
# Sleutels sorteren
ksort($aResult);
closedir($rDirHandle);
return $aResult;
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
Hey bedankt voor je vlotte reactie! Maar waar plaats ik dan die functie van jou in dit script. Ik ben zelf echt helemaal nieuw in php. Die vriend die me hielp het script te maken is op vakantie. Zou je jou code erin willen plakken waar jij denkt dat ie werkt? Ik krijg hier namelijk foutmeldingen en moet en deathline halen :(. Alvast bedankt voor je hulp!
Je moet van het resultaat van lees_dir nog een lijst maken dit zou je op dezelfde manier kunnen doen als in de functien lees_array.
Ik heb inmiddels zelf natuurlijk ook wat geprobeerd met de tip die je me gaf. Ik krijg alleen maar errors. Ik weet zeker dat het aan mij ligt want ik kan zelf weinig tot niks met php. Kan iemand de code die ik boven toon met daar een oplossing in om nummeriek te sorteren terug posten? Het is niet omdat ik te lui ben maar simpel weg omdat ik het (nog) niet kan en in tijd gebrek zit.
Code (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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
error_reporting(E_ALL);
$aResultaat = lees_dir('c:/map/');
//print_r($aResultaat);
laatzien($aResultaat);
function laatzien( $_aArray )
{
echo '<ul>';
foreach( $_aArray as $k => $v )
{
//print_r($_aArray);
if( is_array($v) )
{
echo '<li>naam:' . $k;
laatzien($v);
echo '</li>';
}
else
{
echo '<li>naam: ' . $k . ' pad: ' . $v . '</li>';
}
}
echo '</ul>';
}
function lees_dir( $_sFullPathDir )
{
if( !is_dir($_sFullPathDir) || !($rDirHandle = opendir($_sFullPathDir)) )
{
return array();
}
$aResult = array();
while( $sFile = readdir($rDirHandle) )
{
if( $sFile == '.' || $sFile == '..' )
{
continue;
}
if( is_file($_sFullPathDir . $sFile) )
{
$aResult[$sFile] = $_sFullPathDir . $sFile;
}
else
{
$aResult[$sFile] = lees_dir($_sFullPathDir . $sFile . '/');
}
}
# Sleutels sorteren
ksort($aResult);
closedir($rDirHandle);
//print_r($aResult);
return $aResult;
}
?>
error_reporting(E_ALL);
$aResultaat = lees_dir('c:/map/');
//print_r($aResultaat);
laatzien($aResultaat);
function laatzien( $_aArray )
{
echo '<ul>';
foreach( $_aArray as $k => $v )
{
//print_r($_aArray);
if( is_array($v) )
{
echo '<li>naam:' . $k;
laatzien($v);
echo '</li>';
}
else
{
echo '<li>naam: ' . $k . ' pad: ' . $v . '</li>';
}
}
echo '</ul>';
}
function lees_dir( $_sFullPathDir )
{
if( !is_dir($_sFullPathDir) || !($rDirHandle = opendir($_sFullPathDir)) )
{
return array();
}
$aResult = array();
while( $sFile = readdir($rDirHandle) )
{
if( $sFile == '.' || $sFile == '..' )
{
continue;
}
if( is_file($_sFullPathDir . $sFile) )
{
$aResult[$sFile] = $_sFullPathDir . $sFile;
}
else
{
$aResult[$sFile] = lees_dir($_sFullPathDir . $sFile . '/');
}
}
# Sleutels sorteren
ksort($aResult);
closedir($rDirHandle);
//print_r($aResult);
return $aResult;
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Lennart
Regel 2 wel verwijderen.
Op regel 4 'c:/map/' vervangen door de directory die je wil laten zien.
Dus je heb het hele script vervangen?
Maar kan er niet in het script wat ik heb een commando worden toegevoegt dat hij het menu of de directory die hij uitleest in numerieke volgorde kan zetten?
Iemand een idee?
Waarom gebruik je heen GLOB(), ik zie allemaal wazige stukjes code boven mij terwijl het allemaal zo simpel kan. En wat bedoel je met numerieke volgorde?
http://www.phphulp.nl/php/scripts/1/1149/
Ik zou sowieso eens daar naar kijken. En daarnaast een mooi stukje code (liefst OO) maken dat de directies uitleest.
edit:
Numerieke volgorde kan ook simpel denk ik door <ol> te gebruiken inplaatsvan <ul>. (ol=ordered list)
Ik zou sowieso eens daar naar kijken. En daarnaast een mooi stukje code (liefst OO) maken dat de directies uitleest.
edit:
Numerieke volgorde kan ook simpel denk ik door <ol> te gebruiken inplaatsvan <ul>. (ol=ordered list)
Gewijzigd op 01/01/1970 01:00:00 door kees Schepers
Dus als voorbeeld;
01 algeen
02 engineering
03 administratie.
Zoals het script nu werkt mikt ie zonder cijfers ze niet op alfabet en met cijfers krijg je ongeveer dit:
06
01
05
08
Eerst in een array() inlezen, dan sorteren en pas daarna op het scherm zetten.
Maar hoe plaats ik dat al in de huidige code. Ik heb de code niet zelf gemaakt maar een vriend van me. Die is op vakantie en ik zit met en deathline. Kan iemand mijn code kopieren en plakken en dan met een sorteer code erin?
Gewijzigd op 01/01/1970 01:00:00 door Crispijn -
Lol, maar voor dat soort opmerkingen plaatste ik niet bericht voor hulp.
Niemand die kan helpen :(