Το scandir τοπικά

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από panos78 » 09 Απρ 2006 16:30

Η scandir διαβάζει τον ορισμένο φάκελο που βρίσκεται στον Server και δίνει σε ακολουθία (array) τη λίστα με τα αρχεία που βρίσκονται μέσα.
Αυτό μπορεί να γίνει σε τοπικό φάκελο του χρήστη;
Για να γίνω πιο σαφής:
Έστω ότι έχω εναν φάκελο στο σκληρό μου δίσκο (στο C) με όνομα files.
Μέσα σε αυτό το φάκελο υπάρχουν 100 αρχεία.
Αν γράψω:

Κώδικας: Επιλογή όλων

<?php
$files = scandir&#40;C&#58;\files&#41;;
$total_files = count&#40;$files&#41;;
echo $total_files;
?>
Θα μου βγάλει το 100 ή όχι;
Ευχαριστώ για τις απαντήσεις σας.
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από cpulse » 09 Απρ 2006 16:39

Θα σου βγάλει 102 γιατί θεωρεί ως αρχεία και τα . και ..
. = current directory
.. = parent directory

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από panos78 » 09 Απρ 2006 16:42

Αυτό που λες διορθώνετε εύκολα.
Το θέμα είναι να μπορεί να λειτουργεί τοπικά.
Από ό,τι λες μάλλον λειτουργεί.
Ευχαριστώ.
:)

Κάτι ακόμα:
Έχω μια σειρά από αριθμός από το 1 μέχρι το 100.
Πως μπορώ να τους κάνω όλους τριψήφιους;
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από cpulse » 09 Απρ 2006 17:04

for ($i =1 ; $i <= 100; $i++) echo sprintf('%03u', $i); 8)

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Το scandir τοπικά

Δημοσίευση από fafos » 09 Απρ 2006 17:11

Opos exeis ton kodika gia to count den nomizo oti tha doulepsei toulaxiston topika.. kanonika prepei na ginei kapos etsi..

Κώδικας: Επιλογή όλων

<?php
$dir = "C&#58;/files";
$dh  = opendir&#40;$dir&#41;;
while &#40;false !== &#40;$filename = readdir&#40;$dh&#41;&#41;&#41; &#123;
   $files&#91;&#93; = "$filename";
&#125;
echo count&#40;$files, COUNT_RECURSIVE&#41;;

?> 
Tora gia ta parapano pou metraei den einai apolyto auto afou allou vriskei 2 parapano allote 3 kai allote kanena... einai ena provlhma...

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από cpulse » 09 Απρ 2006 17:15

fafo και σε αυτόν τον κώδικα πρέπει να προσέξεις τα . και ..

Κώδικας: Επιλογή όλων

<?php
$dir = "C&#58;/files";
$dh  = opendir&#40;$dir&#41;;
while &#40;false !== &#40;$filename = readdir&#40;$dh&#41;&#41;&#41; &#123;
   if &#40;$filename != '.' && $filename != '..'&#41; $files&#91;&#93; = "$filename";
&#125;
echo count&#40;$files, COUNT_RECURSIVE&#41;;

?>

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6231
Εγγραφή: 30 Νοέμ 2004 03:09

Το scandir τοπικά

Δημοσίευση από fafos » 09 Απρ 2006 17:56

Sostos o cpulse.. to mono provlhma einai oti an thelei na apeikonosh ta files se array ( sort($files); ) den tha vlepei thn eksodo h thn eisodo se alla folders..
Auto vevea se periptosh pou feiaxnei ena navigation ton fakelon tou.. an thelei aplos na pairnei ton arithmo ton periexomenon h diorthosei pou ekanes arkei..

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από panos78 » 09 Απρ 2006 18:00

Μόνο τον αριθμό των αρχείων θέλω.
Για τον σταθερό αριθμό ψηφίων βρήκα το str_pad!
Απλά μετά θα χρησιμοποιήσω το ftp_put για να ανεβάσω τα συγκεκριμένα αρχεία στο Server.
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από panos78 » 10 Απρ 2006 00:26

Προέκυψε πρόβλημα.
Η εντολή μου μετράει και τους υποφακέλους.
Πως μπορώ να τους αποκλείσω ώστε να μετράει μόνο τα αρχεία του εν λόγω φακέλου;
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από cpulse » 10 Απρ 2006 00:50

Κώδικας: Επιλογή όλων

<?php
$dir = 'C&#58;/files';
$handle  = opendir&#40;$dir&#41;;
$count = 0;
while &#40;false !== &#40;$filename = readdir&#40;$handle&#41;&#41;&#41; if &#40;$filename != '.' && $filename != '..' && is_file&#40;$dir . '/' . $filename&#41;&#41; $count++;
closedir&#40;$handle&#41;;

echo $count;

?>
:)

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από panos78 » 10 Απρ 2006 01:07

Ευχαριστώ!
Παραθέτω τον κώδικα που χρησιμοποιώ για την scandir:

Κώδικας: Επιλογή όλων

function scandir&#40;$dir = './', $sort = 0&#41; 
&#123;
	$dir_open = @ opendir&#40;$dir&#41;;
	if &#40;! $dir_open&#41; return false;
	while &#40;&#40;$dir_content = readdir&#40;$dir_open&#41;&#41; !== false&#41;
	if&#40;!is_dir&#40;$dir_content&#41; && is_file&#40;$dir.'/'.$dir_content&#41;&#41;
	&#123;
		$files&#91;&#93; = $dir_content;
	&#125;
	if &#40;$sort == 1&#41; rsort&#40;$files, SORT_STRING&#41;;
	else sort&#40;$files, SORT_STRING&#41;;
	return $files; 
&#125;
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από panos78 » 10 Απρ 2006 12:55

Πάλι πρόβλημα.
Ελπίζω να μην γίνομαι κουραστικός.
Η παραπάνω διαδικασία λειτουργεί μόνο όταν ανοίγω τον παραπάνω κώδικα τοπικά στον υπολογιστή μου.
όταν τον ανεβάζω στον Server δεν μπορεί να διαβάσει τον φάκελο στο δίσκο μου.
Τι μπορώ να κάνω;
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από cpulse » 10 Απρ 2006 14:03

Από το $dir_open = @ opendir($dir); βγάλε το @ για να εμφανιστούν τα error messages. Το ποιο πιθανό είναι κανένα open_basedir restriction.

Άβαταρ μέλους
panos78
Δημοσιεύσεις: 535
Εγγραφή: 15 Φεβ 2003 02:14
Τοποθεσία: Θεσσαλονικη
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από panos78 » 10 Απρ 2006 14:08

opendir(D:\Test): failed to open dir: No such file or directory in /home/www/username/html/test.php on line 4.
Αυτό το σφάλμα μου βγάζει!
:)
Εν οίδα ότι ουδέν οίδα.
Η Μακεδονία είναι Ελλάδα.
Εικόνα

Άβαταρ μέλους
cpulse
Script Master
Δημοσιεύσεις: 1527
Εγγραφή: 21 Μαρ 2006 19:30
Τοποθεσία: Αθήνα village
Επικοινωνία:

Το scandir τοπικά

Δημοσίευση από cpulse » 10 Απρ 2006 14:19

D:\Test δεν μπορεί να υπάρχει σε linux σύστημα.. άρα κάτι πάει λάθος με την παραμέτρο $dir όταν καλείς το scandir()

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες