while functie werkt niet goed.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Thijs van den Berg

Thijs van den Berg

29/01/2009 23:45:00
Quote Anchor link
Hallo,

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.
 
PHP hulp

PHP hulp

22/11/2024 22:24:18
 
Jasper Sni

Jasper Sni

29/01/2009 23:59:00
Quote Anchor link
Kijk eens naar je print, je print dubbel.

$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;
 
PHP Newbie

PHP Newbie

30/01/2009 00:02:00
Quote Anchor link
Je print in een variabele. Zoals je op php.net kunt lezen zal print altijd 1 returnen. Maar wat dacht je van dit als verbetering:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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();
?>


edit:
Even wat commentaar toegevoegd
Gewijzigd op 01/01/1970 01:00:00 door PHP Newbie
 
Jasper Sni

Jasper Sni

30/01/2009 00:05:00
Quote Anchor link
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)
PHP script in nieuw venster Selecteer het PHP script
1
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();
?>


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).
 
Thijs van den Berg

Thijs van den Berg

30/01/2009 00:19:00
Quote Anchor link
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?
 
Jasper Sni

Jasper Sni

30/01/2009 00:23:00
Quote Anchor link
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?


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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?
$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
 
PHP Newbie

PHP Newbie

30/01/2009 08:12:00
Quote Anchor link
Zie edit.
 
Thijs van den Berg

Thijs van den Berg

30/01/2009 13:35:00
Quote Anchor link
Ik snap hem alleen nog een paar dingetjes. Er staat ergens .= en dat ie het dan toevoegt aan de variabele, maar hoe werkt dat?
En dat staat er ergens return is dat hetzelfde als echo of print?
 
GaMer B

GaMer B

30/01/2009 13:45:00
Quote Anchor link
.= betekent dat hetgeen wat er achter staat wordt toegevoegd aan de variabel.

Voorbeeld:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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]
Gewijzigd op 01/01/1970 01:00:00 door GaMer B
 
Thijs van den Berg

Thijs van den Berg

30/01/2009 14:05:00
Quote Anchor link
bedankt voor de uitleg, ik snap hem nu helemaal. :)
 
PHP Newbie

PHP Newbie

31/01/2009 14:36:00
Quote Anchor link
En je zet dus nooit een echo in een functie. Je returnt de waarden zodat je de functie daar kan echoen waar je hem wilt hebben.

Let even op dat een functie stopt bij een return.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
function bla()
{

$var = 'iets';

return $var;

$var .= ' extras';

return $var;
}


echo bla();
?>


Dit zal dus "iets" op je scherm zetten en niet "iets extras".
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.