while Schleife mit Zähler?
Lothar
- php
Hi,
wenn ich mir die Dateien eines Verzeichnisses auflisten lassen möchte, kann ich ja mit:
<?php
if ($handle = opendir('.')) {
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != "..") {
echo "$file\n";
}
}
closedir($handle);
}
?>
selbiges machen. Da es aber zuviele Dateien sein werden, möchte ich in der URL Anfangswert und Endwert als Parameter übergeben.
Nur wo und wie begrenze ich eine while-schleife mit i=0 und i++ und so?
In einer for-schleife kenn ich das, aber in einer while-shleife? Geht das?
Grüße, Lothar
Hi,
in der while-Schleife musst du das inkrementieren selbst übernehmen und den Endwert als zusätzlichen Abbruch hinzufügen, also
$i = $startwert
while ((false !== ($file = readdir($handle)) ) && ($i < $endwert)) {
$i++;
...
MfG
Rouven
Hi,
in der while-Schleife musst du das inkrementieren selbst übernehmen und den Endwert als zusätzlichen Abbruch hinzufügen, also
$i = $startwert
while ((false !== ($file = readdir($handle)) ) && ($i < $endwert)) {
$i++;
Hi Rouven,
oh...so einfach :-| Peinlich, peinlich ;-)
Danke Dir,
Lothar
Hi,
in der while-Schleife musst du das inkrementieren selbst übernehmen und den Endwert als zusätzlichen Abbruch hinzufügen, also
$i = $startwert
while ((false !== ($file = readdir($handle)) ) && ($i < $endwert)) {
$i++;
so begrenzt du die Anzahl der einzulesenden Dateien, der Startwert ist aber egal, d. h. Startwert 5 und Endwert 10 ist das gleiche wie Startwert 10 und Endwert 15. Das ist aber nicht gewünscht. Ich würde sowas vorschlagen:
for($i=0;$i<$startwert;$i++) readdir($handle);
for($i=$startwert; $i<$endwert && (false !== ($file = readdir($handle))); $i++)
{
...
}
Schöne Grüße
Julian
so begrenzt du die Anzahl der einzulesenden Dateien, der Startwert ist aber egal, d. h. Startwert 5 und Endwert 10 ist das gleiche wie Startwert 10 und Endwert 15. Das ist aber nicht gewünscht. Ich würde sowas vorschlagen:
Oh yes, you're right...
MfG
Rouven
hi,
so begrenzt du die Anzahl der einzulesenden Dateien, der Startwert ist aber egal, d. h. Startwert 5 und Endwert 10 ist das gleiche wie Startwert 10 und Endwert 15. Das ist aber nicht gewünscht.
Es muss nur noch dafür gesorgt werden, dass erst dann, wenn der Zählerstand den Startwert erreicht hat, die gelesenen Einträge auch verarbeitet werden.
Ich würde sowas vorschlagen:
Klar, geht auch.
while und for sind ja sowieso fast immer austauschbar.
Aber while finde ich an dieser Stelle doch irgendwie intuitiver und für einen Einsteiger leichter verständlich.
gruß,
wahsaga
echo $begrüßung;
Nur wo und wie begrenze ich eine while-schleife mit i=0 und i++ und so?
Lass die while vollständig durchlaufen, zähle mit und wenn sich dieser Zähler zwischen $von uns $bis befindet gib aus, was auch immer du darstellen willst. Wenn der Zähler den $bis-Wert überschritten hat kannst du die while-Schleife auch ganz abbrechen.
echo "$verabschiedung $name";
Hello,
Lass die while vollständig durchlaufen, zähle mit und wenn sich dieser Zähler zwischen $von uns $bis befindet gib aus, was auch immer du darstellen willst. Wenn der Zähler den $bis-Wert überschritten hat kannst du die while-Schleife auch ganz abbrechen.
Das ist aber ggf. nicht reproduzierbar.
Er wird das gesamte Verzeichnis auslesen, dies zwischenspeichern und das zwischengespeicherte Ergebnis dann blockweise ausgeben müssen.
Das Directory-Listung könnte sich (je nach Betriebssystem und Betrieb auf der Platte) nämlich von einer Abfrage zur anderen verändern in Reihenfolge und Anzahl.
Harzliche Grüße vom Berg
http://www.annerschbarrich.de
Tom
Hallo Lothar,
<?php
$dir=array();
$spa=50; # wieviel Namen ausgegeben werden sollen
if([link:http://de3.php.net/manual/de/function.substr.php@title=substr]([link:http://de3.php.net/manual/de/function.phpversion.php@title=phpversion](),0,1)=='5'){
$dir=[link:http://de3.php.net/manual/de/function.scandir.php@title=scandir]('.');
}
else{
if($d=[link:http://de3.php.net/manual/de/function.opendir.php@title=opendir]('.')){
while(false!==($file=[link:http://de3.php.net/manual/de/function.readdir.php@title=readdir]($d))){
if ($file!="." && $file!=".."){
$dir[]=$file;
}
}
[link:http://de3.php.net/manual/de/function.closedir.php@title=closedir]($d);
}
}
if(!empty($dir)){
echo "<dir>";
for($i=$_SERVER['QUERY_STRING'];$i<($_SERVER['QUERY_STRING']+$spa);$i++){
if(!isset($dir[$i])){
break;
}
echo "<li>".$dir[$i]."</li>";
}
echo '</dir><a href="'.$_SERVER['PHP_SELF'].'?'.($_SERVER['QUERY_STRING']+$spa).'">weiter</a>';
}
?>
Gruß aus Berlin!
eddi