[PHP] Functie eindresultaat als variable gebruiken

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Nooto
  • Registratie: Augustus 2003
  • Laatst online: 19-09 09:53
Hoi ik heb een probleem met een van mijn php pagina's. Ik wilde namelijk het eindresultaat van de onderstaande functie gebruiken als een variabele die ik dan in een html template kan gebruiken.

print.php
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
function Timelapsed(){ 
global $days, $hours, $minutes;

if ($days < 1) {
echo "";
} elseif ($days == 1) {
echo "$days dag";
} else {
echo "$days dagen";
}

if ($hours < 1) {
echo "";
} else {
echo "$hours uur ";
}

if ($minutes == 1) {
echo "$minutes minuut";
} else {
echo "$minutes minuten";
}
}


Het eind resultaat kan ik bekijken door hetvolgende te doen:
code:
1
echo (Timelapsed());

Dit werkt gewoon goed.
Ik krijg nu bijvoorbeeld de waarde

5 uur 43 minuten

helemaal bovenaan mijn scherm, met dan daaronder pas de html template met de rest van m'n pagina waar overigens. Alleen ik wil 'm dus niet bovenaan de pagina hebben maar ergens in een tabel in mijn template. Hoe krijg ik dus die waarde van 5 uur 43 minuten in een variabele, waarna ik 'm in mijn html template kan proppen. Of kan dat niet met functies.

Wat ik wel heb geprobeerd is bijvoorbeeld
code:
1
$test = "Timelapsed()";


Maar dan zie ik gewoon in m'n browser staan Timelapsed() op de juiste plaats op de html pagina.

Acties:
  • 0 Henk 'm!

  • ripexx
  • Registratie: Juli 2002
  • Laatst online: 17-09 20:52

ripexx

bibs

Je wilt toch gewoon het resultaat van Timelapsed() toewijzen aan $test of niet? Daan gewoon de quotes weg halen. :) Want nu wordt Timelapsed() gezien als een string en niet as een functie aanroep. :)

buit is binnen sukkel


Acties:
  • 0 Henk 'm!

Verwijderd

Binnen je functie Timelapsed():
vervang alle echo's door return's (zie RedRose)

Verder is het dan:
$test = Timelapsed();

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Komop. Wil je het resultaat van Timelapsed() hebben, of de string met daarin Timelapsed? Haal dus die "'s er eens om weg.
Je mist trouwens een e.

Verder zul je binnen je functie het resultaat moeten opbouwen en dit vervolgens terug moeten geven.

[ Voor 27% gewijzigd door Janoz op 27-05-2004 16:33 ]

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Kort samengevat: in plaats van echo in de functie een string opbouwen met de waarden die je nu echo-t, en onderaan je functie een return $string; toevoegen. Dan kun je gewoon $var = functienaam(); gebruiken als je dat wil.
edit:
Enorme spuit 11

[ Voor 7% gewijzigd door NMe op 27-05-2004 16:31 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • WhiskyPhreak
  • Registratie: Augustus 2002
  • Laatst online: 06:09
$time = $days." " .$hours." ". $minutes ;
return $time;


dan kun je dus later bijv:

$tijd = Timelapsed();

doen

Zo zou het afaik moeten werken

Acties:
  • 0 Henk 'm!

Verwijderd

Nooto schreef op 27 mei 2004 @ 16:26:
code:
1
echo (Timelapsed());

Dit werkt gewoon goed.
Ik krijg nu bijvoorbeeld de waarde

5 uur 43 minuten
ghihihi, Timelapsed(); zal het zelfde resultaat geven maar dat terzijde.

probeer dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function Timelapsed(){ 
global $days, $hours, $minutes;
$output="";
if ($days == 1) {
$output= "$days dag";
} else {
$output="$days dagen";
}

if ($hours >= 1) {
$output.= "$hours uur ";
}

if ($minutes == 1) {
$output.="$minutes minuut";
} else {
$output.="$minutes minuten";
}
return $output
}

Acties:
  • 0 Henk 'm!

  • nnomiS
  • Registratie: Oktober 2000
  • Laatst online: 19-09 22:37
In plaats van dat je de tijd echo'ed maak je 1 string en daar voeg je eerst het aantal dagen aan toe dan aantal uren en dan minuten en vervolgens return je die zin. Waar je dan in je html de tijd wil laten zien doe je
PHP:
1
<?=Timelapsed()?>
en dan zou het goed moeten gaan :)

wheops ik ben ondertussen spuit 12 ofzo

[ Voor 10% gewijzigd door nnomiS op 27-05-2004 16:33 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 27 mei 2004 @ 16:32:
[...]


ghihihi, Timelapsed(); zal het zelfde resultaat geven maar dat terzijde.

probeer dit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function Timelapsed(){ 
global $days, $hours, $minutes;
$output="";
if ($days == 1) {
$output= "$days dag";
} elseif ($days > 1) {
$output="$days dagen";
}

if ($hours >= 1) {
$output.= "$hours uur ";
}

if ($minutes == 1) {
$output.="$minutes minuut";
} else {
$output.="$minutes minuten";
}
return $output
}

Acties:
  • 0 Henk 'm!

  • Nooto
  • Registratie: Augustus 2003
  • Laatst online: 19-09 09:53
Whow wat een replies, thx iedereen.

Die wat blaat_schaap had gegeven deed het perfect :)

thanx _/-\o_

Acties:
  • 0 Henk 'm!

Verwijderd

Kan ik me niet voorstellen, want er mist een ";" achter "return $output" :P

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Nooto schreef op 27 mei 2004 @ 16:39:
Whow wat een replies, thx iedereen.

Die wat blaat_schaap had gegeven deed het perfect :)

thanx _/-\o_
Zomaar klakkeloos overnemen helpt je niet he? Begrijp je wat er gebeurt? Neem ook eens goed die link van RedRose door, en doe nog wat meer tutorials ofzo, want je mist toch een stuk basiskennis.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Pathogen
  • Registratie: April 2004
  • Laatst online: 15-09 10:06

Pathogen

Shoop Da Whoop

Verwijderd schreef op 27 mei 2004 @ 16:43:
Kan ik me niet voorstellen, want er mist een ";" achter "return $output" :P
het leuke is: bij return wil dat nog wel eens lukken ook! niet dat het goed is natuurlijk, maar return sluit automatischje functie af dus is een ; niet per se nodig om het werkende te krijgen

Acties:
  • 0 Henk 'm!

Verwijderd

Thrackan schreef op 28 mei 2004 @ 11:49:
[...]


het leuke is: bij return wil dat nog wel eens lukken ook! niet dat het goed is natuurlijk, maar return sluit automatischje functie af dus is een ; niet per se nodig om het werkende te krijgen
Nou, ik heb het zelf ff getest, en mijn php 4.3.4 doet het echt niet zonder die ; hoor :)

Acties:
  • 0 Henk 'm!

Verwijderd

Verwijderd schreef op 28 mei 2004 @ 15:29:
[...]

Nou, ik heb het zelf ff getest, en mijn php 4.3.4 doet het echt niet zonder die ; hoor :)
[blaat mode]
het was eigenlijk als test bedoelt of hij ook wist wat ie deed :9
[/blaat]

maar inderdaad zoals andere al zeiden.. je moet het niet zomaar over nemen want dit is echt iets wat je zelf zou moeten kennen als je ook maar iets in php gaat doen.
Pagina: 1