[PHP] Functie die functie aanroept verliest z'n waarde

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Nu online

me1299

$ondertitel

Topicstarter
Ik heb de volgende attributen:

bestand f.inc.php met o.a de volgende code:

PHP:
1
2
3
4
5
6
7
8
9
10
function f_output($output_string) {

    //die($output_string);

    if($default_print == 0) {
        Return ($output_string);    
    } else {
        print($output_string);
    }
}


En ook

PHP:
1
2
3
function f_closeform() {
    f_output("</form>");
}


Als ik bijvoorbeeld in een bestand dit zet:

PHP:
1
2
3
include("f.inc.php");

f_closeform();


Dan krijg ik geen output.

Nu komt dat omdat binnen de functie f_output de variable $output_string niet bekend is.

Weet iemand misschien hoe het komt dat $output_string binnen de functie f_output geen waarde heeft?

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

Verwijderd

hoezo heeft ie geen waarde, hoe weet je dat?

denk je misschien niet dat </form> niet zichtbaar is als je de pagina zo aanroept? Kijk eens in de bron?

Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Vergeten we $default_print niet ? .. die is onbekend.

Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Nu online

me1299

$ondertitel

Topicstarter
Verwijderd schreef op 09 december 2002 @ 16:59:
hoezo heeft ie geen waarde, hoe weet je dat?

denk je misschien niet dat </form> niet zichtbaar is als je de pagina zo aanroept? Kijk eens in de bron?
ik heb uiteraard allang in de bron gekeken, en daar staat het niet.

En zoals je ziet heb ik er een die in staan (weg gecommenteerd dat wel) en daarmaa heb ik gecontroleerd of er zo'i'zo wel een waarde in $output_string staat.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Nu online

me1299

$ondertitel

Topicstarter
Grum schreef op 09 December 2002 @ 17:01:
Vergeten we $default_print niet ? .. die is onbekend.
Die staat bovenaan in het script, maar dat is verder niet relevant. Ik kan jullie wel heel de source geven, maar daardoor wordt het voor jullie alleen maar meer onnodige tekst om door te lezen.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Wat ? .. niet relevant ? Dan luister je toch niet :X

Zo als jij je code nu hebt returned hij op Regel 5 BLok 1 de $output_string omdat $default_print gelijk is aan 0.

Zet eens in de functie f_closeform het woordje print voor f_output( ... ) en kijk eens wat er gebeurd.

Waarschijnlijk kunnen we dit daarna afsluiten :)

Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Nu online

me1299

$ondertitel

Topicstarter
Grum schreef op 09 december 2002 @ 17:06:
Wat ? .. niet relevant ? Dan luister je toch niet :X
Rustig rustig :P
Zo als jij je code nu hebt returned hij op Regel 5 BLok 1 de $output_string omdat $default_print gelijk is aan 0.
Dat klopt, dat moet toch ook :?
Zet eens in de functie f_closeform het woordje print voor f_output( ... ) en kijk eens wat er gebeurd.

Waarschijnlijk kunnen we dit daarna afsluiten :)
Natuurlijk werkt dat maar dan werkt het idee toch niet meer, het idee is dat die functie checkt of hij geprint of je returned moet worden.

Maargoed, het hele zooitje werkt al, het had ermee te maken dat $default_print == 0 hetzelfde is als nix.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • Grum
  • Registratie: Juni 2001
  • Niet online
Tja .. zei ik toch ? :)

Scroll in PHP: Hackers Paradise Revisited even naar punt 'vii. Know Your Data'.

Have fun :)

Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

wederom een topic waar men uit gekomen was als error_reporting op E_ALL had gestaan :|

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Nu online

me1299

$ondertitel

Topicstarter
drm schreef op 09 december 2002 @ 18:05:
wederom een topic waar men uit gekomen was als error_reporting op E_ALL had gestaan :|
zou ik ook graag doen, maar bij dit kantoor willen ze dat niet. Logisch want dat zouden alle andere websites opeens niet meer werken :X

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen


Acties:
  • 0 Henk 'm!

  • D2k
  • Registratie: Januari 2001
  • Laatst online: 02-09 11:02

D2k

DeathKnight schreef op 10 December 2002 @ 11:00:
[...]


zou ik ook graag doen, maar bij dit kantoor willen ze dat niet. Logisch want dat zouden alle andere websites opeens niet meer werken :X

hoeft toch niet op je productie bak?
wat dacht je ervan om het tijden debuggen te gebruiken?

Doet iets met Cloud (MS/IBM)


Acties:
  • 0 Henk 'm!

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

DeathKnight schreef op 10 December 2002 @ 11:00:
zou ik ook graag doen, maar bij dit kantoor willen ze dat niet. Logisch want dat zouden alle andere websites opeens niet meer werken :X

Begin van je code:
$oldlevel = error_reporting(E_ALL);
// code
error_reporting($oldlevel);

Hebben geen van je andere websites ergens last van :)

Acties:
  • 0 Henk 'm!

Verwijderd

Volgens mij is de variabele $default_print niet bekend binnen de functie!
Er van uitgaande dat je deze wel globaal gedeclareerd hebt (buiten de functie) dan los je dit probleem op door aan het begin van je functie

global $default_print

te zetten. Anders is $default_print altijd 0 en krijg je dus geen output...

Acties:
  • 0 Henk 'm!

  • me1299
  • Registratie: Maart 2000
  • Nu online

me1299

$ondertitel

Topicstarter
Verwijderd schreef op 10 december 2002 @ 11:21:
Volgens mij is de variabele $default_print niet bekend binnen de functie!
Er van uitgaande dat je deze wel globaal gedeclareerd hebt (buiten de functie) dan los je dit probleem op door aan het begin van je functie

global $default_print

te zetten. Anders is $default_print altijd 0 en krijg je dus geen output...
Yepz, zover was ik middels ook al ;)
ACM schreef op 10 december 2002 @ 11:17:

[...]

Begin van je code:
$oldlevel = error_reporting(E_ALL);
// code
error_reporting($oldlevel);

Hebben geen van je andere websites ergens last van :)
Het eerstvolgende project ga ik weer met error_reporting on werken, en global vars uit enzo, doe ik voor mijzelf namelijk ook altijd.

Het maakt eigenlijk niet uit wat je bewuste geest doet, omdat je onderbewuste automatisch precies dat doet wat het moet doen

Pagina: 1