while functie werkt niet goed.
Ik heb een while functie gemaakt waarmee ik meerdere foto's tegelijk kan printen. Deze werkt prima alleen achter elke foto komt een 1 te staan. Weet iemand misschien waardoor dit komt?
dit is de Script die ik heb:
function gal(){
$count = 1;
$nul = 0;
$aantal = 5;
while($count <= $aantal){
$fotos = print("<img src=\"fotos/foto" . "$nul" . "$nul" . "$count" . ".jpg\" />");
print $fotos;
$count++;
}
}
Alvast bedankt.
$fotos = print("<img src=\"fotos/foto" . "$nul" . "$nul" . "$count" . ".jpg\" />");
print $fotos;
print in je $fotos, dus je print de print ook nog eens keer, probeer de print IN $fotos eens weg te halen dus;
$fotos = <img src=\"fotos/foto" . "$nul" . "$nul" . "$count" . ".jpg\" />;
print $fotos;
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
function gal($aantal = 5)
{
$return = null; //we maken een variabele aan zodat we geen notice krijgen wanneer we in de while $var .= willen doen
for($i=1; $i<=$aantal; $i++) //We beginnen bij i = 1, zolang $i kleiner is dan $aantal gaan we verder en iedere ronde verhogen we $i met 1
{
if(file_exists('fotos/foto00'.$aantal.'.jpg')) //als het bestand bestaat
{
$return .= '<img src="fotos/foto00'.$aantal.'.jpg />'; //dan toevoegen aan de variabele $return
}
}
return $return; //tenslote de afbeeldingen returnen zodat we de afbeeldingen te zien krijgen als we de functie echoen
}
echo gal();
?>
function gal($aantal = 5)
{
$return = null; //we maken een variabele aan zodat we geen notice krijgen wanneer we in de while $var .= willen doen
for($i=1; $i<=$aantal; $i++) //We beginnen bij i = 1, zolang $i kleiner is dan $aantal gaan we verder en iedere ronde verhogen we $i met 1
{
if(file_exists('fotos/foto00'.$aantal.'.jpg')) //als het bestand bestaat
{
$return .= '<img src="fotos/foto00'.$aantal.'.jpg />'; //dan toevoegen aan de variabele $return
}
}
return $return; //tenslote de afbeeldingen returnen zodat we de afbeeldingen te zien krijgen als we de functie echoen
}
echo gal();
?>
edit:
Even wat commentaar toegevoegd
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
PHP Newbie schreef op 30.01.2009 00:02:
Die 1 komt niet door dit stuk code.. Maar wat dacht je hiervan ter verbetering van het bovenstaande:
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
function gal($aantal = 5)
{
$return = null;
for($i=1; $i<=$aantal; $i++)
{
if(file_exists('fotos/foto00'.$aantal.'.jpg'))
{
$return .= '<img src="fotos/foto00'.$aantal.'.jpg />';
}
}
return $return;
}
echo gal();
?>
function gal($aantal = 5)
{
$return = null;
for($i=1; $i<=$aantal; $i++)
{
if(file_exists('fotos/foto00'.$aantal.'.jpg'))
{
$return .= '<img src="fotos/foto00'.$aantal.'.jpg />';
}
}
return $return;
}
echo gal();
?>
Inderdaad een stuk beter, overzichtelijker, maar misschien beter als hij doorgaat op de manier die hij begrijpt, ongetwijfeld begrijpt hij later meer van PHP en zal hij vanzelf de gevorderde manier gebruiken. Iets doen zonder te weten wat het allemaal inhoudt heeft geen zin. Maar het zou zo inderdaad beter zijn (als je het begrijpt).
Kan ik trouwens ook de $aantal automatisch laten bepalen door het aantal .jpg bestanden te laten tellen in de map fotos?
Thijs van den Berg schreef op 30.01.2009 00:19:
Hartstikke bedankt voor de snelle reacties. Ik zie nu wat ik fout deed. En die verbeterde code ga ik eerst nog wat beter bestuderen.
Kan ik trouwens ook de $aantal automatisch laten bepalen door het aantal .jpg bestanden te laten tellen in de map fotos?
Kan ik trouwens ook de $aantal automatisch laten bepalen door het aantal .jpg bestanden te laten tellen in de map fotos?
Dat is precies wat PHP newbie gedaan heeft, if file_exists -> als het bestand bestaat echo'd hij hem, anders doet hij niks...
Ik zie dat PHP newbie een beetje anders gedaan heeft; hier een voorbeeldje:
Code (php)
1
2
3
4
5
2
3
4
5
<?
$nummertje=0;
while(file_exists('afb'.$nummertje.'.jpg')){
?><img src="afb<?=$nummertje?>.jpg"><?$nummertje++;}
?>
$nummertje=0;
while(file_exists('afb'.$nummertje.'.jpg')){
?><img src="afb<?=$nummertje?>.jpg"><?$nummertje++;}
?>
Je begint dus bij afb0.jpg
Als die bestaat wordt die weergegeven, vervolgens wordt er 1 bij nummertje opgeteld en krijg je dus afb1.jpg, zo gaat hij door tot er eentje niet bestaat, bijv afb20.jpg bestaat niet, dan laat hij de eerste 19 wel zien, en stopt hij vanzelf bij afb19.jpg.
Ik hoop dat je het zo een beetje snapt ;)
Gewijzigd op 01/01/1970 01:00:00 door Jasper Sni
Zie edit.
En dat staat er ergens return is dat hetzelfde als echo of print?
Voorbeeld:
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
30
31
32
33
34
35
36
37
38
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
30
31
32
33
34
35
36
37
38
<?php
$variabel = 'Hello ';
echo $variabel;
$variabel .= 'World';
echo $variabel;
// Geeft:
// Hello
// Hello World
.= kun je ook anders opschrijven:
[code][code]<?php
$variabel = 'Hello ';
echo $variabel;
$variabel = $variabel . 'World';
echo $variabel;
// Geeft:
// Hello
// Hello World
Maar .= is korter
return zorgt ervoor dat je het kunt echoen of printen. Het plaatst op zichzelf niks op het scherm. Het zorgt ervoor dat hetgeen wat als output is van de functie doorgegeven kan worden.
Voorbeeld:
[code][code]<?php
function hello()
{
return 'Hello!!!!';
// nog geen output
}
echo hello();
// nu pas output
function hoi()
{
echo 'Hoi!!!!';
// direct output wanneer aangeroepen wordt
}
hoi();
// de output verschijnt[/code]
$variabel = 'Hello ';
echo $variabel;
$variabel .= 'World';
echo $variabel;
// Geeft:
// Hello
// Hello World
.= kun je ook anders opschrijven:
[code][code]<?php
$variabel = 'Hello ';
echo $variabel;
$variabel = $variabel . 'World';
echo $variabel;
// Geeft:
// Hello
// Hello World
Maar .= is korter
return zorgt ervoor dat je het kunt echoen of printen. Het plaatst op zichzelf niks op het scherm. Het zorgt ervoor dat hetgeen wat als output is van de functie doorgegeven kan worden.
Voorbeeld:
[code][code]<?php
function hello()
{
return 'Hello!!!!';
// nog geen output
}
echo hello();
// nu pas output
function hoi()
{
echo 'Hoi!!!!';
// direct output wanneer aangeroepen wordt
}
hoi();
// de output verschijnt[/code]
Gewijzigd op 01/01/1970 01:00:00 door GaMer B
bedankt voor de uitleg, ik snap hem nu helemaal. :)
Let even op dat een functie stopt bij een return.
Code (php)
Dit zal dus "iets" op je scherm zetten en niet "iets extras".