[PHP] Pagina leeg door geinclude functie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Dark Wanderer
  • Registratie: September 2003
  • Laatst online: 11-08-2024
Hallo,

Ik heb een wel heel raar probleem.

Ik heb een pagina register_do.php, welke ingevulde waaren uit registreren.php controleert, en als deze gegevens kloppen die persoon als klant in de database zet.

Sinds vandaag doet het script het opeens niet meer. Na een tijdje zoeken ben ik erachter wat het is.
Bovenaan het bestand staat include 'mysqlconn.php'; welke dit bevat

code:
1
2
3
4
5
6
7
8
9
10
11
12
<?
mysql_connect(gegevens);
mysql_select_db(gegevens);
function naarbedrag($getal){
    if(strlen($getal) > 2){
        echo     substr($getal,0,strlen($getal)-2). ',' .substr($getal,-2,2);   
    }else{
        echo    '0,'.$getal;
    }
    
}
?>


Die functie maakt van een bedrag van centen een bedrag 12,43. Dat is voor facturatie. Als ik deze functie een comment maak of weghaal, dan laat de pagina wel, als de functie aanstaat, dan wordt register_do.php een lege pagina.

Het rare is dat hij het script wel gewoon uitvoert, ik ontvang een bevestiging mail, en de gebruiker wordt ook toegevoegd aan de database, hij echoot alleen dus niets.

Naast echo-en laat hij ook geen html zien.

Nu doe ik later in het bestand wel include'header.php'; welke weer die mysqlconn.php include, is dat het probleem dat op deze manier de functie naarbedrag() twee keer gedefinieert wordt?

hand·te·ke·ning (de ~ (v.))


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
is dat het probleem dat op deze manier de functie naarbedrag() twee keer gedefinieert wordt?
Ja, dat is waarschijnlijk het probleem...
Je kunt dit omzijlen door met function_exists() te checken of de functie al eens gedeclareerd is, maar mooier is om je functie gewoon maar een keer te declareren...

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • orf
  • Registratie: Augustus 2005
  • Laatst online: 19:53

orf

zet eens

PHP:
1
2
3
4
5
<?php

error_reporting(E_ALL);

?>


bovenaan je script, kijk ook eens naar include_once()

[ Voor 15% gewijzigd door orf op 06-06-2007 14:37 ]


Acties:
  • 0 Henk 'm!

  • yade
  • Registratie: Mei 2002
  • Laatst online: 16-07 13:47
Ja, je kan beter niet twee keer dezelfde file includen.

Hij zou echter ook foutmeldingen aan moeten geven. Misschien staat je error logging op een te laag pitje. Dit kan je aanpassen in php.ini of met de error_reporting functie.

Ik zou overigens require_once gebruiken. Deze geeft een fout als een file niet bestaat en include het tevens maar één keer.

Acties:
  • 0 Henk 'm!

  • Dark Wanderer
  • Registratie: September 2003
  • Laatst online: 11-08-2024
Okee thanks!

hand·te·ke·ning (de ~ (v.))


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Twee keen eenzelfde functie declareren kan niet. Je kon door error reporting aan te zetten deze foutmelding zelf lezen, maar belangrijker is om goed na te denken over je opbouw van je php framework. Door je systeem systematischer aan te pakken voorkom je jezelf in de toekomst ook dergelijke fouten te maken :)

Acties:
  • 0 Henk 'm!

  • OkkE
  • Registratie: Oktober 2000
  • Laatst online: 04-09 08:16

OkkE

CSS influencer :+

Dat zal inderdaad het probleem zijn. Hier voor is het handig om error_reporting op E_ALL of iets te zetten. ;) Volgens mij zijn er trouwens wel standaard functies (bijv. een number_format() of zo) om bedragen te krijgen.

Wat je kan doen is dit:
PHP:
1
2
3
if (!function_exists("naarbedrag")) {
// funcite
}

“The best way to get the right answer on the Internet is not to ask a question, it's to post the wrong answer.”
QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers.

Pagina: 1