Oneindige loop
He allen,
Ik heb een klein probleempje. Zie denk ik iets kleins over het hoofd.
Ik krijg een oneindige loop bij het volgende script:
photoseries.php:
Bovenstaand script / fotoseries.php word steeds herhaalt. Ik zie alleen niet waarom... Wie o wie kan mij helpen?
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()
Volgens mij is het whilestatement helemaal okee. Ik heb hem zelf ook een aantal keren op dezelfde manier in gebruik.
Weet je zeker dat het aan die loop ligt?
[zeurmodus]
Ik vind je code niet echt uitblinken in leesbaarheid.
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);
?>
Nou het kan ook aan een andere switch liggen misschien.
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 :)
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 :)
Ik kan misschien nu echt liggen te slapen.
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 ...
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 ...
Benny:
Geprobeerd, maar maakt geen verschil...
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
Dat is natuurlijk dramatisch voor je performance.
Doe dan zoiets:
Als je een lege string gaat includen, include dan niet! Waarom een lege string voor de $file?? Dat voegt totaal niets toe.
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)
if ($file != "." && $file != ".." && $file != "thumbs" && file != ".") {
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.
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.
@Leroy
De manier zoals Luke het al doet is de juiste, en werkt prima.
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.




