stian90_2 Skrevet 14. januar 2006 Del Skrevet 14. januar 2006 (endret) Hei, er det noen som vet hva php koden for å telle antall filer i en mappe og skrive dem ut ? skulle gjerne hatt det til et profil script, der alle profiler ligger i en mappe, og da kan jeg enkelt bare skrive "det er 'antall' profiler på siden" ? På forhånd takk for svar.. Endret 16. januar 2006 av stianiquniez Lenke til kommentar
Jesper Karsrud Skrevet 14. januar 2006 Del Skrevet 14. januar 2006 (endret) I hovedsak bruker du count() for å telle antall ting, men det må litt mer til for å finne ut hvor mange filer som ligger i en mappe. Prøv å les litt på php.net også, der ligger det nok noe Edit: Skrev noe raskt. Visning av filene får du nesten finne ut selv, skal ike være noe problem nå <?php $path = "mappe"; $files = "0"; $handle = opendir($path); while ($file = readdir($handle)) { if (!is_dir($path."/".$file) && $file != "." && $file != "..") { $extension = explode(".",$file); $extension_i = (count($extension) - 1); $ext = $extension[$extension_i]; if ($ext == true) { $profiles[$files] = $file; $files++; } } } echo "<p>Det er $files profiler i mappen</p>"; ?> Endret 14. januar 2006 av Jibril2k Lenke til kommentar
stian90_2 Skrevet 14. januar 2006 Forfatter Del Skrevet 14. januar 2006 Hvordan kan jeg chmode filer via xampp ? eller gjøres det automatisk, kjører alle disse scriptene på pc. holder på med en side som skal bli lagt ut, så kjører ikke på nett ? noen som vet, for med det scriptet Jibril2k så kom følgende feilmelding: Warning: opendir(profil) [function.opendir]: failed to open dir: Invalid argument in D:\Programfiler\xampp\htdocs\home\inc\profil.php on line 16 Warning: readdir(): supplied argument is not a valid Directory resource in D:\Programfiler\xampp\htdocs\home\inc\profil.php on line 17 Det er 4 profiler i mappen Lenke til kommentar
Cizza Skrevet 14. januar 2006 Del Skrevet 14. januar 2006 En enklere løsning er å bruke glob() sammen med count(). Koden vil da se slik ut: <?php $profiles_dir = "/sti/til/profiler/"; $files = count(glob("{$profiles_dir}*")); print("<p>Det er {$files} profiler i mappen.</p>"); ?> Du har også muligheten for å velge hvilke filer den skal lete etter. Det gjør du ved å endre "*" til for eksempel "*.php". Denne forandringen gjør at undermapper ikke blir regnet med i resultatet. En annen løsning for å fjerne undermapper er følgende kode: <?php $profiles_dir = "/sti/til/profiler/"; $files = count(glob("{$profiles_dir}*")) - count(glob("{$profiles_dir}*", GLOB_ONLYDIR)); print("<p>Det er {$files} profiler i mappen.</p>"); ?> Lenke til kommentar
stian90_2 Skrevet 15. januar 2006 Forfatter Del Skrevet 15. januar 2006 Hmm, noe jeg gjør galt eller, ? for den skriver bare at det er 1 profil, og det ligger 4 filer i mappen ? Lenke til kommentar
Jesper Karsrud Skrevet 15. januar 2006 Del Skrevet 15. januar 2006 Hmm.. Du kan vel alltids koble deg på lokalserver med FTP? Da skal det funke med CHMOD i hvertfall... Test det, for skriptet mitt skal funke det, testet det etter jeg la det ut. Lenke til kommentar
stian90_2 Skrevet 15. januar 2006 Forfatter Del Skrevet 15. januar 2006 hvordan gjør jeg det ? måtte du chmodde ? Lenke til kommentar
Jesper Karsrud Skrevet 15. januar 2006 Del Skrevet 15. januar 2006 Nei, jeg måtte ikke chmodde noen ting, så det er litt merkelig at den ikke fungerer. Du skrev bare inn mappenavnet, ikke sant, ikke full sti til mappen? Kunne kanskje hjulpet å se koden din.Kan sikkert ta det over PM hvis du ikke vil vise den her. Ang. tilkobling til FTP på localhost må du vel skru på FTPen som følger med xampp, koble deg til localhost som server, og evt. brukernavn og passord du har på serveren. Lenke til kommentar
stian90_2 Skrevet 15. januar 2006 Forfatter Del Skrevet 15. januar 2006 Slik ser koden min ut komplett <?php $p = $_GET['id']; if (!empty($p)) { if (file_exists("inc/profil/$p.php")) include "inc/profil/$p.php"; else echo "finner ikke profil"; } else { echo "venligst velg profil <br /><a href=\"index.php?page=profil&msg=antall\">Vis antall profiler</a><br/>"; } if ($_GET['msg']=="antall") { $path = "profil"; $files = "0"; $handle = opendir($path); while ($file = readdir($handle)) { if (!is_dir($path."/".$file) && $file != "." && $file != "..") { $extension = explode(".",$file); $extension_i = (count($extension) - 1); $ext = $extension[$extension_i]; if ($ext == true) { $profiles[$files] = $file; $files++; } } } echo "<p>Det er $files profiler i mappen</p>"; } ?> Lenke til kommentar
tussiesel Skrevet 15. januar 2006 Del Skrevet 15. januar 2006 I begynnelsen av scriptet inkluderer du profiler fra inc/profil/, mens du litt senere setter $path = "profil". Sikker på at det ikke skal være inc/profil der også? -Simen Lenke til kommentar
stian90_2 Skrevet 15. januar 2006 Forfatter Del Skrevet 15. januar 2006 har prøvd, skjedda akuratt det samme. Lenke til kommentar
tussiesel Skrevet 15. januar 2006 Del Skrevet 15. januar 2006 Jeg tror du skal prøve med / til slutt, altså $path = "inc/profil/"; Det ser ihvertfall slik ut i manualen. Husk å forandre if-setningen også. -Simen Lenke til kommentar
Jesper Karsrud Skrevet 15. januar 2006 Del Skrevet 15. januar 2006 Det er ikke nødvendig. Om han har filen i mappen inc, så skal det ikke være nødvendig med mer enn mappenavnet inni inc/, altså profil. Lenke til kommentar
stian90_2 Skrevet 15. januar 2006 Forfatter Del Skrevet 15. januar 2006 Hva er det egentlig med meg og skrive feil sti. Det funka når jeg skrev inc/profil Andre gang jeg gjorde samme feil på denne profil siden.. Nå funker det perfekt Nå som jeg har tallet blir det lettere, nå skal jeg begynne og undersøke hvordan den kan liste opp filene uten endelsen .php ^^ Lenke til kommentar
tussiesel Skrevet 15. januar 2006 Del Skrevet 15. januar 2006 Så fint at det funker . Du kan jo for eksempel begynne med å se på substr for å fjerne de siste fire tegnene. Du bør også lese om readdir, slik du gjør det nå vil en fil som heter '0' gjøre at while-løkka avsluttes. -Simen Lenke til kommentar
stian90_2 Skrevet 15. januar 2006 Forfatter Del Skrevet 15. januar 2006 (endret) Aha, det funker jo flotters dette her, nå har jeg fått liste over alle filene, uten .php men sist. (hehe, skal prøve og ikke mase mer nå^^ ) finnes det noen måte jeg kan legge link på alle navnene, blir slik <a href="index.php?page=profil&id=meg">meg</a><br /> <a href="index.php?page=profil&id=deg">deg</a><br /> <a href="index.php?page=profil&id=andre">andre</a><br /> Endret 15. januar 2006 av stianiquniez Lenke til kommentar
Jesper Karsrud Skrevet 15. januar 2006 Del Skrevet 15. januar 2006 Nå vet jeg ikke helt hvordan koden din ser ut nå, men det skal ikke være verre enn å gjøre noe som dette: echo "<li><a href="index.php?page=profil&id=\"$profil\">$profil</a></li>"; Det er ihvertfall noe sånt det må bli Lenke til kommentar
stian90_2 Skrevet 16. januar 2006 Forfatter Del Skrevet 16. januar 2006 slik ser koden min ut : <?php $p = $_GET['id']; if (!empty($p)) { if (file_exists("inc/profil/$p.php")) include "inc/profil/$p.php"; else echo "finner ikke profil"; } //KOMMET OPP OM DET IKKE ER VALGT NOEN PROFIL else { echo "venligst velg profil<br /><br />"; $path = "inc/profil"; $files = "0"; $handle = opendir($path); while ($file = readdir($handle)) { if (!is_dir($path."/".$file) && $file != "." && $file != "..") { $extension = explode(".",$file); $extension_i = (count($extension) - 1); $ext = $extension[$extension_i]; if ($ext == true) { $profiles[$files] = $file; $files++; } } } echo "Det er $files profiler på serveren.<br />"; echo "<b>og det er </b><br />"; if ($handle = opendir('./inc/profil')) { while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $rest = substr("$file\n", 0, -5); echo "$rest<br />"; } } closedir($handle); } } ?> så det må bli noe i echo " $rest "; men vet ikke hvordan jeg skal skrive det, er litt ny med php ^^ Lenke til kommentar
stian90_2 Skrevet 16. januar 2006 Forfatter Del Skrevet 16. januar 2006 (endret) glem det, fikk det til og fungere med linja echo "<a href='index.php?page=profil&id=$rest'>$rest</a><br />"; Endret 16. januar 2006 av stianiquniez Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå