Localhost
Ik had een vraag. Ik heb namelijk een script die alle mappen uit de zelfde directory laat zien en er een hyperlink van maakt:
Code (php)
Nu wou ik graag het rangschikken op de beginletter (functie: substr($file, 0, 1)).
Nu krijg ik dus boven elke map de beginletter te zien. Deze beginletter mag natuurlijk maar 1x laten zien worden. Het eindresultaat zou zoiets moeten komen er uit te zien:
A
-----------------------
aiddblabla
alibi
allemaal
B
----------------------
Boom
b...
C
----------------------
Citroen
Cinema
etc.etc.
Alvast hartelijk dank,
Melroy van den Berg
Gewijzigd op 01/01/1970 01:00:00 door Melroy van den Berg
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
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
<?php
if ($dir = @opendir(".")) {
while (false!==($file = readdir($dir))) {
if ($file != "." && $file != "..") {
$file_array[] = $file;
}
}
closedir($dir);
}
//file_array orderen op alfabet =>
sort($file_array);
reset($file_array);
$tmp_first_letter = "";
foreach ($file_array as $file) {
$first_letter = strtolower(substr($file, 0, 1));
if ($first_letter != $tmp_first_letter) {
echo "<br><B>".$first_letter."</B><hr>";
$tmp_first_letter = $first_letter;
}
echo $file;
}
?>
edit => ; vergeten
tmp_first_letter uit de foreach gegooid sry
if ($dir = @opendir(".")) {
while (false!==($file = readdir($dir))) {
if ($file != "." && $file != "..") {
$file_array[] = $file;
}
}
closedir($dir);
}
//file_array orderen op alfabet =>
sort($file_array);
reset($file_array);
$tmp_first_letter = "";
foreach ($file_array as $file) {
$first_letter = strtolower(substr($file, 0, 1));
if ($first_letter != $tmp_first_letter) {
echo "<br><B>".$first_letter."</B><hr>";
$tmp_first_letter = $first_letter;
}
echo $file;
}
?>
edit => ; vergeten
tmp_first_letter uit de foreach gegooid sry
Gewijzigd op 01/01/1970 01:00:00 door Sab Kriksdeegir
probeer sowieso dit eens.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
if ($dir = @opendir(".")) {
//while (false!==($file = readdir($dir))) { // is gelijk aan $file = readdir($dir)
// dus:
$files = array();
while($file = readdir($dir)) {
// nu gaan we alles in een array douwen
if ($file != "." && $file != "..") {
array_push($files, $file);
}
}
sort($files);
// bestanden zijn nu gesorteerd op alfabetische volgorde
foreach($files as $key => $waarde) {
// nu moeten we dus kijken bij welke waarde hij hoort...
// wat een oplossing kan zijn een multidemensionale array. Maar dat moet makkelijker kunnen.
// Dus ik laat het even open
}
closedir($dir);
}
?>
if ($dir = @opendir(".")) {
//while (false!==($file = readdir($dir))) { // is gelijk aan $file = readdir($dir)
// dus:
$files = array();
while($file = readdir($dir)) {
// nu gaan we alles in een array douwen
if ($file != "." && $file != "..") {
array_push($files, $file);
}
}
sort($files);
// bestanden zijn nu gesorteerd op alfabetische volgorde
foreach($files as $key => $waarde) {
// nu moeten we dus kijken bij welke waarde hij hoort...
// wat een oplossing kan zijn een multidemensionale array. Maar dat moet makkelijker kunnen.
// Dus ik laat het even open
}
closedir($dir);
}
?>
is gewoon een flag variable in je script gooien ;)
stel je hebt
ahha => tmp_first_letter = A => header printen
abba => tmp_first_letter = A => header niet printen
abbc => tmp_first_letter = A => header niet printen
bbba => tmp_first_letter = B => header printen
Ceret => tmp_first_letter = C => header printen
Maar.. :(
@Tommy bij jouw script
Eerst sorteerde hij eerst beter op alfabet? En ik krijg boven elke map met een beginletter a een a te zien.
Oftewel:
a
-----------------------------------------------------
admin
a
-----------------------------------------------------
apache
a
-----------------------------------------------------
alfa
In plaats van:
a
-----------------------------------------------------
admin
apache
alfa
enz.
Gewijzigd op 01/01/1970 01:00:00 door Melroy van den Berg
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
if ($dir = @opendir(".")) {
while (false!==($file = readdir($dir))) {
if ($file != "." && $file != "..") {
$file_array[] = $file;
}
}
closedir($dir);
}
//sort($file_array);
//reset($file_array);
$tmp_first_letter = "";
foreach ($file_array as $file) {
$first_letter = strtolower(substr($file, 0, 1));
if ($first_letter != $tmp_first_letter) {
echo "<br><B>".$first_letter."</B><hr>";
$tmp_first_letter = $first_letter;
}
echo "<a href='".$file."'>".$file."</a><BR>";
}
?>
if ($dir = @opendir(".")) {
while (false!==($file = readdir($dir))) {
if ($file != "." && $file != "..") {
$file_array[] = $file;
}
}
closedir($dir);
}
//sort($file_array);
//reset($file_array);
$tmp_first_letter = "";
foreach ($file_array as $file) {
$first_letter = strtolower(substr($file, 0, 1));
if ($first_letter != $tmp_first_letter) {
echo "<br><B>".$first_letter."</B><hr>";
$tmp_first_letter = $first_letter;
}
echo "<a href='".$file."'>".$file."</a><BR>";
}
?>
Raar genoeg moest ik sort() en reset() uitschakelen, want daardoor werkt het juist niet alfabetisch gesorteerd? (geen idd wat hij dan wel deed?)
Het werkt...
kan met een gerust hart gaan slapen :)
enjoy the script ;)
Bedankt :)
@Melroy: dit is ook een handige methode, mijns inziens ;)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
if ($dir = @opendir(".")) {
while (false !== ($file = readdir($dir))) {
if ($file != "." && $file != "..") {
$file_array[ucfirst(substr($file, 0, 1))][] = $file;
}
}
closedir($dir);
}
ksort($file_array);
foreach ($file_array as $letter => $woorden) {
echo '
<h2>'.$letter.'</h2>
<hr />
'.implode('<br />'.PHP_EOL, $woorden);
}
?>
if ($dir = @opendir(".")) {
while (false !== ($file = readdir($dir))) {
if ($file != "." && $file != "..") {
$file_array[ucfirst(substr($file, 0, 1))][] = $file;
}
}
closedir($dir);
}
ksort($file_array);
foreach ($file_array as $letter => $woorden) {
echo '
<h2>'.$letter.'</h2>
<hr />
'.implode('<br />'.PHP_EOL, $woorden);
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Marvin S
Domme vraag maar waarom onderdrukt voor zover ik heb gezien iedereen bij open dir zijn errors?