07. oktober 2005 - 11:31
Der er
21 kommentarer og 2 løsninger
Vise mappeindhold med slettefunktion
Jeg vil godt kunne vise en mappes indhold, lidt a´la dette her: <? $maindir = "." ; $mydir = opendir($maindir) ; $exclude = array( "index.php") ; while($fn = readdir($mydir)) { if ($fn == $exclude[0] || $fn == $exclude[1]) continue; echo "<br><font size='1' face='Verdana'><a href='$fn'>$fn</a>"; } closedir($mydir); exit; ?> Det er selvfølgelig bare en index der viser alt andet end sig selv. Det jeg tænker på, er en php fil uden for mappen som viser mappens indhold samtidig med at der er et afkrydsningsfelt ud for hvert filnavn. De enkelte filer kan så markeres og slettes når der klikkes på en send-knap.
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
07. oktober 2005 - 12:59
#1
hvis du smider et afkrysnings felt med hver filnavn i valuen så får du et array med filnavnene der skal slettes og det array kan du så løbe igennem og unlink() de filer
07. oktober 2005 - 13:02
#2
<? $maindir = "." ; $mydir = opendir($maindir); $exclude = array( "index.php"); while($fn = readdir($mydir)) { if ($fn == $exclude[0] || $fn == $exclude[1]) continue; echo "<br><font size='1' face='Verdana'><a href='$fn'>$fn</a> <input type=\"checkbox\" name=\"slet\" value=\"$fn\">"; } closedir($mydir); exit; ?>
07. oktober 2005 - 13:59
#3
Jeg er selv kommet "næsten" lige så langt. bare med nedenstående. Hvordan laver leg løkken der finder de markerede og sletter dem ? $maindir = "." ; $mydir = opendir($maindir) ; $exclude = array( "index.php") ; while($fn = readdir($mydir)) { if ($fn == $exclude[0] || $fn == $exclude[1]) continue; echo "<br><font size='1' face='Verdana'><input type='checkbox' name=$fn value='ON'><a href='$fn'>$fn</p>"; } closedir($mydir);
07. oktober 2005 - 14:00
#4
leg=jeg
07. oktober 2005 - 15:26
#5
Jeg rettede lige lidt i din version, så afkrydsningsfeltet står foran filnavnet. Men jeg kan ikke se, hvordan jeg får samlet filnavnene op bagefter ??
07. oktober 2005 - 15:26
#6
hov... glemte at paste > <? $maindir = "." ; $mydir = opendir($maindir); $exclude = array( "index.php"); while($fn = readdir($mydir)) { if ($fn == $exclude[0] || $fn == $exclude[1]) continue; echo "<br> <input type=\"checkbox\" name=\"slet\" value=\"$fn\"><font size='1' face='Verdana'><a href='$fn'>$fn</a> "; } closedir($mydir); exit; ?>
07. oktober 2005 - 15:42
#7
prøv dette foreach ($slet as $fil) { unlink($fil); print $fil." er slettet"; }
07. oktober 2005 - 16:40
#8
Jeg prøvede lige sådan her, men det virker ikke: <form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"> <? $maindir = "." ; $mydir = opendir($maindir); $exclude = array( "index.php"); while($fn = readdir($mydir)) { if ($fn == $exclude[0] || $fn == $exclude[1]) continue; echo "<br> <input type=\"checkbox\" name=\"slet\" value=\"$fn\"><font size='1' face='Verdana'><a href='$fn'>$fn</a> "; } closedir($mydir); echo "<p><input type='submit' value='Send' name='B1'><input type='reset' value='Nulstil' name='B2'></p>"; echo "</form>"; echo "Sletter filer"; foreach ($slet as $fil) { unlink($fil); print $fil." er slettet"; } exit; ?>
07. oktober 2005 - 16:56
#9
Det er da vist noget rod jeg har skrevet der... :o/
07. oktober 2005 - 17:54
#10
ja du skal lige lave et check om formen er submittet før du sletter filer if ($_POST[slet]) { foreach ($slet as $fil) { unlink($fil); print $fil." er slettet"; } } elseif ($_POST[submit]) { echo "vælg en fil makker!"; }
07. oktober 2005 - 18:09
#11
Sådan her ? <form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"> <? $maindir = "." ; $mydir = opendir($maindir); $exclude = array( "index.php"); while($fn = readdir($mydir)) { if ($fn == $exclude[0] || $fn == $exclude[1]) continue; echo "<br> <input type=\"checkbox\" name=\"slet\" value=\"$fn\"><font size='1' face='Verdana'><a href='$fn'>$fn</a> "; } closedir($mydir); echo "<p><input type='submit' value='Send' name='B1'><input type='reset' value='Nulstil' name='B2'></p>"; echo "</form>"; if ($_POST[slet]) { foreach ($slet as $fil) { unlink($fil); print $fil." er slettet"; } } elseif ($_POST[submit]) { echo "vælg en fil makker!"; } exit; ?>
07. oktober 2005 - 18:29
#12
tja det ser nogenlunde rigtigt ud smid et par $_POST[] ind hist og her hvis det er ellers bare afprøv det og se om den laver kage i det hele
08. oktober 2005 - 00:02
#13
Jeg har ikke været hjemme så jeg har ikke testet før nu. Der sker ikke ret meget, faktisk sker der ikke en sk.. :o))
08. oktober 2005 - 00:06
#14
foreach ($slet as $fil) { Har du prøve at bruge $_POST[slet] i stedet for $slet her? Som den er der, kræver den linie at register_globals er slået til, hvilket normalt frarådes kraftigt. Desuden bør du nok flytte if ($_POST[slet]) { foreach ($slet as $fil) { unlink($fil); print $fil." er slettet"; } } elseif ($_POST[submit]) { echo "vælg en fil makker!"; } ind FØR du begynder at lede efter filer, da den i den der udformning først fjerner dem EFTER den har gået igennem dem alle.
08. oktober 2005 - 22:28
#15
Jeg er altså stået helt og aldeles af her :o)) Lige nu ser koden sådan her. Listen vises korrekt, der er checkboxe. Men der sker ikke en dyt når jeg prøver at slette en fil.. <form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"> <? $maindir = "." ; $mydir = opendir($maindir); $exclude = array( "index.php"); while($fn = readdir($mydir)) { if ($fn == $exclude[0] || $fn == $exclude[1]) continue; echo "<br> <input type=\"checkbox\" name=\"slet\" value=\"$fn\"><font size='1' face='Verdana'><a href='$fn'>$fn</a> "; } closedir($mydir); echo "<p><input type='submit' value='Send' name='B1'><input type='reset' value='Nulstil' name='B2'></p>"; echo "</form>"; if ($_POST[slet]) { foreach ($_POST[slet] as $fil) { unlink($fil); print $fil." er slettet"; } } elseif ($_POST[submit]) { echo "vælg en fil makker!"; } exit; ?>
08. oktober 2005 - 22:32
#16
if ($_POST[slet]) { foreach ($_POST[slet] as $fil) { unlink($fil); print $fil." er slettet"; } } elseif ($_POST[submit]) { echo "vælg en fil makker!"; } Flyt det der op før $maindir = "." ;, da filerne ellers først bliver slettet efter den har løbet dem igennem. Hvis det stadig ikke virker, så prøv at sætte error_reporting(E_ALL); øverst i dit script og se om den melder nogle fejl.
08. oktober 2005 - 22:41
#17
Følgende: <form enctype="multipart/form-data" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post"> <? error_reporting(E_ALL); if ($_POST[slet]) { foreach ($_POST[slet] as $fil) { unlink($fil); print $fil." er slettet"; } } elseif ($_POST[submit]) { echo "vælg en fil makker!"; } $maindir = "." ; $mydir = opendir($maindir); $exclude = array( "index.php",".", ".."); while($fn = readdir($mydir)) { if ($fn == $exclude[0] || $fn == $exclude[1]) continue; echo "<br> <input type=\"checkbox\" name=\"slet\" value=\"$fn\"><font size='1' face='Verdana'><a href='$fn'>$fn</a> "; } closedir($mydir); echo "<p><input type='submit' value='Send' name='B1'><input type='reset' value='Nulstil' name='B2'></p>"; echo "</form>"; exit; ?> giver disse fejl: Notice: Use of undefined constant slet - assumed 'slet' in /hsphere/local/home/xx/xx.com/test/fil/4.php on line 5 Notice: Undefined index: slet in /hsphere/local/home/xx/xx.com/test/fil/4.php on line 5 Notice: Use of undefined constant submit - assumed 'submit' in /hsphere/local/home/xx/xx.com/test/fil/4.php on line 10 Notice: Undefined index: submit in /hsphere/local/home/xx/xx.com/test/fil/4.php on line 10
08. oktober 2005 - 22:45
#18
Godt, de fejl ville jeg også forvente med det script. Det er ikke strengt taget nødvendigt at du fixer disse, så du kan godt fjerne den error_reporting linie igen. Tror i øvrigt jeg ser fejlen nu... <input type=\"checkbox\" name=\"slet\" value=\"$fn\"> Der skal stå slet[], ikke bare slet. Ellers ved PHP ikke at der er tale om et array.
08. oktober 2005 - 22:50
#19
OH YES :o)) Det hjalp en hel del... Jeg rettede forresten $exclude = array( "index.php",".", ".."); for at undgå . og .. i toppen. Men det er kun . der bliver skjult. Kan jeg ikke skjule både . og .. ? Og svar så lige begge 2 :o)
08. oktober 2005 - 22:56
#20
Personligt ville jeg nok bare gøre det her: while($fn = readdir($mydir)) { if (is_file($fn) && $fn!="index.php") echo "<br> <input type=\"checkbox\" name=\"slet\" value=\"$fn\"><font size='1' face='Verdana'><a href='$fn'>$fn</a> "; } såfremt du ikke skal bruge biblioteker til dit script. Men ellers hedder det: while($fn = readdir($mydir)) { if ($fn == $exclude[0] || $fn == $exclude[1] || $fn == exclude[2]) continue; echo "<br> <input type=\"checkbox\" name=\"slet\" value=\"$fn\"><font size='1' face='Verdana'><a href='$fn'>$fn</a> "; } da du har *tre* elementer i dit $exclude array ;)
08. oktober 2005 - 22:58
#21
En mere holdbar løsning ville dog være at bruge en eller anden funktion der kontrollerer om et bestemt element findes i $exclude arrayet. Jeg mener der er en i PHP, men jeg kan ikke lige huske hvad den hedder.
08. oktober 2005 - 23:13
#22
OK. Tak for hjælpen. Jeg venter lige med points indtil dmdisco har svaret også :o)
09. oktober 2005 - 16:19
#23
svar
Vi tilbyder markedets bedste kurser inden for webudvikling