Oneindige loop
Ik heb een klein probleempje. Zie denk ik iets kleins over het hoofd.
Ik krijg een oneindige loop bij het volgende script:
photoseries.php:
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 ($handle = opendir('photoseries')) {
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && $file != "thumbs") {
echo '<li class="sub"><a href="index.php?page=Photoseries&series='.ucfirst($file).'">'.ucfirst($file).'</a></li>';
}
}
//switch
$series = $_GET['series'];
if ($file != "." && $file != ".." && $file != "thumbs" && file != ".") {
switch($series){
case ucfirst($file): include "".$file."index.php" ; break;
default: include "" ; break ; }
}
//switch
}
closedir($handle);
?>
if ($handle = opendir('photoseries')) {
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && $file != "thumbs") {
echo '<li class="sub"><a href="index.php?page=Photoseries&series='.ucfirst($file).'">'.ucfirst($file).'</a></li>';
}
}
//switch
$series = $_GET['series'];
if ($file != "." && $file != ".." && $file != "thumbs" && file != ".") {
switch($series){
case ucfirst($file): include "".$file."index.php" ; break;
default: include "" ; break ; }
}
//switch
}
closedir($handle);
?>
Bovenstaand script / fotoseries.php word steeds herhaalt. Ik zie alleen niet waarom... Wie o wie kan mij helpen?
Volgens mij klopt die while statment ook niet regel 4.
Ik zie echt de fout niet. De while lijkt prima. Je kunt ook effe proberen met glob()
Weet je zeker dat het aan die loop ligt?
[zeurmodus]
Ik vind je code niet echt uitblinken in leesbaarheid.
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
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
<?php
if ($handle = opendir('photoseries'))
{
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != ".." && $file != "thumbs")
{
echo '<li class="sub"><a href="index.php?page=Photoseries&series='.ucfirst($file).'">'.ucfirst($file).'</a></li>';
}
}
//switch
$series = $_GET['series'];
if ($file != "." && $file != ".." && $file != "thumbs" && file != ".")
{
switch($series)
{
case ucfirst($file):
include "".$file."index.php" ;
break;
default:
include "" ;
break ;
}
}
//switch
}
closedir($handle);
?>
if ($handle = opendir('photoseries'))
{
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != ".." && $file != "thumbs")
{
echo '<li class="sub"><a href="index.php?page=Photoseries&series='.ucfirst($file).'">'.ucfirst($file).'</a></li>';
}
}
//switch
$series = $_GET['series'];
if ($file != "." && $file != ".." && $file != "thumbs" && file != ".")
{
switch($series)
{
case ucfirst($file):
include "".$file."index.php" ;
break;
default:
include "" ;
break ;
}
}
//switch
}
closedir($handle);
?>
Eigenlijk is de naam van deze pagina index.php?p=Photoseries.
Daarvoor gebruik ik een simpele switch, net zoals bovenstaand gebruikt.
Zou dit er op een manier mee te maken kunnen hebben?
[zeurmodus]
Mwa, vind het nog wel aardig leesbaar hoor :)
Maar is het niet de bedoeling dat je stukje van //switch ... //switch
1 haak omhoog moet omdat je de while afsluit dan bij de switch wilt kijken naar $file ...
Geprobeerd, maar maakt geen verschil...
Edit:
Ik weet het inmiddels, dit was het probleem:
Ik moest die opendir en while gewoon apart nog een keer doen voor die switch.
Bedankt!
Ik weet het inmiddels, dit was het probleem:
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
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
<?php
if ($handle = opendir('photoseries')) {
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && $file != "thumbs") {
echo '<li class="sub"><a href="index.php?page=Photoseries&series='.ucfirst($file).'">'.ucfirst($file).'</a></li>';
}
}
}
closedir($handle);
if ($handle = opendir('photoseries')) {
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
//switch
$series = $_GET['series'];
if ($file != "." && $file != ".." && $file != "thumbs" && file != ".") {
switch($series){
case ucfirst($file): include "".$file."index.php" ; break;
default: echo "" ; break ; }
}
//switch
}
}
closedir($handle);
?>
if ($handle = opendir('photoseries')) {
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
if ($file != "." && $file != ".." && $file != "thumbs") {
echo '<li class="sub"><a href="index.php?page=Photoseries&series='.ucfirst($file).'">'.ucfirst($file).'</a></li>';
}
}
}
closedir($handle);
if ($handle = opendir('photoseries')) {
/* This is the correct way to loop over the directory. */
while (false !== ($file = readdir($handle))) {
//switch
$series = $_GET['series'];
if ($file != "." && $file != ".." && $file != "thumbs" && file != ".") {
switch($series){
case ucfirst($file): include "".$file."index.php" ; break;
default: echo "" ; break ; }
}
//switch
}
}
closedir($handle);
?>
Ik moest die opendir en while gewoon apart nog een keer doen voor die switch.
Bedankt!
Gewijzigd op 01/01/1970 01:00:00 door Luke Banning
Doe dan zoiets:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if ($handle = opendir('photoseries'))
{
$strIncludeFile = null;
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != ".." && $file != "thumbs")
{
echo '<li class="sub"><a href="index.php?page=Photoseries&series='.ucfirst($file).'">'.ucfirst($file).'</a></li>';
if($_GET['series'] == ucfirst($file)) $strIncludeFile = $file."index.php";
}
}
if(!is_null($strIncludeFile)) include $strIncludeFile;
}
closedir($handle);
?>
if ($handle = opendir('photoseries'))
{
$strIncludeFile = null;
while (false !== ($file = readdir($handle)))
{
if ($file != "." && $file != ".." && $file != "thumbs")
{
echo '<li class="sub"><a href="index.php?page=Photoseries&series='.ucfirst($file).'">'.ucfirst($file).'</a></li>';
if($_GET['series'] == ucfirst($file)) $strIncludeFile = $file."index.php";
}
}
if(!is_null($strIncludeFile)) include $strIncludeFile;
}
closedir($handle);
?>
Als je een lege string gaat includen, include dan niet! Waarom een lege string voor de $file?? Dat voegt totaal niets toe.
Gewijzigd op 01/01/1970 01:00:00 door storeman storeman
Benny heeft wel een point. Want nu zit er in $file bij de switch altijd de laatste waarde uit de while.
Hm.. BIj mij hiero werkt het gewoon hoor... (PHP 5.2)
waar komt file (niet $file, maar file aan het eind van die regel vandaan?
Dat zal niet de oplossing zijn, maar dat klopt volgens mij ook niet.
De manier zoals Luke het al doet is de juiste, en werkt prima.
Als ik dat foutje er uit haal dat Robert opmerkte werkt hij ook.